Jimmy小站

小明也有大梦想 — 蒋明/铭
当前位置:网站首页 / C语言基础题 / 正文

4.2.4 编程题《水仙花数》

2015-08-30 / C语言基础题 / 4977 次围观 / 0 次吐槽

【问题描述】

输入两个正整数mnm≥1n≤1000),输出mn之间的所有水仙花数水仙花数是指各位数字的立方和等于其自身的数例如,153的各位数字的立方和是13+53+33 =153

【输入形式】

从键盘输入两个正整数mn

输入输出样例1(下划线部分表示输入)

Input m: 100

Input n: 400

153

370

371

【样例说明】

输入提示符后要加一个空格。其中“:”后要加一个且只能一个空格。

每行输出一个水仙花数。

英文字母区分大小写。必须严格按样例输入输出。


#include<stdio.h>
#include<math.h>
int main(void)
{
    int m,n,a,b,c,k;
    printf("Input m: ");
    scanf("%d",&m);
    printf("Input n: ");
    scanf("%d",&n);
    for(k=m;k<=n;k++){
        a=k/100;
        b=(k/10)%10;
        c=k%10;
        if(a*a*a+b*b*b+c*c*c==k){
            printf("%d\n",k);
        }
    }
    return 0;
}

我们可以把判断一个数是不是水仙花数做成一个函数,然后再调用,具体如下

#include<stdio.h>
#include<math.h>

int Narcissistic(int k);
int main(void)
{
    int m,n,k;
    printf("Input m: ");
    scanf("%d",&m);
    printf("Input n: ");
    scanf("%d",&n);
    for(k=m;k<=n;k++){
        if(Narcissistic(k) != -1){
            printf("%d\n",k);
        }
    }
    return 0;
}
int Narcissistic(int k){
    int a,b,c;
    a=k/100;
    b=(k/10)%10;
    c=k%10;
    if(a*a*a+b*b*b+c*c*c==k){
        return k;
    }
    return -1;
}


推荐您阅读更多有关于“c语言,”的文章

[一个Java程序猿的转型之路,读研深造,专注机器学习推荐算法]
本站所有文章如无特别注明均为原创。作者:吉米酱 ,复制或转载请以超链接形式注明转自 Jimmy小站
原文地址《4.2.4 编程题《水仙花数》
额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © Jimmy小站 Allrights Reserved.备案号:桂ICP备 15005996