应用题 1.  函数ReadDat()实现从文件in.dat中读取1000个十进制整数到数组xx中,请编制函数Compute()分别计算出xx中数值为偶数的个数even,所有数值为奇数的平均值ave1,偶数的平均值ave2以及所有偶数的方差totfc的值,最后调用函数WriteDat()把结果输出到out.dat文件中。
    计算方差的公式如下:
   
【正确答案】int i, odd=0;
   /*循环变量i从0开始,每次增1,直到其值小于MAX,对数组xx中的每个元素的奇偶性进行判断,如果是奇数,变量odd加1,同时把这个元素累加到变量ave1,否则,变量even加1,同时把这个元素累加到变量are2*/
   for(i=0; i<MAX; i++)
   if(xx[i]%2)//如果xx[i]是奇数
   {
   odd++; //变量odd加1
   avel+=xx[i]; //把xx[i]累加到变量ave1
   }
   else
   {
   even++; //变量even加1
   ave2+=xx[i]; //把xx[i]累加到变量ave2
   }
   ave1/=1.0*odd; //奇数的和ave1除以奇数的个数odd,得到所有奇数的平均值赋给ave1
   ave2/=1.0*even; //偶数的和ave2除以偶数的个数even,得到所有偶数的平均值赋给are2
   /*根据方差的计算公式计算所有偶数的方差*/
   for(i=0;i<MAX;i++)
   {
   if(xx[i]%2==0) //如果xx[i]是偶数
   totfc+=(xx[i]-ave2)*(xx[i]-are2); //把(xx[i]-are2)的平方累加到变量totfc
   }
   totfc/=1.0*even; //变量totfc除以偶数的个数even,得到所有偶数的方差
【答案解析】 读取1000个数,奇数个数及平均值,偶数个数、平均值及方差。
   ①定义循环变量i、表示奇数个数的变量odd并设置其值为0。
   ②采用for循环语句,对数组xx中每个数组元素xx[i]对2求余数,如果余数为1,则说明数组元素xx[i]的值为奇数,则变量odd的值加1,并把数组元素xx[i]的值累加到变量ave1,否则,说明数组元数xx[i]的值为偶数,则变量even的值加1,并把数组元素xx[i]的值累加到变量ave2。
   ③退出for循环语句后,用变量ave1除以奇数的个数odd,得到所有奇数的平均值赋给ave1,用变量ave2除以偶数的个数even,得到所有偶数的平均值赋给ave2。
   ④利用for循环语句,对数组xx中每个数组元素xx[i]对2求余数,如果余数等于0,则说明数组元素xx[i]的值为偶数,这时把表达式xx[i]-ave2的平方值累加到变量totfc。退出循环后,用变量totfc的值除以偶数的个数even,得到所有偶数的方差赋给变量totfc。