1、计算机三级数据库技术-78 及答案解析(总分:100.00,做题时间:90 分钟)1.请编写函数 ReadDat(),实现从文件 IN.DAT 中读取 1000 个十进制整数到数组 xx 中的功能。请编写函数 Compute(),分别计算出 xx 中奇数的个数 odd、奇数的平均值 ave1、偶数的平均值 ave2 及所有奇数的方差 totfc 的值。最后调用函数 WriteDat(),把结果输出到 OUT.DAT 文件中。 计算方差的公式如下: (分数:100.00)_计算机三级数据库技术-78 答案解析(总分:100.00,做题时间:90 分钟)1.请编写函数 ReadDat(),实现从文
2、件 IN.DAT 中读取 1000 个十进制整数到数组 xx 中的功能。请编写函数 Compute(),分别计算出 xx 中奇数的个数 odd、奇数的平均值 ave1、偶数的平均值 ave2 及所有奇数的方差 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; /*定义循环控制变量*/ int ttMAX; /*定义数组保存奇数*/ for(i0; i1000; i+) if(xxi%2!=0) odd+; /*计算出 xx 中奇数的个数 odd*/ ave1+=xxi; /*求奇数的和*/ ttodd-1=xxi; /*将奇数存入数组 tt 中*/ e
4、lse even+; /*计算出 xx 中偶数的个数 even*/ ave2+=xxi; /*求偶数的和*/ ave1/=odd; /*求奇数的平均值*/ ave2/=even; /*求偶数的平均值*/ for(i=0; iodd; i+) totfc+=(tti-ave1)*(tti-ave1)/odd; /*求所有奇数的方差*/ 考点 本题考查的知识点包括:C 语言中文件读函数,if 条件判断结构,对多个整数求平均值和方差的算法等。 此题属于数学类问题。分析题干要求,得出解本题主要需解决 3 个问题:问题 1 如何实现从已打开的文件中依次读取数据到数组的操作,问题 2 如何分离并统计出奇数和偶数的个数及和值,并计算平均值;问题3 如何计算奇数的方差。 本题的解题思路为:首先使用 C 语言的库函数 fscanf()将文件中的数依次读入数组 xx 中,然后通过循环判断得出需要的数据(奇数个数、偶数个数、奇数及偶数的和);最后根据题目中已给出的公式和之前保存的数据计算出奇数的方差。