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