下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些4位自然数的个数cnt及这些数的和sum。请编写函数countValue

admin2010-01-09  24

问题 下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些4位自然数的个数cnt及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数wfiteDAT()把结果cnt和sum输出到文件OUT67.DAT中。
   注意:部分源程序已给出。
   请勿改动主函数main()和写函数writDAT()的内容。
   试题程序:
     #include<stdio.h>
     int 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);
     }

选项

答案void countValue() { int i, thou, hun, ten, data; for (i=5000; 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 && thou+hun==(data-thou) *10) { /*千位数与百位数之和等于十位与个位数之和,且千位数下百位数之和等于 于个位数与千位数之差的10倍*/ cnt++; /*则统计满足条件的数的个数*/ sum+=i; /*将满足条件的数求和*/ } }

解析 本题考查的知识点如下:
   (1)  “%”与“/”的使用。
   (2)判断结构中多个条件的布尔运算。
   (3)循环结构的使用。
   本题要求选出5000以下符合条件的4位数,所以选择范围是1000到5000。这里要借助运算符“%”与“/”将4位数各位上的数拆成独立的数字:将1个4位数整除1000则可得到其千位上的数字,除以1000取余再整除 100则可得百位上的数字,除以100取余再整除10则可得十位上的数字,除以10取余则得个位卜的数字。题巾给出的两个条件都要满足,所以两条件之间用“与”运算。使用循环结构对1000到5000之间的数依次进行上述的处理。
转载请注明原文地址:https://jikaoti.com/ti/eMp7FFFM
0

相关试题推荐
最新回复(0)