这个while循环为什么不会停止?

怎么改都一直跑出无穷无尽的1....,但是我把while里的放入一个自定义函数就可以

#include<stdio.h>
int main (void)
{
int m,n,number,y,sum;
printf("pls input two number:\n");

scanf("%d%d",&m,&n);

for (number=m;number<=n;number++){
 y=number;
 sum=0;
 while(number>0) {
          sum=sum+(number%10)*(number%10)*(number%10);
          number=number/10;}
 if (sum==y) printf("%d\n",y);

}

return 0;

}

内循环也在修改number
当number==0,外循环又开始循环了

for (number = m; number <= n; number++) {
        y = number;
        sum = 0;

        int temp = number; // 创建一个新变量 temp

        while (temp > 0) {
            sum = sum + (temp % 10) * (temp % 10) * (temp % 10);
            temp = temp / 10;
        }

        if (sum == y) {
            printf("%d", y);
        }
    }

同一个函数中number重复赋值导致

【以下回答由 GPT 生成】

问题分析: 在这段代码中,问题出现在while循环内部的判断条件上。while循环的判断条件是number>0,但在循环内部,number的值被修改为了number/10,也就是经过一次除法运算。由于循环条件一直为真,导致循环无法停止。

解决方案: 要修复这个问题,需要使用一个临时变量来保存循环中需要操作的变量值,而不改变原来的变量值。

下面是修改后的代码示例:

#include<stdio.h>

int main (void)
{
    int m, n, number, y, sum;
    int temp; // 添加一个临时变量来保存循环中number的值
    printf("请输入两个数字:\n");
    scanf("%d%d", &m, &n);

    for (number=m; number<=n; number++){
        y = number;
        sum = 0;
        temp = number; // 将number的值保存到temp中
        while(temp>0) { // 使用temp作为判断条件
            sum = sum+(temp%10)*(temp%10)*(temp%10);
            temp = temp/10;
        }
        if (sum==y)
            printf("%d\n", y);
    }

    return 0;
}

通过在循环中添加一个临时变量temp来保存number的值,可以确保循环的判断条件仍然是正确的,修复了while循环不停止的问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^