1、三级网络技术机试-210 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 IN.DAT中有 200组数据,每组有 3个数,每个数均是三位数。函数:readDat()是读取这 200组数据存放到结构数组 aa中。请编制函数 jsSort(),其函数的功能是:要求在 200组数据中找出条件为每组数据中的第一个数大于第二个数与第三个数之和,其中满足条件的个数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb中,再对 bb中的数据按照每组数据的第一个数与第三个数之和的大小进行升序排列(第一个数与第三个数的和均不相等)
2、,排序后的结果仍重新存入结构数组 bb中,最后调用函数 writeDat()把结果 bb输出到 OUT.DAT文件中。注意:部分源程序存在文件 PROG1.C文件中。请勿改动数据文件 IN.DAT中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序#include #include void readDat();void writeDat(int count);typedef structint x1,x2,x3;Data;Data aa200,bb200;int jsSort()void main()int count;readDat(
3、);count=jsSort();/*返回满足条件的个数*/writeDat(count);void readDat()FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0;i200;i+)fscanf(in,“%d,%d,%d“,fclose(in);void writeDat(int count)FILE *out;int i;out=fopen(“out.dat”,“W”);for(i=0;icount;i+)printf(“%d,%d,%d 第一个数+第三个数=%d/n“,bbi.x1,bbi.x2,bbi.x3,bbi.x1+bbi.x3);fp
4、rintf(out,“%d,%d,%d/n”,bbi.x1,bbi.x2,bbi.x3);fclose(out);(分数:100.00)_三级网络技术机试-210 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 IN.DAT中有 200组数据,每组有 3个数,每个数均是三位数。函数:readDat()是读取这 200组数据存放到结构数组 aa中。请编制函数 jsSort(),其函数的功能是:要求在 200组数据中找出条件为每组数据中的第一个数大于第二个数与第三个数之和,其中满足条件的个数作为函数 jsSort()的返回值,同时把满足条
5、件的数据存入结构数组 bb中,再对 bb中的数据按照每组数据的第一个数与第三个数之和的大小进行升序排列(第一个数与第三个数的和均不相等),排序后的结果仍重新存入结构数组 bb中,最后调用函数 writeDat()把结果 bb输出到 OUT.DAT文件中。注意:部分源程序存在文件 PROG1.C文件中。请勿改动数据文件 IN.DAT中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序#include #include void readDat();void writeDat(int count);typedef structint x1,x
6、2,x3;Data;Data aa200,bb200;int jsSort()void main()int count;readDat();count=jsSort();/*返回满足条件的个数*/writeDat(count);void readDat()FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0;i200;i+)fscanf(in,“%d,%d,%d“,fclose(in);void writeDat(int count)FILE *out;int i;out=fopen(“out.dat”,“W”);for(i=0;icount;i+)pri
7、ntf(“%d,%d,%d 第一个数+第三个数=%d/n“,bbi.x1,bbi.x2,bbi.x3,bbi.x1+bbi.x3);fprintf(out,“%d,%d,%d/n”,bbi.x1,bbi.x2,bbi.x3);fclose(out);(分数:100.00)_正确答案:(int jsSort()int i,j; /*定义变量*/Data temp;int cnt=0;for(i=0;i200;i+)if (aai.x1aai.x2+aai.x3)/*判断条件*/bbcnt+=aai;for(i=0;icnt-1;i+) /*选择法排序*/for(j=i+1;jcnt;j+)if(bbi.x1+bbi.x3bbj.x1+bbj.x3)temp=bbi;bbi=bbj;bbj=temp;return cnt; /*返回函数值*/)解析:解析 本题要求按照一定的判断条件将已知数据组(在代码中表现为结构体)筛选后,再按表达式的大小进行排序。依据题意,应依次从数组 aa中取出每一个数据,根据题干中给出的判断条件(每组数据中的第一个数大于第二个数与第三个数之和,即 aai.x1aai.x2+aai.x3)筛选后,将符合条件的存入数组 bb中,最后将数组 bb中的数据组用选择法按第一个数与第三个数之和的大小进行排序。