1、计算机四级机试-2 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 in. dat 中存有 10 组每组 20 个四位数的数据,每个数据间用空格分隔,调用读函数ReadDat()把这 10 组数据存人数组 aa 中(其中,aa 定义为 int aa1020)。请编制一函数 jsVal(),其功能是;首先去掉每组中首尾位置的两个数,接着计算其余 18 个数的算术平均值,并将计算结果依次存人数组 bb 中(其中,数组 bb 定义为 float bb10),然后把数组 bb 中的值按从大到小的顺序进行排序,排序后结果仍存人数组 bb
2、 中,最后调用写函数 WriteDat()把结果 bb 输出到文件 out. dat 中。注意:部分源程序已给出。程序中已定义全局变量:aa1020、bb10。请勿改动数据文件 in. dat 中的任何数据、主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序# include stdio. hint aa1020float bb10void jsVal()void ReadDat()int i, jFILE * fP;fp = fopen(“in.darn“,“r“)for(i=0; i10;i+)for(j=0; j20; j+) fscanf(f
3、P,“%d“, aaij)fclose(p)void main()int iReadDat(); / * 读数据* /jsVal(); / * 按要求计算* /for(i=0; i10; i+) /* 从屏幕输出结果* /printf(“%6.2lf/n“, bbi);WriteDat()FILE * fp;int i;fp = fopen(“out, dat“, “w“)for(i=0; i10; i+)fprintf(fp,“%6.21f/n, bbi)fclose(fp);(分数:100.00)_计算机四级机试-2 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:
4、1,分数:100.00)1.已知数据文件 in. dat 中存有 10 组每组 20 个四位数的数据,每个数据间用空格分隔,调用读函数ReadDat()把这 10 组数据存人数组 aa 中(其中,aa 定义为 int aa1020)。请编制一函数 jsVal(),其功能是;首先去掉每组中首尾位置的两个数,接着计算其余 18 个数的算术平均值,并将计算结果依次存人数组 bb 中(其中,数组 bb 定义为 float bb10),然后把数组 bb 中的值按从大到小的顺序进行排序,排序后结果仍存人数组 bb 中,最后调用写函数 WriteDat()把结果 bb 输出到文件 out. dat 中。注意
5、:部分源程序已给出。程序中已定义全局变量:aa1020、bb10。请勿改动数据文件 in. dat 中的任何数据、主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。试题程序# include stdio. hint aa1020float bb10void jsVal()void ReadDat()int i, jFILE * fP;fp = fopen(“in.darn“,“r“)for(i=0; i10;i+)for(j=0; j20; j+) fscanf(fP,“%d“, aaij)fclose(p)void main()int iReadDat()
6、; / * 读数据* /jsVal(); / * 按要求计算* /for(i=0; i10; i+) /* 从屏幕输出结果* /printf(“%6.2lf/n“, bbi);WriteDat()FILE * fp;int i;fp = fopen(“out, dat“, “w“)for(i=0; i10; i+)fprintf(fp,“%6.21f/n, bbi)fclose(fp);(分数:100.00)_正确答案:(void jsVal() int i,j,k,t,y;float sum=0;for(i=0; i10; i+)for(y=0; y20; y+)sum=sum+aaiybbi=(sum-aai0-aai19)/18;sum=0;for(k=0; k10; k+)for(i=0; i10-k; i+)if(bbibbi+1) t=bbi; bbi=bbi+1; bbi+1=t;)解析: