1、计算机三级数据库技术-121 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编写函数 ReadDat(),从文件 IN.DAT中读取 1000个十进制整数到数组 xx中。请编写函数 Compute(),分别计算出 xx中奇数的个数 odd、偶数的个数 even、平均值 aver及方差 totfc的值,最后调用函数WriteDat(),把结果输出到 OUT.DAT文件中。 计算方差的公式如下: (分数:100.00)_计算机三级数据库技术-121 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.0
2、0)1.请编写函数 ReadDat(),从文件 IN.DAT中读取 1000个十进制整数到数组 xx中。请编写函数 Compute(),分别计算出 xx中奇数的个数 odd、偶数的个数 even、平均值 aver及方差 totfc的值,最后调用函数WriteDat(),把结果输出到 OUT.DAT文件中。 计算方差的公式如下: (分数:100.00)_正确答案:()解析:int ReadDat(void) FILE *fp; int i,j; /*计数器变量*/ if(fp=fopen(“IN.DAT“,“r“)=NULL) return 1; for(i=0;i100;i+) /*依次读取整
3、型数据放入数组 xx中*/ for(j=0;j10;j+) fscanf(fp,“%d,“, fscanf(fp,“n“); if(feof(fp) break; /*文件读取结束,则退出*/ fclose(fp); return 0; void Compute(void) int i; /*循环控制变量*/ for(i=0;i1000;i+) /*依次取每个数*/ if(xxi%2!=0) odd+; /*求出 xx中奇数的个数 odd*/ else even+; /*求出 xx中偶数的个数 even*/ aver+=xxi; /*求出 xx中元素的总和*/ aver/=MAX; /*求出
4、xx中元素的平均值*/ for(i=0;i1000;i+) totfc+=(xxi-aver)*(xxi-aver)/MAX; 考点 本题考查的知识点包括:C 语言中文件读函数,if 条件判断结构,对多个整数求平均值和方差的算法等。 解析 此题属于 4位数排序问题。分析题干要求,本题要求完成 ReadDat(void) 函数并实现 Compute()函数的功能,分析后可以归纳出 3个关键点:关键点 1如何实现从已打开的文件中依次读取数据到数组的操作;关键点 2如何分离并统计出奇数偶数的个数和所有数的和值,并计算平均值;关键点 3如何计算方差。 接着分析每一步的解决方法,对于关键点 1可以使用 C语言的库函数 fscanf();关键点 2通过包含 if判断语句和逻辑表达式可以实现;关键点 3根据题目中已给出的公式和之前保存的数据可以计算出偶数的方差。 文件操作函数 fscanf()和 feof()的用法;if 判断语句中逻辑表达式;对方差计算公式运用错误。