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

我自己做了一个习题,求三位数的水仙花数,想用调用的方式把他输出,可是 bulid 的时候是没有错误,但是却没有结果

t120653918 发布于 2014-07-20 16:22, 595 次点击
#include<stdio.h>
#include<math.h>
int shuixian(int n)
{
    int a,b,c;
    for(n=100;n<=100;n++)
        a=n%100;
    b=n/10%10;
    c=n%10;
    if(n==(pow(a,3))+(pow(b,3))+(pow(c,3)))
    {return 1;}
    else {return 0;}
}
void main()
{
    int k;
    if(shuixian(k))
        printf("水仙花数有:",k);
}
6 回复
#2
wp2319572014-07-21 07:11
感觉不像C代码  更不是c++
#3
rjsp2014-07-21 08:13
程序代码:
#include <cstdio>

bool shuixian( unsigned n )
{
    unsigned a = n/100;
    unsigned b = n/10%10;
    unsigned c = n%10;
    return n == a*a*a + b*b*b + c*c*c;
}

int main()
{
    for( unsigned n=100; n<=999; ++n )
    {
        if( shuixian(n) )
            printf( "%u\n", n );
    }

    return 0;
}
#4
t1206539182014-07-21 09:05
回复 3 楼 rjsp
谢谢,求次幂的时候不觉得用POW比较好么
#5
t1206539182014-07-21 09:17
回复 3 楼 rjsp
不过运行出来还是没有结果哦
#6
ydh_wu2014-07-21 13:38
#include<stdio.h>
int shuixianhua(int n){
    int a,s,i;
    s=0;
    i=n;
    for(a=n%10;n!=0;)
    {
        s+=a*a*a;
        n/=10;
        a=n%10;
    }
    if(s==i)
        return i;
    return 0;
}
void main(){
    for(int i=100;i<1000;i++)
        if(shuixianhua(i))
            printf("%d ",i);
}


   
#7
lightyagami2014-07-23 17:34
自己做的,学的是c++,将就看

way1
#include <iostream>
using namespace std;

int main ()
{
   int a,b,c,y,x;
   
   for (x=100;x>99 && x<1000; x++)
       {a=x/100;
        y=x/10;
        b=y%10;
        c=x%10;
        if (x==a*a*a+b*b*b+c*c*c)
         cout<<x<<endl;}
   //system ("pause");
   return 0;
}   

way2
#include <iostream>
using namespace std;
int main ()
{
    int a,b,c,x=0;
    for(a=1;a<=9;a++)
        for(b=0;b<=9;b++)
            for(c=0;c<=9;c++){
               int x=a*100+b*10+c;
               if (x==a*a*a+b*b*b+c*c*c)                  
    cout<<x<<endl;}
    //system ("pause");
    return 0;
}   


1