嵌套循环的帮助

编程语言 2026-07-10

我需要完成一个使用嵌套循环来打印这个模式的程序:

1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

以下是指南:

  1. 使用两个嵌套的for循环
  2. 外层循环应控制行号(1到 5)
  3. 内层循环应打印行号 'row' 次。当行号为3 时,应打印 "3 3 3"
  4. 每行应以换行符结束。

目前这是我写的代码:

#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

我最头疼的部分是让它每次打印的数量都不同。

有什么建议吗?

解决方案

你的内层循环使用了错误的逻辑。

  • 在外层循环的第1 次迭代中,内层循环迭代 1..5,打印 rows 和换行符各5 次。
  • 在外层循环的第2 次迭代中,内层循环迭代 2..5,打印 rows 和换行符各4 次。
  • 在外层循环的第3 次迭代中,内层循环迭代 3..5,打印 rows 和换行符各3 次。
  • 在外层循环的第4 次迭代中,内层循环迭代 4..5,打印 rows 和换行符各2 次。
  • 在外层循环的第5 次迭代中,内层循环迭代 5..5,打印 rows 和换行符各1 次。

在所有迭代中,line 永远不可能小于 rows,因此 - 从未被打印。

为了满足你的要求,逻辑需要改成如下所示:

  • 在外层循环的第1 次迭代中,内层循环迭代 1..1,仅打印 rows 1次,然后在内层循环结束后再打印一个换行符。
  • 在外层循环的第2 次迭代中,内层循环迭代 1..2,仅打印 rows 2次,然后在内层循环结束后再打印一个换行符。
  • 在外层循环的第3 次迭代中,内层循环迭代 1..3,仅打印 rows 3次,然后在内层循环结束后再打印一个换行符。
  • 在外层循环的第4 次迭代中,内层循环迭代 1..4,仅打印 rows 4次,然后在内层循环结束后再打印一个换行符。
  • 在外层循环的第5 次迭代中,内层循环迭代 1..5,仅打印 rows 5次,然后在内层循环结束后再打印一个换行符。

你的代码应该看起来像下面这样:

#include <iostream>

using namespace std;

int main()
{
   for (int row = 1; row <= 5; row++) 
   {
       for (int count = 1; count <= row; count++)
       {
           cout << row << ' ';
       }
       cout << endl;
   }

    return 0;
}

在线演示

如果你不想在每个换行前多出空格,可以改成下面这样:

#include <iostream>

using namespace std;

int main()
{
   for (int row = 1; row <= 5; row++) 
   {
       for (int count = 1; count <= row; count++)
       {
           if (count > 1) {
               cout << ' ';
           }
           cout << row;
       }
       cout << endl;
   }

    return 0;
}

在线演示

或者:

#include <iostream>

using namespace std;

int main()
{
   for (int row = 1; row <= 5; row++) 
   {
       cout << row;
       for (int count = 2; count <= row; count++)
       {
           cout << ' ' << row;
       }
       cout << endl;
   }

    return 0;
}

在线演示

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章