关于C循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 03:18:45
pp(int m)
{
int a,k,s=0;
while(m!=0)
{
a=m%10;
m=m/10;
s+=a*a*a;
}
return(s);
}
main()
{
int i,n;
for(i=1;i<1000;i++)
{
n=pp(i);
if(n==i)
printf("%5d",n);
}
}
通过调用函数在TC2上可以编译通过!

但是不调用函数就出现错误,看下面:
main()
{
int a,k,i,s,m;
for(i=1;i<1000;i++)
{
m=i;s=0;
while(i!=0)
{
a=i%10;
i=i/10;
s+=a*a*a;
}
if(m==s)
printf("%5d",s);
}
}
请问下面的错在哪里! 谢谢!

你的for是通过i来控制循环的,而你在while里面不断的修改i,多看看就会明白,在while后i必然为0,最后i++导致i=1,所以在这个for循环中,i永久为1....

m=i;s=0;
while(i!=0) // 从这里开始,将i修改为m就可以了,你的本意也就是用m来代替i进行操作的....
{
a=i%10;
i=i/10;
s+=a*a*a;
}
if(m==s) // 上面修改后,这里用i去比较s

你的函数有返回值,但是没有声明函数的类型
你的是 pp(int m)

把它改成:
int pp(int m)

看看,如果还有问题发个补充