P1TayA 2021-11-04 20:27 采纳率: 71.4%
浏览 24
已结题

大家看一下这两个代码有什么区别,为什么输出不一样,问题是求水仙花数

这是正确的


#include <stdio.h>

#include <math.h>

int main()
{
    int n,j,i;
    double start,reigon;
    scanf("%d",&n);
    start=pow(10,n-1);
    reigon=pow(10,n);
    for(i=start;i<reigon;i++)
    {
        int sum=0,temp=i;
        while(sum<=i&&temp!=0)
        {
            int mod=temp%10;
            int k=1;
            for(j=1;j<=n;j++)
                k=k*mod;
            sum=sum+k;
            temp /=10;
        }
        if(sum==i)
            printf("%d\n",i);
    }
    return 0;
}

这是错误的


#include <stdio.h>

#include <math.h>

int main()
{
    int n,j,i;
    double start,reigon;
    scanf("%d",&n);
    start=pow(10,n-1);
    reigon=pow(10,n);
    for(i=start;i<reigon;i++)
    {    int sum=0;
        int temp=i;
        while(sum<=i&&temp!=0)
        {
            int mod=temp%10;
            int k=1;
            for(j=1;j<=n;j++)
                k*=mod;
            sum+=k;
            temp/=10;
            
        }
        if(sum==i);
            printf("%d\n",sum);
    }
    return 0;
}

我实在找不出这两段代码有什么区别

  • 写回答

2条回答 默认 最新

  • a5156520 2021-11-04 20:37
    关注

    区别在这里:
    正确的: if(sum==i)
    printf("%d\n",i);

    错误的:
    if(sum==i);
    printf("%d\n",sum);

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

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月4日