请教高手关于水仙花数c代码的问题!

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:22:22
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
本人实现代码如下:
#include <stdio.h>

main()
{
int sum,k,n,m,i=1;
sum=0;

for(i=1;i<10000;i++)
{

for(n=i;n!=0;n=n/10)
{
k=n%10;
sum=sum+k*k*k;
}
if(sum==i)
printf("%d是水仙花数!\n",i);

}
}

以上代码可以通过编译,但是只能输出1这么一个,数输出不了153,370,371之类的数,本人估计是for循环的问题,如果把初始i设置为153,那么就会只输出153!请高手指教程序的问题!

sum=0应该放在第一个for里.
得改成

main()
{
int sum,k,n,m,i=1;

for(i=1;i<10000;i++)
{
sum=0;
for(n=i;n!=0;n=n/10)
{
k=n%10;
sum=sum+k*k*k;
}
if(sum==i)
printf("%d是水仙花数!\n",i);

}
}