1、计算机三级数据库技术-106 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件 IN.DAT中存有 200个正整数,且每个正整数均在 10009999 之间。函数 readDat()的功能是读取这 200个数并存放到数组 aa中。请编写函数 jsSort(),该函数的功能是:按照每个数的后 3位的大小顺序进行升序排列,将排序后的前 10个数存入数组 bb中,如果数组 bb中出现后 3位相等的数,则对这些数按原始 4位数据大小顺序进行降序排列。最后调用函数 writeDat()把结果 bb输出到文件 OUT.DAT中。例如,处理前 60
2、12 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 请勿改动主函数 main()、读函数 readDat()和写函数 writeDat()的内容。 试题程序 #includestdio.h #includestring.h #includestdlib.h int aa200,bb10; void readDat(); void writeDat(); void jsSort() void main() reactDat(); jsSort(); writeDat(); void readDat() FILE*in; int i; in=fo
3、pen(“IN.DAT“,“r“); for(i=0;i200;i+) fscanf(in,“%d“, fclose(in); void writeDat() FILE*out; int i; system(“CLS“); out=fopen(“OUT.DAT“,“w“); for(i=0;i10;i+) printf(“i=%d,%dn“,i+1,bbi); fprintf(out,“%dn“,bbi); fclose(out); (分数:100.00)_计算机三级数据库技术-106 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.在文件
4、IN.DAT中存有 200个正整数,且每个正整数均在 10009999 之间。函数 readDat()的功能是读取这 200个数并存放到数组 aa中。请编写函数 jsSort(),该函数的功能是:按照每个数的后 3位的大小顺序进行升序排列,将排序后的前 10个数存入数组 bb中,如果数组 bb中出现后 3位相等的数,则对这些数按原始 4位数据大小顺序进行降序排列。最后调用函数 writeDat()把结果 bb输出到文件 OUT.DAT中。例如,处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 请勿改动主函数 main()、读函数
5、 readDat()和写函数 writeDat()的内容。 试题程序 #includestdio.h #includestring.h #includestdlib.h int aa200,bb10; void readDat(); void writeDat(); void jsSort() void main() reactDat(); jsSort(); writeDat(); void readDat() FILE*in; int i; in=fopen(“IN.DAT“,“r“); for(i=0;i200;i+) fscanf(in,“%d“, fclose(in); void w
6、riteDat() FILE*out; int i; system(“CLS“); out=fopen(“OUT.DAT“,“w“); 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%
7、1000) /*按照每个数的后 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+) /*将排好序的前十个数存入数组 bb中*/ bbi=aai; 考点 本题考查对 4位数的排序。考查的知识点主要包括:数组元素的排序算法,if 判断语句和逻辑表达式,以及求余算术运算。 此题属于 4位数排序问题。分析题干要求,本题要求实现 jsSort()函数的功能,分析后可以归纳出 3个关键点:关键点 1如何取 4位数的后 3位进行比较;关键点 2按照每个数的后 3位的大小进行升序排列;关键点 3如果后 3位相等,则按照原始 4位数的大小进行降序排列。 接着分析每一步的解决方法,对于关键点 1可以通过算术运算的取余运算实现;第 2、3 点可通过包含 if判断语句的起泡排序算法完成。