C:嵌套嵌套for循环顺序

时间:2018-03-03 02:48:56

标签: c

此代码输出:

i is 1 j is 1 

i is 2 j is 1

i is 2 j is 2

除了其他问题,但我的问题与它的开头有关。

我的问题就像您在第二个输出行中看到的那样,i为2,但j仍为1.为什么它们都不是2?

外圈和内圈的主体已经跑了一次。 j不应该增加吗?

它已经打印过一次,所以它第二次运行不应该增加吗?我观看了视频,但我正在努力解决这个问题。

#include <stdio.h>



 int main(void) {

    int i, j;

    for (i=1; i<=5; i++) {

        for (j=1; j<=i; j++) {
            printf("i is %i j is %i",i, j);
            printf("\n"); 
        }
    }
}

3 个答案:

答案 0 :(得分:1)

以下是for循环的执行方式,

第一关: 初始化i = 1进入内部循环

  1. 初始化j = 1并且打印i是1 j是1
  2. 增量j,j现在为2,它大于i,因此返回外部for循环
  3. 第二遍: 增量i,i = 2进入内部循环

    1. 初始化j = 1并且打印i是2 j是1
    2. 增加j,j = 2并且打印i是2 j是2
    3. 增量j,j现在为3,它大于i,因此返回外部for循环
    4. 依此类推,直到我增加到6。

      您可以通过以下链接了解有关c

      中for循环使用的更多信息

      https://beginnersbook.com/2014/01/c-for-loop/

      希望它能清除你的怀疑。

答案 1 :(得分:0)

这里有两个循环。一个i外循环和一个j内循环。对于每个外部循环,运行j内循环i次,对于内循环的每次迭代,将j递增1。所以当我2为例时,你的j内循环运行2次。并且j内部循环总是从j = 1开始,因为循环在外部循环的每次迭代中都被重新初始化(因为你设置了j = 1);

这就是为什么当i为2时你看到两条打印线,因为内循环执行了2次。

答案 2 :(得分:0)

for (i=1; i<=5; i++) {

    for (j=1; j<=i; j++) {
        printf("i is %i j is %i",i, j);
        printf("\n"); 
    }
}

i = 1
    j = 1
        print msg
    j = 2, j is greater than i, stop inner loop

i = 2
    j = 1
        print msg
    j = 2
        print msg
    j = 3, j is greater than i, stop inner loop

and so on....