int a = 0, b = 0, c;
while ( a < 10){
while (b < 10){
c = a * b;
b++;
}
a++;
}
变量 b 正在递增,但 a 没有。 A 保持 0 并且不会改变,直到最后一行它神奇地变成 10,即使 C 在整个循环中都是 0。我错过了什么吗?抱歉我是初学者。
在进入循环之前,您不会重新初始化
b
。应该是:
int a = 0, b = 0, c;
while ( a < 10)
{
b = 0;
while (b < 10)
{
c = a * b;
b++;
}
a++;
}
如果不这样做,那么内循环只会进入一次,因为对于
a
的每次迭代,b
不再是< 10.
当a第一个a++时,b已经变成10了。内层looper永远不会再进入。我猜你在内循环中打印了这两个变量。所以你会看到停留 0,并在 2while 循环后弹出到 10。
请运行代码,您就会得到它。问题是,一旦
second
while 循环开始,b'a 值就会变成 b=10
。因此,当外循环运行a =1
(第二次)时,此时b=10
,因此内循环条件失败。
#include <stdio.h>
void main()
{
int a = 0, b = 0, c;
while ( a < 10){
printf("out: a : %d\tb: %d\tc: %d\n", a,b,c);
while (b < 10){
printf("in: a : %d\tb: %d\tc: %d\n", a,b,c);
c = a * b;
b++;
}
a++;
}
printf("a : %d\tb: %d\tc: %d\n", a,b,c);
}
You need to reinitialize the b's value every time when it goes to inner loop
我建议你在第一个 while 循环中做。 打印所有变量。并在外循环中执行相同的操作以确认您的值。
int a = 0, b = 0, c;
while ( a < 10){
while (b < 10){
c = a * b;
b++;
printf("Inner Loop :\n");
printf("value of a :%d; value of b :%d;value of c :%d\n",a,b,c);
}
a++;
printf("OuterLoop :\n");
printf("value of a :%d; value of b :%d;value of c :%d\n",a,b,c);
}