1、三级数据库技术机试-211 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请补充完整程序,使得程序能实现以下功能:从文件 IN.dat 中读取 200 个整数至数组 number 中,求出最大数 max 及最大数的个数 cnt 和数组 number中能被 3 整除或能被 7 整除的算术平均值 ave(保留 2 位小数)。把结果 max、 cnt、ave 输出到 OUT. dat文件中。注意:部分程序、读数据函数 read_ dat (int number200)及输出格式已给出。#include conio. h#include stdi
2、o. h#define N 200void read_ dat(int numberN)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 “, numberi*10+j);printf (“/n“);fclose (fp);void main ()int cnt, numberN, max;float ave;FILE *fw;int i, k; long j = 0;fw = fopen(“OUT.dat“, “w“);re
3、ad_ dat (number);/ * / * /printf(“/n/nmax=%d, cnt=%d, ave=%6.2f/n“, max, cnt, ave);fprintf(fw, “%d/n%d/n%6.2f/n“, max, cnt, ave);fclose (fw);(分数:100.00)_三级数据库技术机试-211 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请补充完整程序,使得程序能实现以下功能:从文件 IN.dat 中读取 200 个整数至数组 number 中,求出最大数 max 及最大数的个数 cnt 和数组 nu
4、mber中能被 3 整除或能被 7 整除的算术平均值 ave(保留 2 位小数)。把结果 max、 cnt、ave 输出到 OUT. dat文件中。注意:部分程序、读数据函数 read_ dat (int number200)及输出格式已给出。#include conio. h#include stdio. h#define N 200void read_ dat(int numberN)int i, j;FILE *fp;fp = fopen(“IN. dat“, “r“);for (i=0; i20; i+)for (j=0; j10; j+)fscanf(fp, “%d,“, print
5、f(“%d “, numberi*10+j);printf (“/n“);fclose (fp);void main ()int cnt, numberN, max;float ave;FILE *fw;int i, k; long j = 0;fw = fopen(“OUT.dat“, “w“);read_ dat (number);/ * / * /printf(“/n/nmax=%d, cnt=%d, ave=%6.2f/n“, max, cnt, ave);fprintf(fw, “%d/n%d/n%6.2f/n“, max, cnt, ave);fclose (fw);(分数:100
6、.00)_正确答案:(max = number0;for (i=1, k=0; iN; i+) if (numberi max)max = numberi;if (numberi%3=0 numberi%7=0) j += numberi;k+;for (i=0, cnt=0; iN; i+)if (numberi = max)cnt+;ave = (float) (j*100/k)/100;)解析:解题思路 用整型变量 max 保存数组 number 中元素的最大值,首先把数组 number 的第一个元素number0存入 max 中;然后在 for 循环语句中当循环变量 i 从 1 递增到
7、 N-1 时,对数组 number 中的每一个元素 numberi与 max 进行比较,如果表达式 numberimax 成立,则把数组元素 numberi的值存入变量 max 中;再用表达式 numberi%3=0 numberi%7=0 判断 numberi能否被 3 或 7 整除,如果表达式结果值为真,则把数组元素 numberi的值与变量 j 的值相加,同时计数变量 k 加 1。退出循环后,变量 max 中的值就是数组 number 中元素的最大值,再用 for 循环语句对数组number 中的每一个元素与 max 的值进行相等的判断,如果 numberi的值等于 max,则计数变量 cnt 加1。最后用表达式 (float)(j*100/k)/100 求得数组 number 中能被 3 整除或能被 7 整除的算术平均值。