解释这个嵌套for循环?

时间:2015-05-23 02:25:42

标签: objective-c for-loop nested-loops

这是创建一个宽度和高度已设置的正方形,并使用短划线将其打印到输出中,并且运行完美;但我似乎并不完全明白第二个和第三个循环正在做什么,并且它的运行情况如何。

- (void)draw {
    for (int w = 1; w <= width; w++) {
        printf("-");
    }

    ***
    for (int h = 0; h <= height; h++) {
        printf("\n");
        printf("|");

        for (int space = 0; space <= width; space++) {
            printf(" ");

        }

        printf("|");
    }
    ***

    for (int w = 1; w <= width; w++) {
        if (w == 1) {
            printf("\n");
        }

        printf("-");

        if (w == width)
            printf("\n");
        }  
    }
}

3 个答案:

答案 0 :(得分:1)

“\ n”表示新行,因此第二个循环开始一个新行,然后打印一个竖线(垂直条)。

for (int h = 0; h <= height; h++) {  
    printf("\n");
    printf("|");

第三个循环打印出一堆空格。

for (int space = 0; space <= width; space++) {  
    printf(" ");

第二个循环然后在框的右边缘打印另一个管道。

printf("|");

第二次循环然后“循环”并重复这一次。

最后一个循环打印一条新行,然后打印一串破折号“ - ”作为底边。

答案 1 :(得分:0)

第一个循环打印出顶部水平虚线。

下一个循环打印每行的两条垂直虚线,首先打印左边的虚线,然后在宽度和打印空间上循环,然后打印右边的短划线。对于正方形高度的每一行都会发生这种情况。

最后,最后一个循环打印出底线的短划线。

答案 2 :(得分:0)

您要问的中间循环基本上是绘制框的左侧和右侧,一个&#39; |&#39;一次,从上到下...它打印第一个|在左侧,然后是一堆空格,然后是第一个|在右侧。然后它向下移动到下一行并重复一遍。

可能更容易想象它:

在第一个循环之后,你会留下这样的东西(假设宽度= 15)

 ---------------

第二次启动后,它会插入一个换行符并在左侧打印一个|管道,让您:

--------------- |

然后内部循环插入宽度为的空间(在此表示为o),并留下这个:

 ---------------
|ooooooooooooooo

插入空格后,右侧绘制了另一个管道,您将离开:

 ---------------
|               |

这将持续height次,直到你离开(假设身高= 5):

 ---------------
|               |
|               |
|               |
|               |
|               |

最后,最后一个循环打印底部,就像顶部:

 ---------------
|               |
|               |
|               |
|               |
|               |
 ---------------