1、三级数据库技术机试-262 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 in75.dat中有 200组数据,每组有 3个数,每个数均为 3位数。函数 readDat()是读取这 200组数存放到结构数组 aa中。请编制函数 jsSort(),其函数的功能是:要求在 200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb中,再对 bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相
2、等),排序后的结果仍重新存入结构数组比中。最后调用函数 writeDat()把结果 bb输出到文件 out75.dat。注意:部分源程序已给出。请勿改动主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序:#includestdio.h#includestring.h#includeconio.htypedef structint x1,x2,x3;Data;Data aa200,bb200;int jsSort ()void main ( )int count;readDat();count=jsSort();writeDat(count);read
3、Dat()FILE *in;int i;in=fopen(“in75.dat“,“r“);for(i=0;i200;i+)fscanf(in, “%d %d %d“, fclose(in);writeDat(int count)FILE *out;int i;clrscr();out=fopen(“out75.dat“,“w“);for(i=0;icount ;i+)print f ( “%d, %d, %d 第一个数+第三个数=%d/n“, bbi.x1,bbi.x2,bbi.x3,bbi.x1+bbi.x3);fprintf(out, %d,% d,% d /n“ ,bbi.x1,bbi.
4、x2,bbi.x3);fclose(out);(分数:100.00)_三级数据库技术机试-262 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 in75.dat中有 200组数据,每组有 3个数,每个数均为 3位数。函数 readDat()是读取这 200组数存放到结构数组 aa中。请编制函数 jsSort(),其函数的功能是:要求在 200组数据中找出条件为每组数据中的第一个数大于第二个数加第三个数之和,其中满足条件的个数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb中,再对 bb中的数按照每组数据的第
5、一个数加第三个数之和的大小进行升序排列(第一个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组比中。最后调用函数 writeDat()把结果 bb输出到文件 out75.dat。注意:部分源程序已给出。请勿改动主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序:#includestdio.h#includestring.h#includeconio.htypedef structint x1,x2,x3;Data;Data aa200,bb200;int jsSort ()void main ( )int count;readDat();c
6、ount=jsSort();writeDat(count);readDat()FILE *in;int i;in=fopen(“in75.dat“,“r“);for(i=0;i200;i+)fscanf(in, “%d %d %d“, fclose(in);writeDat(int count)FILE *out;int i;clrscr();out=fopen(“out75.dat“,“w“);for(i=0;icount ;i+)print f ( “%d, %d, %d 第一个数+第三个数=%d/n“, bbi.x1,bbi.x2,bbi.x3,bbi.x1+bbi.x3);fprint
7、f(out, %d,% d,% d /n“ ,bbi.x1,bbi.x2,bbi.x3);fclose(out);(分数:100.00)_正确答案:(int jsSort()int i,j,count=0;Data val;for(i=0;i200;i+)if (aai. x1aai. x2+aa i. x3) /*如果每组数据中的第一个数大于第二 三个数之和*/bb count. x1=aa i. x1; /*把满足条件的数据存入结构数组 bb中*/bb count. x2=aa i. x2;bb count. x3 =aa i.x3;count+; /*统计满足条件的数据的组数* /for
8、 (i= 0; icount-1; i+ ) /*对 bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列*/ for (j =i+1; jcount; j +)if (bbi. x1+bbi. x3bbj. x1+bb j. x3)val=bb i;bbi=bbj;bb j =val;return count; /*满足条件的数据的组数*/)解析:解析 本题考查的知识点如下:(1)结构体及结构数组。(2)数据的排序。(3)函数的返回值。本题中,定义了结构类型和结构数组,这就要涉及到结构体和结构数组的访问。相同类型的结构体变量之间可以直接赋值,也可以依次对结构体中的每个变量进行赋值或访问。排序使用“选择排序法”。函数的值通过 return语句返回,格式为;return 表达式或 return(表达式)或 return,当函数没有返回值时用第 3种格式。在本题中,要用第 1种或第 2种格式。