1、计算机三级数据库技术-76 及答案解析(总分:100.00,做题时间:90 分钟)1.在文件 IN.DAT 中存有 200 个正整数,且每个数均在 10009999 之间。函数 readDat()的功能是读取这200 个数并存放到数组 aa 中。请编写函数 jsSort(),该函数的功能是:对 aa 中的数按每个数后 3 位的大小进行降序排列,将排序后的前 10 个数存入数组 bb 中,如果出现后 3 位相等的数,则对这些数按原始 4位数的大小进行升序排列。最后调用函数 writeDat(),把结果 bb 输出到文件 OUT.DAT 中。 例如,处理前 9012 5099 6012 7025
2、8088 处理后 5099 8088 7025 6012 9012 请勿改动主函数 main()、读函数 readDat()和写函数 writeDat()的内容。 试题程序 #includestdio.h #includestring.h #includestdlib.h int aa200, bb10; void readDat(); void writeDat(); void jsSort() void main() readDat(); jsSort(); writeDat(); void readDat() FILE*in; int i; in=fopen(“IN.DAT“, “r“)
3、; for(i=0; i200; i+) fscanf(in, “%d,“, fclose(in); void writeDat() FILE*out; int i; out=fopen(“OUT.DAT“, “w“); system(“CLS“); for(i=0; i10; i+) printf(“i=%d, %dn“, i+1, bbi); fprintf(out, “%dn“, bbi); fclose(out); (分数:100.00)_计算机三级数据库技术-76 答案解析(总分:100.00,做题时间:90 分钟)1.在文件 IN.DAT 中存有 200 个正整数,且每个数均在 1
4、0009999 之间。函数 readDat()的功能是读取这200 个数并存放到数组 aa 中。请编写函数 jsSort(),该函数的功能是:对 aa 中的数按每个数后 3 位的大小进行降序排列,将排序后的前 10 个数存入数组 bb 中,如果出现后 3 位相等的数,则对这些数按原始 4位数的大小进行升序排列。最后调用函数 writeDat(),把结果 bb 输出到文件 OUT.DAT 中。 例如,处理前 9012 5099 6012 7025 8088 处理后 5099 8088 7025 6012 9012 请勿改动主函数 main()、读函数 readDat()和写函数 writeDat
5、()的内容。 试题程序 #includestdio.h #includestring.h #includestdlib.h int aa200, bb10; void readDat(); void writeDat(); void jsSort() void main() readDat(); jsSort(); writeDat(); void readDat() FILE*in; int i; in=fopen(“IN.DAT“, “r“); for(i=0; i200; i+) fscanf(in, “%d,“, fclose(in); void writeDat() FILE*out
6、; int i; out=fopen(“OUT.DAT“, “w“); system(“CLS“); for(i=0; i10; i+) printf(“i=%d, %dn“, i+1, bbi); fprintf(out, “%dn“, bbi); fclose(out); (分数:100.00)_正确答案:()解析:void jsSort() int i, j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0; i199; i+) /*用选择法对数组进行排序*/ for(j=i+1; j200; j+) if(aai%1000aaj%1000
7、) /*按照每个数的后 3 位大小进行降序排序*/ temp=aai; aai=aaj; aaj=temp; else if(aai%1000=aaj%1000) /*如果后 3 位数相等*/ if(aaiaaj) /*则要按原 4 位数的值进行升序排序*/ temp=aai; aai=aaj; aaj=temp; for(i=0; i10; i+) /*将排序后的前 10 个数存入数组 b 中*/ bbi=aai; 考点 本题考查对 4 位整数的排序。考查的知识点主要包括:数组元素的排序算法,if 判断语句和逻辑表达式,以及求余算术运算。 此题属于 4 位数排序问题。本题需主要解决 3 个问题:问题 1 如何取 4 位数的后 3 位进行比较;问题 2 如何按照题目要求的条件(按照每个数的后 3 位的大小进行降序排列,如果后 3 位相等,则按照原始 4 位数的大小进行升序排列)排序;问题 3 如何将排完序的前 10 个数存到数组 bb 中去。 本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前 10 个数存到数组 bb 中。对于问题 1 可以通过算术运算的取余运算实现(aai%1000);问题 2 通过包含 if 判断语句的起泡排序法就可以实现。