1、三级网络技术机试-214 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 IN.DAT 中存有 300 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于 0 的个数 cnt,再把所有满足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从小到大的顺序进行排序。最后 main()函数调用写函数 writeDat()把数组 b 中的数输出到文件 OUT.DAT 中。例如,9123,9-1-2
2、-30,则该数满足条件存入数组 b 中,且个数 cnt=cnt+1。9812,9-8-l-20,则该数不满足条件忽略。注意:部分源程序存在文件 PROG1.C 文件中。程序中已定义数组:a300,b300,已定义变量:cnt。请勿改动数据文件 IN.DAT 中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序#include int a300,b300,cnt=0;void writeDat();void readDat();void jsValue()main()int i;readDat();jsValue();writeDat();
3、for(i=0;icnt;i+)printf(“b%d=%d/n”,i,bi);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;int i;fp=fopen(“out.dat“,“w“);fprintf(fp,“%d/n“,cnt);for(i=0;icnt;i+)fprintf(fp,“%d/n”,bi);fclose(fp);(分数:100.00)_三级网络技术机试-214 答案解析(总分:100.0
4、0,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 IN.DAT 中存有 300 个四位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 jsValue(),其功能是:求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于 0 的个数 cnt,再把所有满足此条件的四位数依次存入数组 b 中,然后对数组 b 的四位数按从小到大的顺序进行排序。最后 main()函数调用写函数 writeDat()把数组 b 中的数输出到文件 OUT.DAT 中。例如,9123,9-1-2-30,则该数满足条件存入数组 b 中,且个数 cnt
5、=cnt+1。9812,9-8-l-20,则该数不满足条件忽略。注意:部分源程序存在文件 PROG1.C 文件中。程序中已定义数组:a300,b300,已定义变量:cnt。请勿改动数据文件 IN.DAT 中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序#include int a300,b300,cnt=0;void writeDat();void readDat();void jsValue()main()int i;readDat();jsValue();writeDat();for(i=0;icnt;i+)printf(“b%d
6、=%d/n”,i,bi);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;int i;fp=fopen(“out.dat“,“w“);fprintf(fp,“%d/n“,cnt);for(i=0;icnt;i+)fprintf(fp,“%d/n”,bi);fclose(fp);(分数:100.00)_正确答案:(void jsValue()int i,j; /*定义变量*/int a1,a2,a3,a4;
7、int temp;for(i=0;i300;i+)a1=ai%10; /*数位分解*/a2=ai%100/10;a3=ai%1000/100;a4=ai/1000;if(a4-a3-a2-a10)/*笋 U 断条件*/bcnt+=ai;for(i=0;icnt-1;i+) /*选择法排序*/for(j=i+1;jcnt;j+)if (bibj)temp=bi;bi=bi;bj=temp;)解析:解析 本题要求将已知数按十进制位进行拆分,先按照一定的判断条件筛选统计,再按大小进行排序。依据题意,应依次从数组 a 中取出每一个四位数,按十进制位拆分后,根据题目中给出的判断条件(四位数的千位数上的数-百位数上的数-十位数上的数-个位数上的数0,即 a4-a3-a2-a10)筛选后,将符合条件的四位数存入数组 b 中,同时计数器变量 cnt 加 1,最后将数组 b 中的四位数用选择法进行排序。