A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zf921103 中级黑马   /  2015-8-3 23:14  /  863 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪位大大知道水仙花数这题目是什么意思啊  我有点看不懂题目的意思

6 个回复

正序浏览
水仙花数就是100~999之间(包括100和999)所有的数字,如果该数的 “百位数的三次方+十位数的三次方+个位数的三次方 = 该数本身×3”,该数字即为水仙花数
给你贴上我的代码你一看就懂了
//利用for循环遍历100~999之间的所有数
for (int i = 100; i <= 999; i++) {
//给你提供一个函数:pow(a,b)就表示数字a的b次方
//i/100表示求该三位数的百位数,i%100/10表示该三位数的十位数,i%10表示该百位数的个位数
//        if (pow(i/100, 3) + pow(i/10, 3) + pow(i%10, 3) == i ) {
//            printf("该数是水仙花数%d\n",i);
//        }
//    }
回复 使用道具 举报
DUKEMAN 来自手机 中级黑马 2015-8-4 15:50:31
地板
fersh 发表于 2015-8-4 00:30
#include
/*
编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身 ...

第二种算法 很精简 {:3_53:}
回复 使用道具 举报
百度一下就可以了,比较好好理解
回复 使用道具 举报
我觉得那些运算的 最好放一放 多学 oc
回复 使用道具 举报
#include<stdio.h>
/*
编程输出1000以内的所有水仙花数,所谓水仙花数是指一个3位数,其各位数字的立方和等于其本身
*/
//第二种算法
void tt(){
    int a=100,x,y,z;
    while (a>=100&&a<=999){
        x=a/100;
        y=(a%100)/10;
        z=a%10;
        
        if(a==x*x*x+y*y*y+z*z*z)
            printf("这是第二种算法的结果:%d\n",a);
        a++;
        
    }
   
}int main(){
    //第二种算法
    int a,b,c;
    for(a=1;a<=9;a++)
        for(b=0;b<=9;b++)
          for(c=0;c<=9;c++)
             if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)
                  printf("这是第一种算法的结果:%d%d%d\n",a,b,c);
    printf("\n\n");
    tt();
    
return 0;
}
回复 使用道具 举报
个位数的三次方+十位数的三次方+百位数的三次方==这个三位数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马