嵌套循环编程求助:如何实现指定数字图案输出
问题:嵌套循环打印指定图案
目标图案
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
实现要求
- 使用两层嵌套for循环
- 外层循环控制行号(从1到5)
- 内层循环需打印行号row次,当row为3时,应输出"3 3 3"
- 每行末尾需换行
当前错误代码
#include <iostream> using namespace std; int main() { for (int rows = 1; rows <= 5; rows++) { for (int line = rows; line <= 5; line++) { cout << rows; if (line < rows) { cout << "-"; } cout << endl; } } return 0; }
当前错误输出
1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
核心困惑
如何让每行打印的数字数量与行号对应?
解答
你的代码有三个关键问题:
- 内层循环的条件完全错误:当前写法会让第
rows行执行5 - rows + 1次,和「每行打印rows次数字」的需求完全相反。 - 换行语句放在了内层循环里,导致每次打印数字后都换行,无法实现同一行打印多个数字。
- 分隔符用了
-而非要求的空格,且判断逻辑不成立。
修正后的代码如下:
#include <iostream> using namespace std; int main() { for (int rows = 1; rows <= 5; rows++) { // 内层循环控制当前行的数字打印次数,从1到rows for (int col = 1; col <= rows; col++) { cout << rows; // 非最后一个数字时,打印空格分隔 if (col < rows) { cout << " "; } } // 整行数字打印完成后再换行 cout << endl; } return 0; }
逻辑说明
- 外层循环
rows从1到5,既代表当前行号,也代表每行需要打印的数字内容。 - 内层循环
col从1到rows,控制当前行打印数字的次数:比如rows=4时,循环4次,打印4个4。 - 内层循环中通过
col < rows判断是否需要打印空格,避免行尾出现多余空格。 - 换行语句放在外层循环的内层循环之后,确保整行数字打印完成后才换行。
内容的提问来源于stack exchange,提问作者Alexander Sloman
相关产品推荐
相关产品推荐

