1、三级数据库技术-477 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知数据文件 in.dat中存有 300个四位数,并已调用读函数 readDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再把所有满足此条件的四位数依次存入数组 b中,然后对数组 b的四位数按从大到小的顺序进行排序。最后 main()函数调用写函数 writeDat()把数组 b中的数输出到文件 out.dat中。 例如:7153,7+1=5+3,则该数满足条
2、件存入数组 b中,且个数 cnt=cnt+1。 8129,8+1!=2+9,则该数不满足条件忽略。 程序中已定义数组:a300,b300,已定义变量:cnt 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#include stdio.h int a300, b300, cnt=0; void readDat(); void writeDat(); jsValue() main() int i; readDat(); jsValue(); writeDat(); printf(“cnt=%dn“, cnt); f
3、or(i=0; icnt; i+) printf(“b%d=%dn“, i, bi); void readDat() FILE *fp; int i; fp=fopen(“in.dat“, “r“); for(i=0; i300; i+) fscanf (fp, “%d,“, fclose(fp); void writeDat() FILE *fp; int i; fp=fopen(“out.dat“, “w“); fprintf (fp, “%dn“, cnt); for(i=0; icnt; i+) fprintf(fp, “%dn“, bi); fclose(fp); (分数:100.0
4、0)_三级数据库技术-477 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知数据文件 in.dat中存有 300个四位数,并已调用读函数 readDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,再把所有满足此条件的四位数依次存入数组 b中,然后对数组 b的四位数按从大到小的顺序进行排序。最后 main()函数调用写函数 writeDat()把数组 b中的数输出到文件 out.dat中。 例如:7153,7+1=5+3,则该数满
5、足条件存入数组 b中,且个数 cnt=cnt+1。 8129,8+1!=2+9,则该数不满足条件忽略。 程序中已定义数组:a300,b300,已定义变量:cnt 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。#include stdio.h int a300, b300, cnt=0; void readDat(); void writeDat(); jsValue() main() int i; readDat(); jsValue(); writeDat(); printf(“cnt=%dn“, cnt);
6、 for(i=0; icnt; i+) printf(“b%d=%dn“, i, bi); void readDat() FILE *fp; int i; fp=fopen(“in.dat“, “r“); for(i=0; i300; i+) fscanf (fp, “%d,“, fclose(fp); void writeDat() FILE *fp; int i; fp=fopen(“out.dat“, “w“); fprintf (fp, “%dn“, cnt); for(i=0; icnt; i+) fprintf(fp, “%dn“, bi); fclose(fp); (分数:100
7、.00)_正确答案:()解析:int i, j, qw, bw, sw, gw, tmp; for(i=0; i300; i+) qw=ai/1000; bw=(ai-qw*1000)/100; sw=(ai-qw*1000-bw*100)/10; gw=ai%10; if(qw+bw-sw-gw=0) /如果 ai千位上的数字加上其百位上的数字减去其十位上的数字减去个位上的数字等于零 bcnt+=ai; for(i=0; icnt; i+) for(j=i+1; jcnt; j+) if(bibj) /如果 bi的值小于 bj的值, 则两者进行互换, 对数组 b进行降序排列 tmp=bj; bj=bi; bi=tmp; 解析 千位+百位等于十位+个位的数的个数,把所有满足此条件的四位数依次存入数组,然后对数组按从大到小的顺序进行排序。 通过审题可以发现有两个不同点:要求统计的四位数的条件是“千位+百位=十位+个位”,参考答案的第 8条语句修改 if语句的判断条件即可。将统计结果按从大到小的顺序排序,参考答案的第 13条语句,修改两数组元素的大小比较符即可。另外,对于数据交换的整型变量 tmp可以自定义其变量名。