1、计算机三级数据库技术(上机操作)机试模拟试卷 51及答案与解析 一、程序设计题 1 函数 ReadDat()实现从数据文件 in dat中读取 1000个十进制整数到数组 xx中,请编写函数 Compute(),分别计算出数组 XX中数值为偶数的个数 even。所有数值为奇数的平均值 avel,偶数的平均值 ave2以及所有偶数的方差 totfc的值,最后调用函数 WriteDat()把结果输出到 out dat文件中。计算方差的公式如下: 设 N为偶数的个数, xxi为偶数, ave2为偶数的平均值。 原始数据 文件存放的格式是:每行存放 10个数,并用逗号隔开 (每个数均大于 0且小于等于
2、 2000)。 【试题程序】 #include #include #include #define MAX 1000 int xxMAX。 even=0; double ave=0 0, ave2=0 0, totfc=0 0; void WriteDat(void); int ReadDat(void) FILE*fp; int i; if(fp=fopen(“in, dat”, “r”)=NULL) return 1; for(i=0; iMAX; i+) fseanf(fp, “ d, ”, xxi); fclose(fp); return 0; void Compute(void) v
3、oid main() int i; for(i=0; iMAX; i+)xxi=0; if(ReadDat() printf(“数据文件 IN DAT不能打开 ! 007 n”); return; Compute(); printf(“EVEN= d nAVE1= If nAVE2= lf nTOTFC= lf n”, even,avel, ave2,totfc); WriteDat(); void WriteDat(void) FILE*fp; fp=fopen(“out da t”, “w”), fprintf(fp, “ d n If n if n If n”, even, avel, ave2, totfc); fclose(fp); 计算机三级数据库技术(上机操作)机试模拟试卷 51答案与解析 一、程序设计题 1 【正确答案】 void Compute(void) int i; *定义变量 * for(i=0; iMAX; i+) *统计求和 * if(xxi 2=0) even+; ave2+=xxi; else avel+=xxi; ave2 =even *求平均值 * avel =(MAXeven); for(i=0; iMAX; i+) *求方差值 * if(xxi 2=0) totfc+=(xxEi-1一 ave2)*(xxi ave2) even;