1、三级网络技术机试-227 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 IN.DAT 中存有 300 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再求出所有满足此条件的四位数平均值 pjz1,以及所有不满足此条件的四位数平均值pjz2。最后 main()函数调用写函数 writeDat()把结果 cnt、pjz1、pjz2 输出到 OUT.DAT 文件。例如,7153,7+1=5
2、+3,则该数满足条件,参加计算平均值 pjz1,且个数 cnt=cnt+1。8129,8+1!=2+9,则该数不满足条件,参加计算平均值 pjz2。注意:部分源程序存在文件 PROG1.C 文件中。程序中已定义数组:a300,已定义变量:cnt,pjz1,pjz2。请勿改动数据文件 IN.DAT 中的任何数据、主函数 main()、读函数 readDat()和写函数writeDat()的内容。试题程序#include int a300,cnt=0;double pjz1=0.0,pjz2=0.0;void readDat();void writeDat();void jsValue()void
3、 main()readDat();jsValue();writeDat();printf(“cnt=%d/n 满足条件的平均值 pzj1=%7.2lf/n 不满足条件的平均值pzj2=%7.2lf/n“,cnt,pjz1,pjz2);void readDat()FILE *fp;int i;fp=fopen(“in.dat“,“r“);for(i=0;i300;i+)fscanf(fp,“%d,”,fclose(fp);void writeDat()FILE *fp;fp=fopen(“outldat”,“w”);fprintf(fP,“%d/n%7.2lf/n%7.2lf/n“,cnt,pj
4、z1,pjz2);fclose(fp);(分数:100.00)_三级网络技术机试-227 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 IN.DAT 中存有 300 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再求出所有满足此条件的四位数平均值 pjz1,以及所有不满足此条件的四位数平均值pjz2。最后 main()函数调用写函数 writeDat()把结果 cnt、pjz1、pj
5、z2 输出到 OUT.DAT 文件。例如,7153,7+1=5+3,则该数满足条件,参加计算平均值 pjz1,且个数 cnt=cnt+1。8129,8+1!=2+9,则该数不满足条件,参加计算平均值 pjz2。注意:部分源程序存在文件 PROG1.C 文件中。程序中已定义数组:a300,已定义变量:cnt,pjz1,pjz2。请勿改动数据文件 IN.DAT 中的任何数据、主函数 main()、读函数 readDat()和写函数writeDat()的内容。试题程序#include int a300,cnt=0;double pjz1=0.0,pjz2=0.0;void readDat();voi
6、d writeDat();void jsValue()void main()readDat();jsValue();writeDat();printf(“cnt=%d/n 满足条件的平均值 pzj1=%7.2lf/n 不满足条件的平均值pzj2=%7.2lf/n“,cnt,pjz1,pjz2);void readDat()FILE *fp;int i;fp=fopen(“in.dat“,“r“);for(i=0;i300;i+)fscanf(fp,“%d,”,fclose(fp);void writeDat()FILE *fp;fp=fopen(“outldat”,“w”);fprintf(f
7、P,“%d/n%7.2lf/n%7.2lf/n“,cnt,pjz1,pjz2);fclose(fp);(分数:100.00)_正确答案:(void jsValue()inf i; /*定义变量*/int a1,a2,a3,a4;for(i=0;i300;i+)a1=ai%10; /*数位分解*/a2=ai%100/10;a3=ai%1000/100;a4=ai/1000;if(a4+a3=a2+a1) /*判断条件*/pjz1+=ai;cnt+;else pjz2+=ai;pjz1/=cnt; /*求平均值*/pjz2/=(300-cnt);)解析:解析 本题要求先将已知数按十进制位拆分,先按照一定的判断条件筛选统计后,将符合条件的数和不符合条件的数分别计算各自的平均值。依据题意,应依次从数组 a 中取出每一个四位数,按十进制位拆分后,根据题目中给出的判断条件(四位数的千位数上的数+百位数上的数=十位数上的数+个位数上的数,即 a4+a3=a2+a1)筛选后,符合条件的数参与计算平均值 pjz1,同时计数器变量 cnt 加 1;不符合条件的数参与计算平均值 pjz2。