1、计算机三级数据库技术-93 及答案解析(总分:100.00,做题时间:90 分钟)1.请编写程序,要求:将文件 IN.DAT 中的 200 个整数读入数组 xx 中,求出数组 xx 中的最大数 max 及最大数的个数 cnt 和数组 xx 中能被 3 或 7 整除的数的算术平均值 pj(保留两位小数),并将结果max,cnt,pj 输出到 OUT.DAT 中。 勿改动主函数 main()、读函数 read_dat()的内容。读函数 read_dat(int xx200)及输出格式已给出。 试题程序 #includestdlib.h #includestdio.h #define N 200 v
2、oid read dat(int xxN) int i, j; FILE*fp; fp=fopen“IN.DAT“, “r“); for(i=0; i20; i+) for(j=0; j10; j+) fscanf(fp, “%d,“, printf(“%d“, xxi*10+j); printf(“n“); fclose(fp); void main() int i, k, cnt, xxN, max; float pj; FILE*fw; long j=0; system(“CLS“); fw=fopen(“OUT.DAT“, “w“); read_dat(xx); printf(“nnm
3、ax=%d, cnt=%d, pj=%6.2fn“, max, cnt, pj); fprintf(fw, “%dn%dn%6.2fn“, max, cnt, pj); fclose(fw); (分数:100.00)_计算机三级数据库技术-93 答案解析(总分:100.00,做题时间:90 分钟)1.请编写程序,要求:将文件 IN.DAT 中的 200 个整数读入数组 xx 中,求出数组 xx 中的最大数 max 及最大数的个数 cnt 和数组 xx 中能被 3 或 7 整除的数的算术平均值 pj(保留两位小数),并将结果max,cnt,pj 输出到 OUT.DAT 中。 勿改动主函数 mai
4、n()、读函数 read_dat()的内容。读函数 read_dat(int xx200)及输出格式已给出。 试题程序 #includestdlib.h #includestdio.h #define N 200 void read dat(int xxN) int i, j; FILE*fp; fp=fopen“IN.DAT“, “r“); for(i=0; i20; i+) for(j=0; j10; j+) fscanf(fp, “%d,“, printf(“%d“, xxi*10+j); printf(“n“); fclose(fp); void main() int i, k, cn
5、t, xxN, max; float pj; FILE*fw; long j=0; system(“CLS“); fw=fopen(“OUT.DAT“, “w“); read_dat(xx); printf(“nnmax=%d, cnt=%d, pj=%6.2fn“, max, cnt, pj); fprintf(fw, “%dn%dn%6.2fn“, max, cnt, pj); fclose(fw); (分数:100.00)_正确答案:()解析:void main() int i, k, cnt, xxN, max; float pj; FILE*fw; long j=0; system(
6、“CLS“); fw=fopen(“out.dat“, “w“); read_dat(xx); max=xx0; for(i=1, k=0; iN; i+) if(xximax) max=xxi; /*求出数组 xx 中最大数 max*/ if(xxi%3=0 |xxi%7=0) j+=xxi; /*求出数组 xx 中值能被 3 整除或能被 7 整除的数的总和*/ k+; for(i=0, cnt=0; iN; i+) if(xxi=max) cnt+; /*求出数组 xx 中最大数 max 的个数*/ pj=(float)(j*100/k)/100; /*求出数组 xx 中值能被 3 整除或
7、能被 7 整除的数的平均值*/ printf(“nnmax=%d, cnt=%d, pj=%6.2fn“, max, cnt, pj); fprintf(fw, “%dn%dn%6.2fn“, max, cnt, pj); fclose(fw); 考点 本题考查对多个整数的筛选、统计以及计算平均值,考查的知识点只要包括:多位整数的数位分解算法,逻辑表达式,计算平均值的算法。 首先通读题目,得知此题属于 4 位数的筛选题型;其次分析题干要求,本题要求补充 main 中空白部分,进一步分析,可以归纳出 3 个关键点:关键点 1 如何找出数组中最大数的值并统计其个数;关键点 2 如何通过条件“可以被 7 或 3 整除”在数组中筛选出满足条件的数;关键点 3 如何计算平均值。接着分析每一步的解决方法,对于关键点 1 通过循环使用起泡法找出其中最大的数,同时统计其个数;关键点 2 通过if 判断结构和逻辑表达式可以实现;关键点 3 通过之前找到满足条件的数的和及其个数计算出平均值。