嵌套while循环的问题

Trouble with nested while loop

请帮助我,我正在使用代码块 16,我不知道为什么这段代码不打印正方形,只是一个正方形! 另一件事是我如何改进这段代码? 我还在学习,请不要生我的气 非常感谢你的时间

#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;
}

您忘记将 b 重新初始化为 0

使用for会更容易阅读:

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

问题在于,您不会在每次循环外循环时都重置 b 的值。因此,在正方形的第二行(第一行有空格),它工作得很好。但是,在第三行,当您到达内部 while 循环时,b 仍然等于上一次通过该循环的 3。

如果我也可以同时提出建议,请有意义地命名您的变量,并且错误会变得更加明显。我建议使用变量 rowcolumn 而不是 bc。有时你只需要更清晰的变量名,错误就很明显了。