注册 登录
编程论坛 C++教室

这是求从100~999的水仙花数的,但为什么输出的结果不正确呢?

wuchuyuan 发布于 2008-04-14 19:37, 2117 次点击
这是求从100~999的水仙花数的,但为什么输出的结果不正确呢?

#include<iostream.h>
void main()
{int a,b,c,s,p;
for(s=100;s>=100&&s<=999;s++)
{for(a=1;a<=9;a++)
{for(b=0;b<=9;b++)
 {for(c=0;c<=9;c++)
p=a*a*a+b*b*b+c*c*c;
 if(s==p)cout<<p<<endl;}}}
}
5 回复
#2
wuxueyan20082008-04-14 22:42
楼主的算法有问题,看看这个完整的程序,本人亲自编写的。
#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    for(int i=100;i<1000;i++)
    {
        a=i/100;
        b=(i%100)/10;
        c=i%10;
        if(a*a*a+b*b*b+c*c*c==i)
            cout<<i<<endl;
    }
    return 0;
        
}
#3
落叶星空2008-04-25 23:36
水仙花数是指这个数=这个数的百位的三次方+十位的三次方+各位的三次方
#4
lcsqmx2008-04-29 22:33
有点意思!哈哈点
#5
songjianzheng2008-05-01 16:42
我没有运行这个程序,但我想运行结果应该是100到999都输出.问题出在:当你确定一个s时,你用0到9*9*9+9*9*9+9*9*9这个数与其比较,所以所有数都满足
#6
songjianzheng2008-05-01 16:46
不好意思
疏忽了,由于a*a*a+b*b*b+c*c*c不是连续变化的
所以输出的
应该不是连续的数
1