1、三级数据库技术-495 及答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知数据文件 in.dat中存有 200个四位数,并已调用读函数 readDat()把这些数存入数组 a中,请考生编制一函数 jsVal(),其功能是:依次从数组 a中取出一个四位数,如果该四位数均大于该四位数以前的连续五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数 cnt,并把这些四位数按从大到小的顺序存入数组 b中,最后调用写函数 WriteDat()把结果 cnt以及数组 b中符合条件的四位数输出到 out.dat文件中。
2、程序中已定义数组:a200,b200,已定义变量:cnt 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 WriteDat()的内容。#include stdio.h #define MAX 200 int aMAX, bMAX, cnt=0; void writeDat(); void jsVal() /*readDat()从数据文件 in.dat中读取 200个四位数存入数组 a中*/ void readDat() int i; FILE *fp; fp=fopen(“in.dat“, “r“); for(i=0; iMAX; i+)
3、fscanf(fp, “%d“, fclose(fp); void main() int i; readDat(); jsVal();/调用 jsVal()函数, 实现题目要求的功能 printf(“满足条件的数=%dn“, cnt); for(i=0;icnt; i+) printf(“%d“, bi); printf(“n“); writeDat(); /*函数 wdteDat()把结果 cnt以及数组 b中符合条件的四位数输出到 out.dat文件中*/ void writeDat() FILE *fp; int i; fp=fopen(“out.dat“, “w“); fprintf(
4、fp, “%dn“, cnt); for(i=0; icnt; i+) fprintf(fp, “%dn“, bi); fclose(fp); (分数:100.00)_三级数据库技术-495 答案解析(总分:100.00,做题时间:90 分钟)一、设计与应用题(总题数:1,分数:100.00)1.已知数据文件 in.dat中存有 200个四位数,并已调用读函数 readDat()把这些数存入数组 a中,请考生编制一函数 jsVal(),其功能是:依次从数组 a中取出一个四位数,如果该四位数均大于该四位数以前的连续五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数
5、cnt,并把这些四位数按从大到小的顺序存入数组 b中,最后调用写函数 WriteDat()把结果 cnt以及数组 b中符合条件的四位数输出到 out.dat文件中。 程序中已定义数组:a200,b200,已定义变量:cnt 请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 WriteDat()的内容。#include stdio.h #define MAX 200 int aMAX, bMAX, cnt=0; void writeDat(); void jsVal() /*readDat()从数据文件 in.dat中读取 200个四位数存入数
6、组 a中*/ void readDat() int i; FILE *fp; fp=fopen(“in.dat“, “r“); for(i=0; iMAX; i+) fscanf(fp, “%d“, fclose(fp); void main() int i; readDat(); jsVal();/调用 jsVal()函数, 实现题目要求的功能 printf(“满足条件的数=%dn“, cnt); for(i=0;icnt; i+) printf(“%d“, bi); printf(“n“); writeDat(); /*函数 wdteDat()把结果 cnt以及数组 b中符合条件的四位数输
7、出到 out.dat文件中*/ 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.00)_正确答案:()解析:int i, j, ab; for(i=5; iMAX; i+) if(ai%2=0) /把满足此条件的四位数 ai存入数组元素 bcnt,同时数组下标变量 cnt加 1 /*对数组 b进行降序排序*/ for(i=0; icnt-1; i+) for(j =i+1; jcnt; j+) if(bibj) /如果数组元素 bi小于 bj, 则两者进行互换 ab=bj; bj=bi; bi=ab; 解析 大于前连续 5个数,偶数,从大到小排序。 通过审题可以发现主要有 3个不同点:要求进行比较的元素大于连续前 5个数,因此在设置 for循环条件语句时,应该从第 6个元素开始,即数组下标 i的值等于 5,参考答案的第 2条语句;当前元素连续大于前 5个数时,前 5个元素的数组下标表示也有所不同,判断表达式也不一样,参考答案的第 4条语句;统计结果按从大到小的方式进行排序,即参考答案的第 9条语句。