1、国家三级(网络技术)机试模拟试卷 208及答案与解析 一、程序设计题 1 请补充函数 ReadData()实现从文件 IN DAT中读取 1000个十进制整数到数组xx中;请函数 Compute()分别计算出 XX中偶数的个数 even、奇数的平均值avel、偶数的平均值 ave2以及方差 totfc的值,最后调用函数 WriteData()把结果输出到 OUT DAT文件中。计算方差的公式如下;设 N为偶数的个数, xxi为偶数, ave2为偶数的平均值。原始数据文件存放的格式是;每行存放 10个数,并用逗号隔开。 (每个 数均大于 0且小于等于 2000)注意;部分源程序已给出。请勿改动主
2、函数 main()和输出数据函数 WriteData()的内容。试题程序; #include#include#include#define MAX 1000int xxMAX, odd=0,even=0; double avel=0 0, ave2=0 0, totfc=0 0; void WriteData(void); int ReadData(void) int i; FILE*fp; if(fp=fopen(“IN DAT“, “r“)=NULL)return 1; 编制函数 ReadData()的部分 fclose(fp); return 0; void Compute(void)
3、int i,yyMAX; for(i=0; i 国家三级(网络技术)机试模拟试卷 208答案与解析 一、程序设计题 1 【正确答案】 for(i=0; iMAX; i+) fscanf(fp, “ d, “, &xxi); 读取文件中的数据存人变量 xxi中 if(i+1) 10=0) 每行存 10个数 fscanf(fp, “ n“); 读取行后的换行符 【试题解析】 本题考查文件的操作、奇偶判断和数学公式的计算。函数ReadData的作用是将从文件中读取数据存入数组 xx中,因为数据存放入文件的格式是每个数据被逗号隔开,所以 fscanf(fp, “ d, “, &xxi)语句中字符串 “d, “中要加入逗号。函数 Compute的作用是计算方差,思路是首先顺序读取数组XX中的结点,若是偶数累加存入 ave2,个数存入 even,若不是偶数 (即为奇数 )累加结果存入 avel,个数 存入 odd。然后计算奇数和偶数的平均数,利用循环结构依次读取存放偶数的数组 yy,计算方差 totfc。