下列程序有错吗

来源:百度知道 编辑:UC知道 时间:2024/05/05 00:55:13
#include <stdio.h>
int cnt,sum;

void countvalue()
{
int a,b,c,d,i;
for(i=1000;i<=5000;i=i+1)
a=i/1000;
b=(i%1000)/100;
c=i%100/10;
d=i%10;
if(c+d==b+a&&a+b==(d-a)*10)
{
cnt=cnt+1;
sum=sum+i;
}
}
void main()
{
cnt=sum=0;
countvalue();
printf("满足条件的自然数是=%d/n",cnt);
printf("满足条件的自然数的和=%d/n",sum);
}
所求解的问题是选出5000以下的自然数,满足条件是千位数和百位数的和等于十位数与个位数的和,且千位数字与百位数字的和等于个位数字与千位数字之差的十倍,计算并输出这些数的个数和这些数的和

for(i=1000;i<=5000;i=i+1)
a=i/1000;
b=(i%1000)/100;
c=i%100/10;
d=i%10;
if(c+d==b+a&&a+b==(d-a)*10)
{
cnt=cnt+1;
sum=sum+i;
}
for少了括号,只相当于:
for(i=1000;i<=5000;i=i+1)
a=i/1000;

修改:
for(i=1000;i<=5000;i=i+1)
{
a=i/1000;
b=(i%1000)/100;
c=i%100/10;
d=i%10;
if(c+d==b+a&&a+b==(d-a)*10)
{
cnt=cnt+1;
sum=sum+i;
}
}