1、三级数据库技术机试-286 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:计算出启然数 SIX 和 NINE,它们满足的条件是 SIX+SIX+SIX=NINE+NINE 的个数cnt,以及满足此条件的所有 SIX 与 NINE 的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT51DAT 中。其中的 S,I,X,N,I,N,E 各代表一个十进制数。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT(
2、)的内容。试题程序:#includeint cnt,sum;void CountValue()Void main()Cnt=Sum=0;COUNtValUe();printf(“满足条件的个数=%/n“,cnt):printf(“满足条件的所有的 SIX 与 NINE 的和=%d/n“,sum);WriteDAT();FILE *fp;fp=fopen(“OUT51DAT“, “w“);fprintf(fp,“%d/n%d/n“,cnt,sum);fclose(fp);(分数:100.00)_三级数据库技术机试-286 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1
3、,分数:100.00)1.下列程序的功能是:计算出启然数 SIX 和 NINE,它们满足的条件是 SIX+SIX+SIX=NINE+NINE 的个数cnt,以及满足此条件的所有 SIX 与 NINE 的和 sum。请编写函数 countValue()实现程序要求,最后调用函数 writeDAT()把结果 cnt 和 sum 输出到文件 OUT51DAT 中。其中的 S,I,X,N,I,N,E 各代表一个十进制数。注意:部分源程序已给出。请勿改动主函数 main()和写函数 writeDAT()的内容。试题程序:#includeint cnt,sum;void CountValue()Void
4、main()Cnt=Sum=0;COUNtValUe();printf(“满足条件的个数=%/n“,cnt):printf(“满足条件的所有的 SIX 与 NINE 的和=%d/n“,sum);WriteDAT();FILE *fp;fp=fopen(“OUT51DAT“, “w“);fprintf(fp,“%d/n%d/n“,cnt,sum);fclose(fp);(分数:100.00)_正确答案:(void countValue()int i=100;while(1)if(3*i%2=0 & 3*i/21000 & 3*i/2=9999)/*如果满足条件 SIX+SIX+SIX=NINE*
5、NINE*/ /*即一个 3 位数乘 3 再除 2 余数为 0, 且所得的数为 4 位数*/cnt+; /*统计满足条件的数的个数*/sum+=i+3*i/2; /*求满足此条件的所有 SIX 与 NINE 的和*/i+;else i+; /*如果不满足条什,则取下一个数*/if(i999 | 3*i/29999)break; /*当 SIX 不为 3 位数时或所得的数不为四位数时,退出循环*/)解析:解析 本题考查的知识点如下:(1)循环与判断的嵌套使用。(2)多条件的布尔运算。(33 “%”与“/”运算符的使用。根据题意,求的是满足 3 位数乘以 3 等于 4 位数乘以 2 的数的个数。我们可以使用循环结构对所有的 3 位数进行判断,若某个 3 位数乘以 3 整除 2 所得的数是 4 位整数,则这个 3 位数足满足条件的数。当判断的数不再是 3 位数或者进行处理后所得的数大于 9999,则要退出循环。在这里,还要注意判断结构中,各条件之问是用“与”运算还是用“或”运算。