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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

标准版:
#include<stdio.h>
//要求:输出三位数的水仙花数
int main(){
    int a, b, c, num;
//    遍历所有三位数
    for(num=100; num<1000; num++){
//        求百位上的数
        a = num/100;
//        求十位上的数
        b = (num%100)/10;
//        求个位上的数
        c = num%10;
//        比较各位上的数的立方和是否等于本身
        if(num == a*a*a+b*b*b+c*c*c){
            printf("%d\n", num);
        }
    }
    return 0;
}

二逼版:
#include <stdio.h>

int main() {
    for(int n=100; n<1000; n++)if(n==(n/100)*(n/100)*(n/100)+((n%100)/10)*((n%100)/10)*((n%100)/10)+(n%10)*(n%10)*(n%10))printf("%d\n", n);
    return 0;
}

1 个回复

倒序浏览

#include<stdio.h>
#include<math.h>
int main (){
    int n,num = 0;
    printf("求N位数的水仙花数 请输入N\n");
    scanf("%d",&n);
    for(int i = pow(10,n-1);i<pow(10,n);i++ ){  //遍历n位数所有数 i
        num = 0;                                //num保存幂求和初始化为0
        for(int k = 1; k<= n ; k++){            //遍历i的每一位
            num = num +pow((int)(i/pow(10,k-1))%10,n);     //求和
        }
        if(num == i)
            printf("%d\n",num);                   //判断是否是水仙花数 是则打印
    }
    return 0;
}

求任意n位数的水仙花数
如果再套一个循环还可以变成1~n位数的水仙花数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马