《2022年计算机三级数据库技术考前试题及答案(9).docx》由会员分享,可在线阅读,更多相关《2022年计算机三级数据库技术考前试题及答案(9).docx(4页珍藏版)》请在金锄头文库上搜索。
1、 2022年计算机三级数据库技术考前试题及答案(9)1.已知数据文件IN30.DAT中存有200个4位数,并已调用读函数readDat( )把这些数存入数组a中,请编制一函数jsVal( ),其功能是:把个位数字和千位数字重新组合成一个新的十位数ab(新十位数的十位数字是原4位数的个位数字,新十位数的个位数字是原4位数的千位数字),以及把百位数和十位数组成另一个新的十位数cd(新十位数的十位数字是原4位数的百位数字,新十位数的个位数字是原4位数的十位数字),假如新组成的两个十位数必需是一个奇数,另一个为偶数且两个十位数中至少有一个数能被17整除,同时两个新十位数字均不为0,则将满意此条件的4位
2、数按从大到小的挨次存入数组b中,并要计算满意上述条件的4位数的个数cnt,最终调用写函数writeDat( )把结果cnt及数组b中符合条件的4位数输出到OUT30.DAT文件中。 留意:局部源程序已给出。 程序中已定义数组:a200,b200,已定义变量:cnt。 请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。 #include #define MAX 200 int aMAX,bMAX,cnt=0; void writeDat(); void jsVal( ) int i,j; /*定义循环掌握变量*/ int a1,a2,a3,a4; /*定义变
3、量保存4位数的每位数字*/ int temp; /*定义数据交换时的暂存变量*/ int ab,cd; /*存储重新组合成的十位数*/ for(i=0;i200;i+) /*逐个取每一个4位数*/ a4=ai/1000; /*求4位数的千位数字*/ a3=ai%1000/100; /*求4位数的百位数字*/ a2=ai%100/10; /*求4位数的十位数字*/ a1=ai%10; /*求4位数的个位数字*/ ab=10*a1+a4; /*把个位数和千位数组合成一个新的十位数ab*/ cd=10*a3+a2; /*把百位数和十位数组成另一个新的十位数cd*/ if(ab%17=0|cd%17=
4、0) /*则将满意条件的数存入数组b中*/ cnt+; /*统计满意条件的数的个数*/ for(i=0;i for(j=i+1;j if(bi temp=bi; bi=bj; bj=temp; void readDat( ) int i; FILE *fp; fp=fopen(“IN30.DAT“,“r“); for(i=0;i fscanf(fp,“%d“, fclose(fp); void main() int i; readDat(); jsVal(); printf(“满意条件的数=%dn“,cnt); for(i=0;i printf(“%d “,bi); printf(“n“); writeDat(); void writeDat() FILE *fp; int i; fp=fopen(“OUT30.DAT“,“w“); fprintf(fp,“%dn“,cnt); for(i=0;i fprintf(fp, “%dn“,bi); fclose(fp);