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

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

我自己改了一部分了,但是在输出结果的时候,还是不对,想了半天也没想到是哪里还有问题。一下网友
这是题目
在数论中,自幂数(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条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥20 新闻小程序6万人在线
      • ¥15 Fluent轴流风扇模拟
      • ¥15 基于GPS的自行车定位系统设计
      • ¥15 idea中安装matplotlib模块完成,运行还是显示无安装
      • ¥15 robotframework 运行报错
      • ¥60 C# (VS2015) 用HttpWebRequest get 方式 与 post 方式
      • ¥30 yolo侦测mammogram总是没有好结果,求经验
      • ¥380 網頁顯示MT4後台數據
      • ¥20 Pyqt5如何实现对指定窗口调用显示视频信号
      • ¥15 ResNET50修改参数