2011-04-01 53 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++; 
}