1、计算机三级数据库技术(上机操作)机试模拟试卷 82及答案与解析 一、程序设计题 1 已知数据文件 in dat中存有 200个四位数,并已调用读函数 readDat()把这些数存入数组 a中,请编写函数 jsVal(),其功能是:从数组 a中依次取出一个四位数,对每一个四位数做如下处理:把个位数字和千位数字重新组成一个新的含有两位数字的数 (新数的十位数字是原四位数的个位数字,新数的个位数字是原四位数的千位数字 ),把百位数字和十位数字组成另一个新的含有两位数字的数 (新数的十位数字是原四位数的百位数字,新数的个位数字是 原四位数的十位数字 )。如果两个新组成的数:一个是奇数,另一个是偶数并且
2、至少有一个数能被 17整除同时两个新数的十位数字均不为零,则将满足此条件的四位数存人数组 b中。并计算满足上述条件的四位数的个数 cnt,然后对数组 b进行降序排序。最后通过 main()函数调用写函数 writeDat()。把结果 cnt以及数组 b中符合条件的四位数输出到 out dat文件中。 例如:一个四位数为 4512,依题意组成的第一个新数为 24第二个新数为 51,其中 51能被 17整除,这两个新数的十位数字不为零,则 4512这个四位数满足题意 。 【试题程序】 #include #define MAX 200 int aFMAX bMAX, cnt=0; void writ
3、eDat(); void jsVal() void readDat() int i; FILE*fp; fp=fopen(“in dat” “r”); for(i=0; iMAXli+) fscanf(fp, “ d”。 writeDat(); void writeDat() FILE*fp; int i; fp=fopen(“out dat”, “W”); fprintf(fp, “ d n”, cnt); for(i=0Iicntli+) fprintf(fp, “ d n” bi); fclose(fp); 计算机三级数据库技术(上机操作)机试模拟试卷 82答案与解析 一、程序设计题 1
4、 【正确答案】 void jsVal() int i, j; *定义变量 * int a1, a2, a3: a4; int ab, cd; int temp; for(i=0;iMAX; i+) al=ai 10; *数位分解 * a2=ai 100 10; a3=ai 1000 100; a4=,i 1000; ab=a1*10+a4; *数位重组 * cd=a3*10+a2; if(ab 2=oR cd9, 62一 =1; ab - =1 cd 2=0)ient一 1 Ii+) *选择法排序 * for(j=i+1,jcnt; j十 +) if(bilbj) temp=bi; bi=bj; bFj=temp;