![]() ![]() |
|
三级B上级模拟试题及答案(2) | |
作者:佚名 文章来源:不详 点击数 更新时间:2007/12/21 18:16:45 文章录入:杜斌 责任编辑:杜斌 | |
|
|
整数到数组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] = '/0'; break; } else if(c != '/n' && c != '/r')/*去掉回车换行符*/ { 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; } void main() { int i ; for(i = 0 ; i < max ; i++) xx = 0 ; if(readdat()) { printf('数据文件fc.in不能打开!/007/n') ; return ; } compute() ; printf('odd=%d/noven=%d/naver=%lf/ntotfc=%lf/n', odd, even, aver, totfc) ; writedat() ; } void writedat(void) { file *fp ; int i ; fp = fopen('fc1.out', 'w') ; fprintf(fp, '%d/n%d/n%lf/n%lf/n', odd, even, aver, totfc) ; fclose(fp) ; } |
|
![]() ![]() |