6-3 寻找水仙花数(递归)

6-3 寻找水仙花数(递归)

分数 10

全屏浏览

切换布局

作者 李祥

单位 湖北经济学院

所谓水仙花数,它是一个 3 位数,其每位数字的 3 次幂之和等于它本身。

例如:

13+53+33=153,因此 153 是水仙花数。

13+53+43=190,因此 154 不是水仙花数。

请编写函数,输出指定范围内的水仙花数。

函数原型

void FindNarc(int lower, int upper);

说明:参数 lower 和 upper 为指定范围的下限和上限。若 lower ≤ upper,则函数将按由小到大的顺序输出 lower 到 upper 范围内的水仙花数,否则不输出任何信息。

裁判程序

#include <stdio.h> ...... void FindNarc(int lower, int upper); int main() { int min, max; scanf("%d %d", &min, &max); FindNarc(min, max); putchar('\n'); return 0; } ...... /* 你提交的代码将被嵌在这里 */

要求:利用前面作业中编写的 IsNarc 函数判断水仙花数。

输入样例1
300 400

输出样例1
370
371


输入样例2
500 600

输出样例2


关联习题:判断水仙花数。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

int IsNarc(int x){
    int i=x;
    int d,sum=0;
    if(x>999||x<100){
        return 0;
    }
    else{
        while(x>0){
            d=x%10;
            sum+=Cube(d);
            x/=10;
        }
        if(sum==i){
            return 1;
        }else{
            return 0;
        }
    }
}
void FindNarc(int lower, int upper)
{
    if (lower <= upper)
    {
        FindNarc(lower, upper - 1);
        if (IsNarc(upper))
        {
            printf("%d\n", upper);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值