1、国家三级(数据库技术)机试模拟试卷 67及答案与解析 一、程序设计题 1 下列程序的功能是:选出 5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的 10倍。计算并输出这些 4位自然数的个数 cnt及这些数的和sum。请编写函数 countValue()实现程序的要求,最后调用函数 writeDAT()把结果cnt和 sum输出到文件 OUT67.DAT中。 注意:部分源程序已给出。 请勿改动主函数 main()和写函 数 writeDAT()的内容。 试题程序: #include stdio.h int
2、 cnt,sum; void countValue() void main() cnt=sum=0; countValue(); printf (“满足条件的自然数的个数 =%dn“, cnt); printf (“满足条件的自然数的值的和 =%dn“, sum); writeDAT(); writeDAT ( ) FILE *fp; fp=fopen(“OUT67.DAT“,“w“); fprintf(fp,“%dn%dn“,cnt,sum); fclose(fp); 国家三级(数据库技术)机试模拟试卷 67答案与解析 一、程序设计题 1 【正确答案】 void countValue() i
3、nt i, thou, hun, ten, data; for(i=5000; i =1000; i-) thou=i/1000; /*求四位数的千位数字 */ hun=i%1000/100; /*求四位数的百位数字 */ ten=i%100/10; /*求四位数的十位数字 */ data=i%10; /*求四位数的个位数字 */ if(thou+hun=ten+data&thou+hun=(data-thou)*10) /*千位数与百位数之和等于十位数与个位数之和,且千位数与百位数之和等于个位数与千位数之差的 10倍 */ cnt+; /*则统计满足条件的数的个数 */ sum+=i; /*
4、将满足条件的数求和 */ 【试题解析】 本题考查的知识点如下: (1)“%” 与 “/”的使 用。 (2)判断结构中多个条件的布尔运算。 (3)循环结构的使用。 本题要求选出 5000以下符合条件的 4位数,所以选择范围是 1000到 5000。这里要借助运算符 “%” 与 “/”将 4位数各位上的数拆成独立的数字:将 1个 4位数整除1000则可得到其千位上的数字,除以 1000取余再整除 100则可得百位上的数字,除以 100取余再整除 10则可得十位上的数字,除以 10取余则得个位上的数字。题中给出的两个条件都要满足,所以两条件之间用 “与 ”运算。使用循环结构对1000到 5000之间的数依次进行上述的处理。