求所有水仙花数,帮忙看一下哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/29 07:07:08
main()
{
int x,a,b,c;
x=100;
while(x<=999)
{a=x/100;
b=(x-a*100)/10;
c=x-a*100-b*10;
if(a*a*a=b*b*b+c*c*c==x)
printf(%d\n",x);
}
}
还有除了这种方法外还有其他好的方法吗?各位高手帮忙看一下

1. 首先你这程序中少了x++;这条语句,会进入死循环的
2. if(a*a*a=b*b*b+c*c*c==x) "等号"写错了,改成 if(a*a*a+b*b*b+c*c*c==x)
3. printf(%d\n",x); 少了个双引号 改成 printf("%d\n",x);

还有除了这种方法外还有其他好的方法吗?
算法部分可以改改
a=x/100;
b=(x-a*100)/10;
c=x-a*100-b*10;
改成
a=x/100;
c=x%10; //求余数,得到个位数,
b=x/10; //去掉个位数,
b=b%10; //求余数,得到十位数,

我用循环写了个程序,可以参考下:
#include<stdio.h>
int main()
{
int i,a,b,c;
for(i=100;i<=999;++i)
{
a=i%10;
b=i/100;
c=i/10;
c=c%10;
if(a*a*a+b*b*b+c*c*c==i)printf("%d\n",i);
}
getch();
return 0;
}

#include"stdio.h"
main()
{
int x,a,b,c;
x=100;
while(x<=999)
{a=x/100;
b=(x-a*100)/10;
c=x-a*100-b*10;
if(a*a*a+b*b*b+c*c*c==x) //=变成+
printf("a=%d,b=%d,c=%d,x=%d\n",a,b,c,x); //少个;号
x++;//要有自加,没有他数据不更新
}
}