三级数据库技术机试-198.doc
三级数据库技术机试 -198( 总分: 100.00 ,做题时间: 90 分钟 )一、上机题( 总题数: 1,分数: 100.00)1. 已知数据文件 IN1.DAT 中存有 200 个 4 位数,并已调用读函数 readDat() 把这些数存入数组 a 中,请编 制一函数 jsVal() ,其功能是:如果 4 位数各位上的数字均是奇数,则统计出满足此条件的个数 cnt ,并把 这些 4位数按从大到小的顺序存入数组 b 中。最后调用函数 writeDat() 把结果 cnt 及数组 b 中符合条件的 4位数输出到0UT1.DAT文件。注意:部分源程序已给出。程序中已定义数组: a200 ,b200, 已定义变量: cnt 。请勿改动主函数 main() 、读函数 readDat() 和写函数 writeDat() 的内容。 试题程序:#include < stdio.h >#define MAX 200int aMAX,bMAX,cnt=0;void writeDat();void jsVal()void readDat()int i;FILE *fp;fp=fopen("IN1.DAT","r");for(i=0;i < MAX;i+)fscanf(fp,"%d",ai);fclose(fp);void main()int i;readDat();jsVal();prinff(" 满足条件的数 =%d/n",cnt);for(i=0;i < cnt;i+)printf("%d/n",bi);prinff("/n");writeDat();void writeDat()FILE *fp;int i;fp=fopen("out1.dat","w");fprinff(fp,"%d/n",cnt);for(i=0;i < cnt;i+) fprinff(fp,"%d/n",bi); fclose(fp);分数: 100.00 ) 正确答案: (void jsVal()int i,j; /* 定义循环控制变量 */int a1,a2,a3,a4; /* 定义变量保存 4 位数的每位数字 */int Letup; /* 定义数据交换时的暂存变量 */for(i=0;i < 200;i+) /* 逐个取每一个 4 位数 */a4=ai/1000; /* 求 4 位数的千位数字 */ a3=ai%1000/100; /* 求 4 位数的百位数字 */ a2=ai%100/10; /* 求 4 位数的十位数字 */ a1=ai%10; /* 求 4 位数的个位数字 */ if(a4%2!=0&&a3%2!=0 a2%2!=0a1%2!=0) /* 如果 4位数各位上的数字均是奇数 */ bcnt=ai; /* 将满足条件的数存人数组 b 中*/cnt+; /* 统计满足条件的数的个数 */for(i=0;i < cnt-1;i+) /* 将数组 b 中的数按从大到小的顺序排列 */for(j=i+1;j < cnt;j+)if(bi < bj) temp=bi; bi=bj;bj=temp;)解析: