二级C上机模拟试题及答案(2)

全国等级考试资料网 2019-01-23 14:11:37 67
ReadDat( )实现从文件FC.IN中读取1000个十进制 
整数到数组xx中; 请编制函数Compute()分别计算出xx中奇数的个 
数odd, 偶数的个数even, 平均值aver以及方差totfc的值, 最后调 
用函数WriteDat()把结果输出到FC1.OUT文件中。 
计算方差的公式如下: 
1 N 
totfc = ── ∑ (xx - aver)^2 
N i=1 
原始数据文件存放的格式是: 每行存放10个数, 并用逗号隔 
开。(每个数均大于0且小于等于2000) 
注意: 部分源程序存放在PROG1.C中。 
请勿改动主函数main()和输出数据函数WriteDat()的内容。 

/*参考答案*/ 

#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) 

FILE *fp ; 
int i,j; 
char c,str[20]; 

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

/***********读入数据并存放到数组xx中*************/ 
for(i = 0; i < MAX; i++) 

j = 0; 

while((c = (char) fgetc(fp)) != EOF) 

if(c == ’,’) 

str[j] = ’’; 
break; 


else if(c != ’ ’ && c != ’ ’)/*去掉回车换行符*/ 

str[j] = c; 
++j; 




xx = atoi(str); 

if(c == EOF) 
break; 


fclose(fp) ; 
return 0 ; 


void Compute(void) 

int i; 
long count = 0; 

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

if(xx & 1) 
odd++; 
else 
even++; 

count += xx; 


aver = (double)count/MAX; 

for(i = 0; i < MAX; i++) 
totfc += (xx - aver)*(xx - aver); 

totfc /= MAX; 


首页 1 2 尾页 相关资料

相关阅读