问答题 函数ReadDat()实现从IN.DAT文件中读取1000个十进制整数到数组xx中。请编写函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的个数even,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。 计算方差的公式如下:
【正确答案】void Compute(void) int i,yy[MAX]; for (i=0;i<1000;i++) /*循环以遍历数组xx的所有1000个数*/ if (xx[i]%2) /*如果当前数为奇数*/ { odd++; /*让计数值odd增1*/ ave1 +=xx[i]; /*将此数累加至ave1中*/ yy[odd-1]=xx[i]; /*将此数保存到数组yy中*/ } else { /*否则让计数值even增1并将此数累加至ave2中*/ even++; ave2 +=xx[i]; } ave1 /=odd; /*计算奇数的平均值*/ ave2 /=even; /*计算欧数的平均值*/ for (i=0;i<odd;i++) /*循环以求所有奇数的方差*/ totfc +=(yy[i]-avel)*(yy[i]-ave1)/odd; }
【答案解析】