函数ReadDat()实现从文件IN47.DAT中读取1000个十进制整数到数组xx屯。请编制函数Compum()分别计算出xx中偶数的个数even、奇数的平均值ave1、偶数的平均值ave2及所有偶数的方差totfc的值,最后调用函数WilteDat()把结果输出到OUT47.DAT文件中。
计算方差的公式如下:
设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。
原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000)。
注意:部分源程序已给出。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
试题程序:
include<stdio. h>
include<stdlib. h>
include<string. h>
define MAX 1000
int xx [MAX] , dd=O, even=O;
double avel=0.0,ave2=0.0,totfc=0.0;
void WriteDat(void);
int ReadDat (void)
{ FILE *fp;
int i,j;
if ((fp=fopen ("IN47. DAT", "r") )==NULL)
return 1;
for (i=0; i<100;i++)
{
for (j=0; j<10; j++)
fscanf (fp, "%d, ",&xx [i*10+j ] );
fscanf (fp, "In");
if(feof(fp)) break;
}
fclose (fp);
}
void Compute (void)
{
}
void main ()
{ int i;
for (i=0; i<MAX; i++)
xx[i]=0;
if (ReadDat ())
{
printf ("数据文件IN47.DAT 不能打开! \007\n");
return;
}
Compute ();
printf ("EVEN=%d\nAVE1=%f\nAvE2=%f\nTOTFC=%f\n" , even, ave1, ave2,
totfc);
WriteDat ();
}
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT47.DAT","w");
fprintf(fp,"%d\n%lf\n%lf\n%lf\n",even,avel,ave2,totfc);
fclose(fp);
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!