我是一个编程新手。你能解释一下c语言循环代码中循环背后的逻辑吗?更准确地说:
我没有在我的代码中得到循环发生的顺序。
。如果我输入code size: 1,即使有两个for循环,也只会出现一个#,所以它们不应该分别打印出#,这样总共就有两个标签了吗?
。当我输入2时,终端给出了4个标签,我得到了。因为从我的逻辑来看,每个for循环都会创建两个标签(一次是当每个整数等于0时,第二个是当整数相加++并等于1时(它停止)
。当我输入3时,终端给出9个标签,我没有再得到,因为在我的脑海中,每个for循环应该给我们3个标签,所以总共6个(整数=0然后1然后2)
那么,我的问题是这里的顺序是如何发生的?如果你能解释一下我举的一个例子,我想我就能听懂了。
很抱歉这么长,希望我的问题是清楚的。
代码:
int main(void)
{
int n;
do
{
n = get_int("Size: ");
}
while (n < 1);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("#");
}
}
}
当您有嵌套循环时,对于外部循环的每次迭代,内部循环将执行其所有迭代。
所以发生的不是循环迭代的和,而是乘积。在你的例子中,1x1= 1,2x2 = 4,3x3 =9。
这就是你的代码对任何n值所做的事情-它一直计算到n然后对于每一个i,它从j算到n。正如你所看到的,对于每一个n,你再次计数n次,结果是n^2次操作。因此,对于n=3,您将得到9个哈希值。
for循环的本质是这样的:索引从0开始,一些代码被执行,直到索引达到一个值。在这种嵌套循环的情况下,执行的代码本身就是另一个for循环。以n = 3为例,序列如下:
First iteration of the first loop: i = 0
First iteration of the second loop: j = 0
Second iteration of the second loop: j = 1
Third iteration of the second loop: j = 2
Second iteration of the first loop: i = 1
First iteration of the second loop: j = 0
Second iteration of the second loop: j = 1
Third iteration of the second loop: j = 2
Third iteration of the first loop: i = 2
First iteration of the second loop: j = 0
Second iteration of the second loop: j = 1
Third iteration of the second loop: j = 2
希望这能澄清问题,欢迎来到美妙的编程世界!:)
你的困惑是因为你认为它们是一个循环在另一个循环之后,而不是一个循环在另一个循环中。
When `i` is `0`, j is going to do `0`, `1`, `2`
When `i` is `1`, j is going to do `0`, `1`, `2`
When `i` is `2`, j is going to do `0`, `1`, `2`
等于9。
你在做3+3=6的数学运算,但你写的代码是3*3=9。