这段代码输出:
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 循环
- 初始化 j=1 并打印 i 是 1 j 是 1
- 增量 j,j 现在是 2,它大于 i,所以回到外部 for 循环
第二遍:增量 i, i=2 进入内部 for 循环
- 初始化 j=1 并打印 i 为 2 j 为 1
- 增量 j, j=2 和打印 i 为 2 j 为 2
- 增量 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....