☆題目93
請編制函數(shù)readdat()實現(xiàn)從文件in.dat中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)compute(),分別計算出xx中奇數(shù)的個數(shù)odd,偶數(shù)的個數(shù)even,平均值aver以及方差totfc的值,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到out.dat文件中。
計算方差的公式如下:
n 2
totfc=1/n ∑ (xx[i]-aver)
i=1
原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。
#include
#include
#include
#define max 1000
int xx[max],odd=0,even=0;
double aver=0.0,totfc=0.0;
void writedat(void);
int readdat(void)
{
int i;
file *fp;
if((fp=fopen("in.dat","r"))==null) return 1;
/***************編制函數(shù)readdat()*****************/
for(i=0;i { fscanf(fp,"%d,",&xx[i]);
if((i+1)%10==0)
fscanf(fp,"\n");
}
/*********************************************/
fclose(fp);
return 0;
}
void compute(void)
{ int i;
for(i=0;i { if(xx[i]%2) odd++;
else even++;
aver+=xx[i];
}
aver/=max;
for(i=0;i totfc+=(xx[i]-aver)*(xx[i]-aver);
totfc/=max;
}
請編制函數(shù)readdat()實現(xiàn)從文件in.dat中讀取1000個十進制整數(shù)到數(shù)組xx中;請編制函數(shù)compute(),分別計算出xx中奇數(shù)的個數(shù)odd,偶數(shù)的個數(shù)even,平均值aver以及方差totfc的值,最后調(diào)用函數(shù)writedat()把結(jié)果輸出到out.dat文件中。
計算方差的公式如下:
n 2
totfc=1/n ∑ (xx[i]-aver)
i=1
原始數(shù)據(jù)文件存放的格式是:每行存放10個數(shù),并用逗號隔開。(每個數(shù)均大于0且小于等于2000)
部分源程序存在文件prog1.c中。
請勿改動主函數(shù)main()和輸出數(shù)據(jù)函數(shù)writedat()的內(nèi)容。
#include
#include
#include
#define max 1000
int xx[max],odd=0,even=0;
double aver=0.0,totfc=0.0;
void writedat(void);
int readdat(void)
{
int i;
file *fp;
if((fp=fopen("in.dat","r"))==null) return 1;
/***************編制函數(shù)readdat()*****************/
for(i=0;i { fscanf(fp,"%d,",&xx[i]);
if((i+1)%10==0)
fscanf(fp,"\n");
}
/*********************************************/
fclose(fp);
return 0;
}
void compute(void)
{ int i;
for(i=0;i { if(xx[i]%2) odd++;
else even++;
aver+=xx[i];
}
aver/=max;
for(i=0;i totfc+=(xx[i]-aver)*(xx[i]-aver);
totfc/=max;
}