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

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平台中一直显示答案错误,求大佬解答,谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 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);
        }
    }

    点赞 6 评论
  • 剧号 2020-11-18 18:38

    明白了,感谢大佬

    点赞 评论

相关推荐 更多相似问题