唯独你没懂wdnmd 2020-10-29 22:32 采纳率: 100%
浏览 159
已采纳

求10000以内的水仙花数,核心程序正确,但循环不下去,只能输出一个1。

只循环一次

#include<stdio.h>
#include<math.h>
int main(void)
{
    int i=1, n, x,len;
    float s=0;


    while(i<1000)
    {
        len=log10(i)+1;//len为i的位数
        x=i;
        while(x>0)
        {
            s+=pow(x%10,len);
            x=x/10;
        }
        if(s==i)
            printf("%d\n", i);
        i++;
    }
}


  • 写回答

1条回答 默认 最新

  • 小学狗喵喵叫 2020-10-30 10:36
    关注

    s没有归零

    int i = 1, n, x, len;
    
        while (i < 10000)
        {
            float s = 0;
            len = log10(i) + 1;//len为i的位数
            x = i;
            while (x > 0)
            {
                s += pow(x % 10, len);
                x = x / 10;
            }
            if (s == i)
                printf("%d\n", i);
            i++;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?