即使满足条件,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,因为它在内循环中会减少。我不确定你为什么要这样做,但请检查你是否必须在两个循环中使用相同的变量
我创建了一个打印 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,因为它在内循环中会减少。我不确定你为什么要这样做,但请检查你是否必须在两个循环中使用相同的变量