1、国家三级(数据库技术)机试模拟试卷 94及答案与解析 一、程序设计题 1 已知数据文件 IN.DAT中存有 300个五位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请编制一函数 jsValue(),其功能是:求出满足以下条件的数的个数 cnt、所有满足此条件的数的平均值 pjz1,以及不满足此条件的数的平均值pjz2,最后调用写函数把结果输出到 out.dat文件。 条件:将五位数的万位、百位、个位数字重组成一个三位数 a,将五位数的千位、十位数字重组成一个两位数 b,前一个数 a能被后一个数 b整除 。 例如: 24360满足条件 (230能被 46整除 ); 38129不
2、满足条件 (319不能被 82整除 )。 部分源程序已给出。 程序中已定义数组: a300,已定义变量: cnt、 pjz1、 pjz1。 请勿改动主函数 main()、读函数 ReadDat()和写函数 writeDat()的内容。 #include stdio.h int a300,cnt=0; double pjzl-0.0,pjz2=0.0; jsValue() main() int i; readDat(); jsValue(); writeDat(); printf (“cnt=%dn 满足条件的平均值 pzj1=%7.21 fn不满足条件的平均值 pjz2=%7.21fn“ ,c
3、nt,pjz1,pjz2); readDat ( ) FILE *fp; int i; fp=fopen(“ in.dar“ ,“ r“); for(i=0,i 300;i+) fscanf(fp,“%d“ , fclose(fp); writeDat() FILE *fp; int i; fp=fopen(“ out.dar“ ,“ w“ ); fprintf(fp,“ %dn%7.21fn%7.21fn“ ,cnt,pjz1,pjz2); fclose(fp); 国家三级(数据库技术)机试模拟试卷 94答案与解析 一、程序设计题 1 【正确答案】 jsValue() int i,g,s,b
4、,q,w,k=0,n1,n2; for(i=O;i 300;i+) /*取出各位数字 */ g=ai%10; s=ai%100/10; b=ai/100%10; q=ai/1000%10; w=ai/lO000; /*重组新数 */ n1=w*100+b*10+g; n2=q*10+s; /*判断条件 */ if(n1%n2=0) cet+;pjz1+-ai; else k+;pjz2+=ai; /*计算平均值 */ pjz1/=cnt; pjz2/=k; 【试题解析】 类型:数字统计,数字打散运算。 关键:取出一个数的各位数字,以及将各位数字重组成新的数。 ai%10对 10求余结 果为个位数, ai%100/10先对 100求余得出后两位数然后再除 10,由于为整数,因此得出后两位数的第一位。依此类推。