int a = 0, b = 0, c;
while ( a < 10){
while (b < 10){
c = a * b;
b++;
}
a++;
}
变量b正在增加,但是不是。保持0并且不会改变,直到最后一行它神奇地变为10,即使C在整个循环中为0。我错过了什么吗?对不起,我是初学者。
答案 0 :(得分:4)
在进入循环之前,您不会重新启动b
。它应该是:
int a = 0, b = 0, c;
while ( a < 10)
{
b = 0;
while (b < 10)
{
c = a * b;
b++;
}
a++;
}
如果不这样做,那么内部循环将只输入一次,因为对于a
的每次迭代,b
不再是&lt; 10。
答案 1 :(得分:2)
当第一个a ++时,b已经变为10.内部循环器将永远不会再进入。我想你在内循环中打印两个变量。所以你看到一个停留0,然后在2个循环之后弹出10。
答案 2 :(得分:1)
请运行代码,您将获得它。问题是,在循环开始时second
,b&#39;值变为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
答案 3 :(得分:0)
我建议你做的是在第一个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);
}