南开100题第93题的疑问

来源:百度知道 编辑:UC知道 时间:2024/09/23 02:27:24
请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

N 2

totfc=1/N ∑ (xx[i]-aver)

i=1

答案为:
int ReadDat(void)

{

int i;

FILE *fp;

if((fp=fopen("IN.DAT","r"))==NULL) return 1;

/***************编制函数ReadDat()*****************/

for(i=0;i<MAX;i++)

{ fscanf(fp,"%d,",&xx[i]);
疑问1:为什么对10求余啊?
if((i+1)%10==0)

fscanf(fp,"\n");

}

/*********************************************/

fclose(fp);

return 0;

}

void Compute(void)

{ int i;

for(i=0;i<MAX;i++)

{ if(xx[i]%2) odd++;

else even++;

aver+=xx[i];

第一点是因为当i=9,19,29......时换行(/n),以免一千个数输入在一行。第二点是因为计算方差的公式如下: “N 2 totfc=1/N ∑ (xx[i]-aver) i=1 ”是错的,括号外应该有平方,“totfc+=(xx[i]-aver)*(xx[i]-aver); totfc/=MAX”才是正确的。想了半天终于搞明白了,希望对你有帮助。