1、三级数据库技术机试-224 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 IN6.DAT中有 200个正整数,且每个数均在 1000至 9999之间。函数 readDat()的功能是读取这200个数存放到数组 aa中。请编制函数 jsSort(),该函数的功能是:要求按每个数的后 3位的大小进行降序排列,将排序后的前 10个数存入数组 b中,如果数组 b中出现后 3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数 writeDat()把结果 bb输出到文件 OUT6.DAT中。例如:处理前 9012 5099 601
2、2 7025 8088处理后 5099 8088 7025 6012 9012注意:部分源程序已给出。请勿改动主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题程序:#includestdio.h#includestring.h#includestdlib.hint aa200,bb10;void readDat();void writeDat();void jsSort()void main()readDat();jsSort();writeDat();void readDat()FILE *in;int i;in=fopen(“IN6.DAT“,“r
3、“);for(i=0;i200;i+)fscanf(in,“%d,“,fclose(in);void writeDat()FILE *out;int i;out=fopen(“OUT6.DAT“,“w“);system(“CLS“);for(i=0;i10;i+)printf(“i=%d,%d/n“,i+1,bbi);fprintf(out,“%d/n“,bbi);fclose(out);(分数:100.00)_三级数据库技术机试-224 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 IN6.DAT中有 200个正整数,且每个数均在
4、 1000至 9999之间。函数 readDat()的功能是读取这200个数存放到数组 aa中。请编制函数 jsSort(),该函数的功能是:要求按每个数的后 3位的大小进行降序排列,将排序后的前 10个数存入数组 b中,如果数组 b中出现后 3位相等的数,则对这些数按原始4位数据进行升序排列。最后调用函数 writeDat()把结果 bb输出到文件 OUT6.DAT中。例如:处理前 9012 5099 6012 7025 8088处理后 5099 8088 7025 6012 9012注意:部分源程序已给出。请勿改动主函数 main()、读函数 readDat()和写函数 writeDat(
5、)的内容。试题程序:#includestdio.h#includestring.h#includestdlib.hint aa200,bb10;void readDat();void writeDat();void jsSort()void main()readDat();jsSort();writeDat();void readDat()FILE *in;int i;in=fopen(“IN6.DAT“,“r“);for(i=0;i200;i+)fscanf(in,“%d,“,fclose(in);void writeDat()FILE *out;int i;out=fopen(“OUT6.
6、DAT“,“w“);system(“CLS“);for(i=0;i10;i+)printf(“i=%d,%d/n“,i+1,bbi);fprintf(out,“%d/n“,bbi);fclose(out);(分数:100.00)_正确答案:(void jsSon()int i,j; /*定义循环控制变量*/int temp; /*定义数据交换时的暂存变量*/for(i=0;i199;i+) /*用选择法对数组进行排序*/for(j=i+1;j200;j+)if(aai%1000aaj%1000) /*按照每个数的后 3位大小进行降序排序*/temp=aai;aai=aaj;aaj=temp;e
7、lse if(aai%1000=aaj%1000) /*如果后 3位数相等*/if(aaiaaj) /*则按原 4位数的大小进行升序排序*/temp=aai;aai=aaj;aaj=temp;for(i=0;i10;i+) /*将排序后的前 10个数存入数组 bb中*/bbi=aai;)解析:解析 根据题意,函数应该具有两个功能:一是要对这些数按照后 3位的大小进行排序;二是将排序后的结果存入数组 bb中。由于本题要求对数组中的 4位数按照后 3位进行排序。因此,首先要取得各个数的后 3位并作比较,计算表达式“aai%1000”就可以得到每个数的后 3位。根据题意,对这些数按后 3位按从大到小的顺序进行排序。若后 3位数相等,则按原 4位数的值进行从小到大的排序。最后,将排序的结果存入数组 bb中。