C中的内外循环

时间:2014-06-12 08:47:31

标签: c loops while-loop core

int a = 0, b = 0, c;

while ( a < 10){
    while (b < 10){
        c = a * b;
        b++;
    }
    a++;
}

变量b正在增加,但是不是。保持0并且不会改变,直到最后一行它神奇地变为10,即使C在整个循环中为0。我错过了什么吗?对不起,我是初学者。

4 个答案:

答案 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);
}