标准五个字 2022-03-23 16:27 采纳率: 100%
浏览 62
已结题

改错题,一个水仙花数的代码改错。

我自己改了一部分了,但是在输出结果的时候,还是不对,想了半天也没想到是哪里还有问题。一下网友
这是题目
在数论中,自幂数(Narcissistic number)用来描述一个N位非负整数,其各个位数字的N次方和等于该数本身。我们熟悉的水仙花数只是自幂数的一种,严格来说三位数的3次幂数才称为水仙花数。编写一个程序输入一个正整数,判断是不是自幂数。
注意:
(1)用标准 C 语言编程,所有变量必须在第一条可执行语句前定义。
(2)输入输出格式要和以下给定格式完全一致,建议拷贝粘贴输入输出格式。
输入格式:"Enter a number to verify if it is an Narcissistic number: %d"
如果n不满足题目要求的条件,则输出"Error!\n",并重新输入,直到合格为止(不考虑非法字符输入的情况)
输出格式: " Is %d an Narcissistic number? : %s\n "
运行示例 1:
-10
Error!
运行示例 2:
407
Is 407 an Narcissistic number? :true
运行示例 3:
1633
Is 1633 an Narcissistic number? :false
代码如下:
下面是我修改了一部分的代码。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int getNumberOfDigits(int n);
bool isNarcissisticNumber(int candidate);

int main()
{
    int userNumber = 0;
    do
    {
        printf("Enter a number to verify if it is an Narcissistic number: ");
        scanf("%d",&userNumber);
        if (userNumber < 0)
            printf("Error!\n");
    } while (userNumber <= 0);
    if (isNarcissisticNumber(userNumber))
        printf("Is %d an Narcissistic number?: true\n", userNumber);
    else
        printf("Is %d an Narcissistic number?: false\n", userNumber);
    return 0;
}
bool isNarcissisticNumber(int candidate)
{
    int numberOfDigits = getNumberOfDigits(candidate);
    int sum=0;
    for (int i = candidate; i != 0; i /= 10)
    {
        int num = i % 10;
        int n=1;
        for (int j = 0; j < numberOfDigits; j++)
        {
            n *= num;
        }
        sum += n;
    }
    return sum == candidate ? 1 : 0;
}
int getNumberOfDigits(int n)
{
    if (0 <= n && n <= 9)
        return 1;
    else
        return getNumberOfDigits(n/10) ;
}

我感觉可能是在位数判断的那块有问题,但是我不太清楚,求帮帮忙

  • 写回答

4条回答 默认 最新

  • 关注

    getNumberOfDigits函数else部分写错了,递归时应该+1,代码如下:

    
    int getNumberOfDigits(int n)
    {
        if (0 <= n && n <= 9)
            return 1;
        else
            return getNumberOfDigits(n / 10)+1;
    }
    

    修改后运行结果:

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题