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'。 –