二级C上机模拟试题及答案(2)
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 尾页 相关资料 |