ヒント

int型の変数に値を10回読み込んで,合計値を保存するint型の変数sumに合計値が保存されたとしよう。

すなわちsumは整数型変数で,10個の入力値の合計が入っていたとする。

「sum/10」の計算を行うと「整数型÷整数型」の演算なので,小数点以下は捨てられてしまう。

小数点以下が計算の時に捨てられてしまうので,計算結果をdouble型変数に保存しても,小数点以下の部分は復活しない。

(double)sum/10.0 」の計算を行うと,これは「実数型÷実数型」の演算になり,小数点以下も残っている。
ここで「 (double)sum 」というのは,整数型変数sumをdouble型変数として扱えという意味になる。

この計算結果をint型変数にしまったら,また小数点以下の部分が捨てられてしまうため,演算結果はdouble型変数に保存しなければ意味がなくなる。 計算結果はdouble型変数に保存すべきである。

すなわち

int x; /*値読み込み用整数型変数*/
int sum; /*合計値を保存する変数*/
double average; /*平均値を保存する変数*/

   :途中省略

average = (double)sum/10.0;

printf("average=%lf\n",average);

とすればよい。「 (double)sum 」のように,ある型の変数を,一時的に別の型の変数のように扱うことをキャストという。