嵌套循环的帮助
我需要完成一个使用嵌套循环来打印这个模式的程序:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
以下是指南:
- 使用两个嵌套的for循环
- 外层循环应控制行号(1到 5)
- 内层循环应打印行号 '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
我最头疼的部分是让它每次打印的数量都不同。
有什么建议吗?
解决方案
你的内层循环使用了错误的逻辑。
- 在外层循环的第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,仅打印rows1次,然后在内层循环结束后再打印一个换行符。 - 在外层循环的第2 次迭代中,内层循环迭代
1..2,仅打印rows2次,然后在内层循环结束后再打印一个换行符。 - 在外层循环的第3 次迭代中,内层循环迭代
1..3,仅打印rows3次,然后在内层循环结束后再打印一个换行符。 - 在外层循环的第4 次迭代中,内层循环迭代
1..4,仅打印rows4次,然后在内层循环结束后再打印一个换行符。 - 在外层循环的第5 次迭代中,内层循环迭代
1..5,仅打印rows5次,然后在内层循环结束后再打印一个换行符。
你的代码应该看起来像下面这样:
#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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。