一段C程序,输出所有水仙花数。水仙花数即一个三位数,每一位的三次方只和为该数本身 。

2025-02-23 05:18:32
推荐回答(4个)
回答1:

你这个程序错就错在while(a<=9,b<=9,c<=9)
其实while()里面每一次做的只是c<=9这个,前面的都没有做!
下面这个是我做的,你可以看一下:
#include

void main()

{int a,b,c,n;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++){
n=a*a*a+b*b*b+c*c*c;
if(n==100*a+10*b+c)
printf("%d,%d,%d,%d\n",a,b,c,n);
}
getch();

}
希望能对你有帮助!

回答2:

这个循环……很囧……你没发现你每次循环a,b,c都是同步增加的么?……更有趣的是,你的循环结束后才来做测试(也就是说,只测试了一次)

推荐的方法(主体)
for(i=100; i<1000; i++)
{a = i/100; b = i/10%10; c = i%10; if(a*a*a+b*b*b+c*c*c == i) printf("%d\n", i);}

回答3:

#include
void main()
{
int a,b,c,d,f;
for(a=100;a<=999;a++){
b=a%10;
c=a%100;
c=c/10;//这儿有误!这儿有误!这儿有误!这儿有误!这儿有误!
d=a/100;
f=pow(b,3.0)+pow(c,3.0)+pow(d,3.0);//VC++ 2005 中,3改为3.0
if(a==f)//判断用==号;判断用==号;判断用==号;判断用==号;判断用==号;
printf("%d\n",a);
}
}

回答4:

#include "math.h"
int main(){

int a=0,b=0,c=0,i;
for(i=100;i<=999;i++){
a=i/100;
b=(i-a*100)/10;
c=i%10;
if((pow(a,3)+pow(b,3)+pow(c,3))==i)
printf("%d\n",i);

}
getch();
return 0;
}