使用两个while循环打印一个充满“#”的方形图案

时间:2011-04-01 04:10:11

标签: c while-loop

鉴于输入,我想打印一个像这样的正方形:

Enter number: 5
#####
#####
#####
#####
#####

我的尝试:

int n;
int col=0;
int row=0;
//user input blah blah

    while  (col < n) {
        while (row < n) {
            printf("#");
            row++;
        }
        col++;
        printf("\n");
    }

但它并没有打印我所期待的......有人能解决这个问题吗?

编辑:实际输出如下(后跟4 \ n个字符,SO似乎没有显示)。

#####

5 个答案:

答案 0 :(得分:3)

while  (col < n) {
    while (row < n) {
        printf("#");
        row++;
    }
    col++;
    printf("\n");
    row = 0; // <<< THIS HELPS
}

答案 1 :(得分:2)

typo.pl's answer解决了眼前的问题,但我想指出一些事情:

  1. 这是for循环的循环控制结构。初始化和增量被打包在循环控件中,而不是分散在你(或其他人)决定放置它的地方。

  2. 您已切换row控件和col控件的逻辑。这没关系,因为每个都有相同的数量。但是,当需要添加矩形支持时,它会给某人造成一些混乱。如果它是家庭作业,那可能意味着几个点。

  3. 所以:

    for (row = 0; row < n; ++row) {
        for (col = 0; col < n; ++col) {
            printf("#");
        }
        printf("\n");
    }
    

答案 2 :(得分:1)

您需要在第一个while循环后重置row,否则它已经是n

答案 3 :(得分:0)

以下是打印square pattern in C的代码,其中包含&#34;#&#34;

i=1;
while(i<=n)
{
    j=1;
    while(j<=n)
    {
        printf("#");
        j++;
    }
    printf("\n");
    i++;
}

答案 4 :(得分:0)

为什么不简单?数学表达式通常比控件更精确。

In [1]: n = 5

In [2]: s = ('#'*n+'\n')*n

In [3]: print(s)
#####
#####
#####
#####
#####