此代码输出:
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");
}
}
}
答案 0 :(得分:1)
以下是for循环的执行方式,
第一关: 初始化i = 1进入内部循环
第二遍: 增量i,i = 2进入内部循环
依此类推,直到我增加到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....