C:嵌套嵌套for循环顺序

问题描述 投票:0回答:3

此代码输出:

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"); 
        }
    }
}
c
3个回答
1
投票

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

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

  1. 初始化j = 1并且打印i是1 j是1
  2. 增量j,j现在是2,它大于i,所以返回外部for循环

第二遍:增量i,i = 2进入内部循环

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

等等它一直持续到我增加到6。

您可以通过以下链接了解有关c中for循环使用的更多信息

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

希望它能清除你的怀疑。


0
投票

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

这就是为什么当i为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....
© www.soinside.com 2019 - 2024. All rights reserved.