6-1 使用函数输出水仙花数 (20分)

 

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​3​​+5​3​​+3​3​​。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。

函数接口定义:

int narcissistic( int number );
void PrintN( int m, int n );

函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。

函数PrintN则打印开区间(mn)内所有的水仙花数,每个数字占一行。题目保证100≤mn≤10000。

裁判测试程序样例:

#include <stdio.h>

int narcissistic( int number );
void PrintN( int m, int n );

int main()
{
    int m, n;

    scanf("%d %d", &m, &n);
    if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
    PrintN(m, n);
    if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:


                
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这道题要求我们使用函数输出水仙花数水仙花数是指一个三位数,其各个位数立方和等于该数本身。我们可以使用循环和判断语句来实现,具体步骤如下: 1. 定义一个函数,命名为 narcissistic_number。 2. 在函数内部,使用 for 循环遍历从 100 到 999 的所有三位数。 3. 在循环内部,使用 if 判断语句,判断当前的数是否是水仙花数。 4. 如果是,使用 print 函数输出该数。 5. 最后,在函数外部调用该函数即可。 下面是完整的代码实现: def narcissistic_number(): for i in range(100, 1000): x = i // 100 # 获取百位数字 y = i // 10 % 10 # 获取十位数字 z = i % 10 # 获取个位数字 if i == x ** 3 + y ** 3 + z ** 3: print(i) narcissistic_number() ### 回答2: 水仙花数(Narcissistic number)又称自恋数、自幂数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:153 = 1^3 + 5^3 + 3^3。 利用函数输出水仙花数,需要用到循环和if语句。 首先,我们可以定义一个函数函数名可以叫做narcissistic_number,接收一个整数参数n,这个参数表示要查询几位数的水仙花数。例如,当n=3时,就要查询3位数的水仙花数。 然后,我们在函数内部使用循环遍历所有可能的n位数,并使用if语句判断是否为水仙花数。如果是,就输出水仙花数。具体实现如下: ``` def narcissistic_number(n): for i in range(10**(n-1), 10**n): num = i result = 0 while num > 0: digit = num % 10 result += digit ** n num //= 10 if result == i: print(i) ``` 在函数中,我们使用了range函数生成所有可能的n位数,并使用while循环计算每个数的“各位数的n次幂之和”。最后,我们使用if语句判断计算结果是否与原数相等,如果相等就输出水仙花数。 调用该函数时,只需输入一个参数n即可。例如,要查询3位数的水仙花数,就可以这样调用:narcissistic_number(3)。 当我们运行上述代码后,就能够输出所有3位数的水仙花数了。如果想查询其他位数的水仙花数,只需输入不同的参数n即可。 ### 回答3: 水仙花数是一个三位数,它的各位数字的立方和等于该数本身。例如,153 是一个水仙花数,因为 $1^3 + 5^3 + 3^3 = 153$。 要使用函数输出水仙花数,可以定义一个函数,该函数接受一个整数作为参数,判断该整数是否为水仙花数,并将判断结果输出函数的基本框架如下: ``` def is_narcissistic_number(num): # 判断 num 是否为水仙花数 # 如果是,返回 True;否则,返回 False ``` 在函数中,我们可以利用整数的取余和整除运算,离出该数的各位数字,并计算它们的立方和。最后,将立方和与原数比较即可得到判断结果。 完整的函数代码如下: ``` def is_narcissistic_number(num): # 判断 num 是否为水仙花数 # 如果是,返回 True;否则,返回 False digit3 = num % 10 # 取个位数字 digit2 = num // 10 % 10 # 取十位数字 digit1 = num // 100 # 取百位数字 if digit1 ** 3 + digit2 ** 3 + digit3 ** 3 == num: return True else: return False ``` 使用函数输出所有三位水仙花数的代码如下: ``` for i in range(100, 1000): if is_narcissistic_number(i): print(i) ``` 该代码依次遍历所有三位数,对每个数调用 is_narcissistic_number 函数进行判断,如果是水仙花数输出该数。运行结果如下: ``` 153 370 371 407 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值