[求助]求“水仙花数”!
main()
{ int a=1,b=1,c=1,sum=0;
while(sum<1000)
{
sum=a*a*a+b*b*b+c*c*c;
if(sum=a*100+b*10+c)
printf("%d\n",sum);
a++;
b++;
c++;
}
printf("%d\n",sum);
}
这个程序为什么错哦?新手不太明白!
407=4*4*4+0*0*0+7*7*7
搜索更多相关的解决方案:
水仙花数
----------------解决方案--------------------------------------------------------
逻辑错误,思路错误
----------------解决方案--------------------------------------------------------
不是吧!!你说的太简单了!!说详细点啊!新手肯定不懂的啊!
----------------解决方案--------------------------------------------------------
对照下就明白了(本来不想写,可现在论坛人少)
[CODE]
#include <stdio.h>
int main(void)
{
int i,m,n,k;
for(i=100;i<1000;i++)
{
m=i%10; /*个位*/
n=i/100; /*百位*/
k=i%100/10; /*十位*/
if(m*m*m+n*n*n+k*k*k==i)
printf("%5d",i);
}
return 0;
}
[/CODE]
----------------解决方案--------------------------------------------------------
明白了!!!谢谢!!我是新手请你说明白点哦!
逻辑错误,思路错误
----------------解决方案--------------------------------------------------------
/*题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。例如:153是一个“水仙花数”?
因为153=1的三次方+5的三次方+3的三次方 求100~999之间的水仙花数*/
# include<stdio.h>
int main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
for(a=0;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if((a*100+b*10+c==i)&&(a*a*a+b*b*b+c*c*c==i))
printf("%d shi ge shui xian hua shu!\n",i);
getch();
}
这个是我最近编的求水仙花数的和序,
有点笨重!但是能得出正确结果啊!
----------------解决方案--------------------------------------------------------
以下是引用yuliu00在2006-4-14 23:40:00的发言:
main()
{ int a=1,b=1,c=1,sum=0;
你在刚开始就给a,b,c赋了初值
循环里每次都是这个值了!
我自己想的!
自学 没办法!
说错了请见谅啊!
----------------解决方案--------------------------------------------------------
/*名称:水仙花数 作者:谁犹寒*/
#include"stdio.h"
#define M 1000
main()
{
int a,b,c,m;
for(a=0;a<=9;a++)
for(b=0;b<=9;b++)
for(c=1;c<=9;c++)
{
m=100*a+10*b+c;
if(m==a*a*a+b*b*b+c*c*c)
printf("%d\n",m);
}
getch();
}
----------------解决方案--------------------------------------------------------
为什么定义a=1,b=1,c=1
如果这样怎么能得到407
我看4楼的思路挺好
----------------解决方案--------------------------------------------------------
if(sum==a*100+b*10+c)少了个等号吧!
----------------解决方案--------------------------------------------------------