即使满足条件,while 循环也不会中断

while loop is not breaking even if the condition is satisfied

我创建了一个打印 armstrong 号码的程序,但内部 while 循环没有中断,它应该在值为 0 时中断,但它会进入连续循环。

谁能告诉我我的程序出了什么问题。 这是编译器的正确行为吗?

#include<stdio.h>
int main()
{
        int i=1,n,a=0;
        while(i<=500)
        {
                printf("1st i = %d\n",i);
                while(i > 0)    //This loop is not breaking.
                {
                        printf("2nd i = %d\n",i);
                        n = i%10;
                        printf("n = %d\n",n);
                        a = n*n*n + a;
                        i = i/10;
                        printf ("3rd i = %d\n",i);
                        printf ("a = %d\n",a);
                        if (i==0)
                                break;
                }
                if (a==i)
                        printf("Number is Armstrong");
                i++;
        }
        return 0;
}

请尝试运行程序,它似乎是正确的,但它不工作。

您在两个循环中使用相同的变量 (i),并且在内部循环中,退出条件是 i 为 0 或负数,但内部循环中此变量的唯一变化是 i=i/10与 int.

一起使用时通常会产生意想不到的结果

此外,i 永远不会在外循环中达到 500,因为它在内循环中会减少。我不确定你为什么要这样做,但请检查你是否必须在两个循环中使用相同的变量