0
我已经创建了一个程序来打印阿姆斯特朗数,但内部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'在内部while循环内减少 并且在外部while循环中增加。它会在1和0之间以及1和0之间上下跳动......事实上,内部循环总是“休息”。实际上,假如它是,'if(i == 0)break'是无用的,因为它想要从 – Pynchia
中跳出来的条件为外部循环制作一个单独的变量而不是'i'。 – usr2564301
不要忘记在内部循环之前重置'a'。 –