《编程题》循环语句的使用:编程求“水仙花数”

编程求“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=1m³ + 5m³ + 3m³。

 

提示:要学会用循环语句,用电脑一个数字一个数字不停的运算,然后把100~999里面所有符合条件的数给打印出来。

答案是:

153

370

371

407

 

解法一:一个do_while循环的代码:

#include <iostream>


int main(int argc, const char * argv[]) {
    
    // 以三位数为主的解法 //
    int one,two,three = 0;
    int i = 100;
    int tmp = 0;
    
    do{
        tmp = i;
        // 获得百位数 //
        one = tmp/100;
        
        // 获得十位数 //
        tmp = tmp%100;
        two =tmp/10;
        
        // 获得个位数 //
        three = tmp%10;
        
        tmp = one*one*one;
        tmp += two*two*two;
        tmp += three*three*three;
        
        if(i == tmp)
        {
            // 打印输出结果 //
            std::cout<<i<<"\n";
        }
        
        ++i;
    
    }while(i<1000);
    
}

 

解法二:三个for循环的解法

#include <iostream>


int main(int argc, const char * argv[]) {
    
    int vLeft = 0;
    int vRight = 0;
    
    for(int i = 1;i<10;++i)
    {
        for(int j = 0;j<10;++j)
        {
            for(int k = 0;k<10;++k)
            {
                vLeft = i*100+j*10+k;
                vRight = i*i*i;
                vRight += j*j*j;
                vRight += k*k*k;
                
                if(vLeft == vRight)
                {
                    // 打印输出结果 //
                    std::cout<<vLeft<<"\n";
                }
            }
        }
    }
}

 

posted @ 2016-07-17 10:51  看代码`lookdaima.com  阅读(1604)  评论(0编辑  收藏  举报