C:嵌套嵌套的循环顺序

  • 本文关键字:嵌套 顺序 循环 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"); 
        }
    }
}
下面是

你的 for 循环的执行方式,

第一遍:初始化 i=1 转到内部 for 循环

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

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

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

依此类推,直到 i 增加到 6。

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

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

希望它能消除你的疑虑。

这里有两个循环。 一个 i 外循环和一个 j 内循环。 对于每个 i 外部循环,您运行 j 内部循环 i 乘以 j 乘以 1 对于内部循环的每次迭代。 因此,例如,当 i 为 2 时,您的 j 内部循环运行 2 次。 j 内循环总是以 j=1 开头,因为循环会在外循环的每次迭代中重新初始化(因为你设置了 j=1(;

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

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....

最新更新