剧号 2020-11-17 20:54 采纳率: 50%
浏览 2927
已采纳

C语言PTA习题5-6 使用函数输出水仙花数 (20分)

int narcissistic( int number )
{
    int h,x=number,sum=0;
    while(x>0)
    {
        h=x%10;
        x=x/10;
        sum=sum+h*h*h;
    }
    if(sum==number)
        return 1;
    else
        return 0;
}
void PrintN( int m, int n )
{
    int i;
    for (i=m+1;i<n;i++)
    {
        if(narcissistic(i)==1)
            printf ("%d\n",i);
    }
}

,为啥我在pta平台中一直显示答案错误,求大佬解答,谢谢

  • 写回答

3条回答 默认 最新

  • Y_cen 2020-11-17 23:41
    关注

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

    /* 你的代码将被嵌在这里 */
    int narcissistic( int number )
    {
        int h,x=number,sum=0;
        int count = 0;//位数 
        while(x>0){//计算位数 ,你只考虑了三位数的情况(也可能没看清楚题目?) 
            x/=10;
            count++;
        } 
        x=number;//重置 
        
        while(x>0)
        {
            int k=1;
            for(int i=1;i<=count;i++){//N次幂 
                k*=x%10;
            }
            sum=sum+k;
            x=x/10;
        }
        if(sum==number)
            return 1;
        else
            return 0;
    }
    void PrintN( int m, int n )
    {
        int i;
        for (i=m+1;i<n;i++)
        {
            if(narcissistic(i)==1)
                printf ("%d\n",i);
        }
    }

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

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分