1、三级数据库技术机试-101 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 in.dat中有 200个数据。函数 ReadDat()读取这 200个数据存放到整型数组 aa中,请编制函数jsSod(),其函数的功能是:要求在 200个数据中找出满足以下条件的三元组(a,b,c),其中 a、b、c 是所给 200个数据中的三个不同的数,且以 a、b、c 为边长的三边能构成三角形。满足条件三元组的个数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb中(要求bbix1bbix2bbi.x3),再对 bb中的数据按
2、照每组数据构成三角形的周长进行升序排列,排序后的结果仍重新存入结构数组 bb中,最后调用函数 WriteDat()把结果 bb输出到文件 out.dat中。部分源程序已给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includestdio.h#includestring.h#includeconio.htypedef structint x1,x2,x3;data;int aa200;data bb200;int jsSort()void main ()int count;readDat();count=jsSort (); /
3、*返回满足条件的个数*/writeDat(count);readDat(int count)FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0; i200; i+)fscanf(in,“%d“,fclose(in);WriteDat(int count)FILE *out;int i;clrscr();out=fopen(“out.dat“,“w“);for(i=0; icount; i+)fprintf(out,“%d,%d,%d/n“,bbi.x1,bbi.x2,bbi.x3);fclose(out);(分数:100.00)_三级数据库技术机试-10
4、1 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 in.dat中有 200个数据。函数 ReadDat()读取这 200个数据存放到整型数组 aa中,请编制函数jsSod(),其函数的功能是:要求在 200个数据中找出满足以下条件的三元组(a,b,c),其中 a、b、c 是所给 200个数据中的三个不同的数,且以 a、b、c 为边长的三边能构成三角形。满足条件三元组的个数作为函数 jsSort()的返回值,同时把满足条件的数据存入结构数组 bb中(要求bbix1bbix2bbi.x3),再对 bb中的数据按照每组数据构成三角形的周长
5、进行升序排列,排序后的结果仍重新存入结构数组 bb中,最后调用函数 WriteDat()把结果 bb输出到文件 out.dat中。部分源程序已给出。请勿改动主函数 main()、读数据函数 ReadDat()和输出数据函数 WriteDat()的内容。#includestdio.h#includestring.h#includeconio.htypedef structint x1,x2,x3;data;int aa200;data bb200;int jsSort()void main ()int count;readDat();count=jsSort (); /*返回满足条件的个数*/w
6、riteDat(count);readDat(int count)FILE *in;int i;in=fopen(“in.dat“,“r“);for(i=0; i200; i+)fscanf(in,“%d“,fclose(in);WriteDat(int count)FILE *out;int i;clrscr();out=fopen(“out.dat“,“w“);for(i=0; icount; i+)fprintf(out,“%d,%d,%d/n“,bbi.x1,bbi.x2,bbi.x3);fclose(out);(分数:100.00)_正确答案:(提示:类型:整数排序。关键:条件判断和
7、排序算法。最后排序采用选择排序。解答:int jsSort()int i,i,u,k;0;data swap;/*定义一个结构体变量,作为交换时的临时存放地*/data tmp;/*定义一个结构体变量,作为新构造的三元组(不一定满足条件)的存放地*/for(i=0;i200;i+)for(j=i+1;j200;j+)for(u=j+1;u200;u+) if (aaiaaj) tmp.x1=aai;tmp.x3=aaj;else tmp.x1=aaj;tmp.x3=aai;if (aaktmp.x1) /*aak在三个数中最大*/tmp,x2=tmp.x1;tmp.x1=aak;else if
8、 (aaktmp.x3) /*aak在三个数中最小*/tmp.x2=tmp.x3;tmp.x3=tmp;else trap, x2=aa k; /*aa k在三个数中居中*/*按照要求构造结构*/if(tmp.x1 + tmp,x2 tmp.x3)bbk+=tmp;/*将符合条件的数存入 bb数组中*/for(i=0;ik-1;i+)for(j=i+1;jk;j+)if(bbi.xl+bbi.x2+bbi.x3)(bbj.xl+bbj.x2+bbj.x3)swap-bb ii;bb i =bb j;bb j =swap; /*在 BB数组中进行选择排序(从小到大) */return k;)解析: