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

求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++;
        }
    
    点赞 打赏 评论

相关推荐 更多相似问题