此代码输出:
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进入内部循环
第二遍:增量i,i = 2进入内部循环
等等它一直持续到我增加到6。
您可以通过以下链接了解有关c中for循环使用的更多信息
https://beginnersbook.com/2014/01/c-for-loop/
希望它能清除你的怀疑。
这里有两个循环。一个i外循环和一个j内循环。对于每个外部循环,运行j内循环i次,对于内循环的每次迭代,将j递增1。所以当我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....