峰C 发表于 2020-5-29 11:06:15

C语言程序设计中关于for语句循环

#include <stdio.h>

void main()
{

        int i, j, k;
        printf("i j k\n");
        for(i = 0; i < 2; i++)
                for(j = 0; j< 2; j++)
                        for(k = 0; k < 2; k++)
                                printf("%d %d %d\n",i, j, k);
}
         能解释一下这些逻辑吗?

CodingCat_k 发表于 2020-5-29 11:37:05

这是嵌套循环,最内层的语句执行次数由所有外层循环语句执行次数乘积决定。
把第一个for后面一个for都当成它的一个子语句,然后同样的思维看中间的for,形成一个套娃

峰C 发表于 2020-5-29 11:40:14

CodingCat_k 发表于 2020-5-29 11:37
这是嵌套循环,最内层的语句执行次数由所有外层循环语句执行次数乘积决定。
把第一个for后面一个for都当成 ...

还是不懂{:5_99:}

CodingCat_k 发表于 2020-5-29 11:56:18

峰C 发表于 2020-5-29 11:40
还是不懂

单层for循环知道什么意思吧,
嵌套循环就是在for循环里面又有一个for循环;
然后假设最外面的for执行N次循环,它里面的第一个for执行M次循环,
则里面的for循环里面的语句要执行M*N次

heidern0612 发表于 2020-5-29 11:58:03

峰C 发表于 2020-5-29 11:40
还是不懂

for循环你就想象成简单的循环。

由于这个循环嵌套是由外往里执行的,只有里面的执行完毕了,外面的才会执行。

假设嵌套了3层循环,最外面标注循环1层,中间标注循环2层,里面标注循环3层:

下面的逻辑就类似时钟的时针、分针、秒针了,假设所有for循环都是执行5次。

最里面循环3层循环(秒针)5次了,循环2层(分针)才循环一层;

而循环三层循环了5*5次(秒针),循环2层(分针)才循环5次;循环1层(时针)才循环1次;

也就说,嵌套几层循环,最里面的代码就执行了本身循环次数*循环层数。

大致就是这个道理。

峰C 发表于 2020-5-29 12:17:47

heidern0612 发表于 2020-5-29 11:58
for循环你就想象成简单的循环。

由于这个循环嵌套是由外往里执行的,只有里面的执行完毕了,外面的才 ...

还有一点不懂,for嵌套是从里面往外面循环,那从外往执行是什么意思

heidern0612 发表于 2020-5-29 12:42:42

峰C 发表于 2020-5-29 12:17
还有一点不懂,for嵌套是从里面往外面循环,那从外往执行是什么意思

里面的执行完了,程序不得退出当前循环么?

那不就接着执行外层的循环了么?

峰C 发表于 2020-5-29 12:51:48

heidern0612 发表于 2020-5-29 12:42
里面的执行完了,程序不得退出当前循环么?

那不就接着执行外层的循环了么?

已懂,刚刚在脑子里想了一下编译过程

heidern0612 发表于 2020-5-29 13:03:21

峰C 发表于 2020-5-29 12:51
已懂,刚刚在脑子里想了一下编译过程

要是还是不太清楚,可以就先套一层for循环,只有内外层嵌套运行一遍,应该就明白原理了。
页: [1]
查看完整版本: C语言程序设计中关于for语句循环