2011-04-01 86 views
1

给定的输入,我想打印这样一个正方形:打印正方形图案充满了“#”用两个while循环

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个字符,所以它似乎没有显示它)。

##### 

回答

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

尼斯,简单,快捷。谢谢。 – meiryo 2011-04-01 04:16:33

+1

仍然嵌套错误的方式。 – DevSolar 2011-04-01 06:52:19

1

需要重启第一while循环后row,否则它会已经n

+0

怎么样把'col'嵌套在'row'而不是'col'中的'row'?我会尝试一下...... – meiryo 2011-04-01 04:17:24

+0

@meiryo:是的,从技术上讲,由于内循环打印的是行而不是列,因此会更加正确。 – Kaivosukeltaja 2011-04-01 04:34:37

2

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

  1. 这是构建for回路设计的一种闭环控制。初始化和增量被封装在循环控制中,而不是分散在你(或其他人)可能决定放置的地方。

  2. 你已经切换了row控制和col控制的逻辑。这里没关系,因为你们每个人的人数都一样。但是,当需要添加矩形支持的时候,这会给某些人带来困惑。如果它是功课,这可能意味着几分。

所以:

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

这里的打印square pattern in C充满了 “#” 代码

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