「题目讲解」C语言 使用函数判断水仙花数 求范围内的所有水仙花数

题目内容

  1. 写两个函数
  2. 函数narcissistic,传入一个值,用于判断输入的数是不是水仙花数,是水仙花数返回1,否则返回0
  3. 函数PrintN,传入两个值,求开区间范围内所有水仙花数

注1:题目中保证100≤m≤n≤10000
注2: 水仙花数:一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身
eg: 153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3

测试程序样例

#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;
}

在程序后面完成自己的函数

输入样例

153 400

输出样例

153 is a narcissistic number
370
371

注 题目来源:浙大版《C语言程序设计(第3版)》题目集

解题思路

观察题目,输入和输出样例,可知printN函数的两端是开区间,会帮我们判断两端是否是水仙花数,且数字后有"is a narcissistic number",我们的函数只需输出数字
再观察程序头部和主函数,printN函数的类型是void,主函数中也没有关于printN的输出语句,因此我们的printN函数不需要return,而是在函数中直接输出
我们可以通过在printN函数中调用narcissistic函数,将所有结果是1的数进行输出来完成寻找水仙花数
而narcissistic函数需要我们把一个三位数或者四位数的每一位拆开进行,进行幂运算,判断这个数是不是水仙花数,而要把每一个数拆开,我们要先判断这个数是几位数

柿子挑软的捏(doge),所以咱可以先写printN函数

void PrintN( int m, int n )
{
   
  int i;
  for(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值