在C中嵌套for / while循环以进行重复

时间:2020-11-11 06:39:49

标签: c for-loop while-loop

我的目标是打印一个具有用户定义变量的宽度/高度的多维数据集。为什么嵌套在while循环中的for循环可以做到这一点,而while循环(具有不同的计数变量)中的while循环却不能实现呢?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

这个问题的简短答案,第二个示例不显示块,因为在输出一行字符后您无法重置y = 0;。如果与使用for循环进行比较,则每次调用时,内部循环都以y == 0开始。在您的while循环实现中,y永远不会重置。

您的代码的完整实现,需要根据需要重置y

#include <stdio.h>
#include <cs50.h>

void block (void) {
    
    int w = get_int ("What would you like the width/height to be: "),
        x = 0,
        y = 0;
    
    while (x++ < w) {
        while (y++ < w)
            putchar ('#');
        putchar ('\n');
        y = 0;
    }
}

int main (void) {
    
    block();
}

注意:如果愿意,您可以将xy的增量移出循环条件。还要注意'#'的输出具有已从x循环中删除,并且putchar()已用于输出单个字符,而不是调用可变参量printf() -尽管好的编译器会为您进行切换)< / p>

使用/输出示例

几个例子:

$ ./bin/square_while_cs50
What would you like the width/height to be: 5
#####
#####
#####
#####
#####

$ ./bin/square_while_cs50
What would you like the width/height to be: 10
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########

注意:,如果您实际上想使事物看起来像“方形”,则将putchar ('#');替换为" #"的字符串fputs (" #", stdout);

此外,请不要发布代码图片,而是将代码复制并粘贴到问题中,并以4个空格缩进,以便将其格式化为代码(或上下3个反引号)

让我知道您是否有疑问。