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