1、计算机三级数据库技术(上机操作)机试模拟试卷 36及答案与解析 一、程序设计题 1 已知数据文件 in dat中存有 300个四位数,并已调用读函数 readl)at()把这些数存入数组 a中,请编写函数 jsValue(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数 cnt,冉把所有满足此条件的四位数依次存入数组 b中,然后对数组 b的四位数按从大到小的顺序进行排序。最后 nmin()函数调用写函数 writeDat()把数组 b中的数输出到文件 out dat中。 例如: 7153, 7+1=5+3,则该数满足条件存 人数组 b中,且个数 cnt=cht+
2、1。 8129, 8+11=2+9,则该数不满足条件忽略。 【试题程序】 #include int at3003 br3001, cnt=0; void readDat(); void writeDat(); jsValue() main() int i; readDat(); jsValue(); writeDat(); printf(“cnt= d n”, cnt); for(i=0;ient; i+) printf(“b d= d n” ibi); void readDat() FILE*fp; int i; fp=fopen(“in dat”, “r”); for(i=0; i300;
3、 i+) fscanf(fp, “ d, ”, void writeDat() FILE*fp; int i; fp=fopen(“out dat”, “W”); fprintf(fp, “ d n”, cnt); for(i=0; icnt;i+) fprintf(fp ” d n”, bi); fclose(fp); 计算机三级数据库技术(上机操作)机试模拟试卷 36答案与解析 一、程序设计题 1 【正确答案】 jsValue() int i, j; *定义变量 * int a1, a2, a3, a4; int temp; for(i=0;i300;i+) a1=ai 10; *数位分解 * a2=ai 100 10; a3=ai 1000 100; a4=ai 1000; if(a4+a3=a2+a1) *判断条件 * bcnt+=ai; for(i=0;icnt一 1; i+) *选择法排序 * for(j=i+1;jcnt;j+) if(bibj) temp=bi; bi=brj; bj=temp;