2016-06-22 198 views
-3

請幫助我,我使用代碼塊16,我不知道爲什麼這個代碼不打印廣場,只是一個正方形! 另一件事是我該如何改進這段代碼? 我還在學習,請不要生我的氣 非常感謝您的時間嵌套while循環的問題

#include <iostream> 
using namespace std; 
int main() { 
    char a = 'a', d = ' '; 
    int b = 0, c = 0; 

    while (c < 5) { 
     cout << a; 
     c = c + 1; 
    } 
    cout << endl; 
    c = 0; 
    while (c < 3) { 
     cout << a; 
     while (b < 3) { 
      cout << d; 
      b = b + 1; 
     } 
     cout << a << endl; 
     c = c + 1; 
    } 
    c = 0; 
    while (c < 5) { 
     cout << a; 
     c = c + 1; 
    } 
    cout << endl; 
    return 0; 
} 
+1

'b = 0'可能有幫助。 – Yakk

+2

一旦'b'命中3,'while'循環永遠不能再次運行。對於這種情況,使用'for'循環而不是'while循環。 –

+2

使用調試器逐步完成並在此過程中觀察變量 –

回答

2

你忘了重新初始化b0

使用for會更容易閱讀:

for(int c = 0; c < 3; ++c) { 
    cout << a; 
    for (int b = 0; b < 3; ++b) { 
     cout << d; 
    } 
    cout << a << endl; 
} 
+0

謝謝,這太令人尷尬了...... – Renato

+0

將來,根據需要添加儘可能多的日誌記錄,直到找出結果。例如,在'while(b <3){''你可以臨時添加一行像'cout <<'關於在while循環中輸入b',b =「<< b << endl;''。 –

0

的問題是,你不通過你的外循環,每次重置b值你循環。因此,在廣場的第二行(帶空格的第一行),它工作得很好。但是,在第三行中,當您進入內部while循環時,b仍然等於前一遍循環中的3。

如果我也可以同時提出建議,請有意義地給變量命名,錯誤會變得更加明顯。我建議使用變量rowcolumn而不是bc。有時你需要的只是一些更清晰的變量名,而且這個錯誤很突出。

+0

我很感謝你的時間,謝謝先生,我會的 – Renato