问答题
下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat(),把结果cnt和sum输出到OUT.DAT文件中。
注意:部分源程序已经给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
void countValue()
{
}
void writeDat()
{
FIIE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n%d/n",cnt,sum);
fclose(fp);
}
void main()
{
cnt=sum=0;
countValue();
printf("满足条件的自然数的个数=%d/n",cnt);
printf("满足条件的自然数的个数之和=%d/n",sum);
writeDat();
}
【正确答案】void countValue()
{
int i,thou,hun,ten,data;
for (i=5000;i>=1000;i--)
{ /*循环递减遍历5000~1000之间的数*/
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++; /*计数值cnt加1*/
sum +=i; /*将i累加到sum中*/
sum +=
}
}
}
【答案解析】