C++初学嵌套for循环时,如何实现输出内容右对齐?
嵌套for循环实现右对齐星号图案的方法
核心实现逻辑
- 现有代码的星号输出逻辑完全不用改:当前循环跑下来,第y行(y从1到5)会输出
6-y个连续星号,已经搭好了从5个星逐行减1个的基础框架 - 右对齐的本质就是给每一行补前置空格:整行要保持5个字符的总宽度(和最长的第一行5个星的长度对齐),用空格把星号整体推到最右侧
- 前置空格的数量直接算就行:第y行需要打
y-1个空格,空格数加当前行的星号数刚好凑够5个字符的固定宽度
改造后的完整可运行代码
#include <iostream> #include <conio.h> using namespace std; int main() { int x,y; for (y=1; y<=5; y++) { // 新增内层循环:打印当前行的前置空格 for (x=1; x<=y-1; x++) { cout << " "; } // 原有逻辑:打印对应数量的星号 for (x=y; x<=5; x++) { cout << "*"; } cout << endl; } getch(); }
实际输出效果对照
代码跑出来每一行的内容是完全对齐右侧的:
- 第1行:
*****(0个空格 + 5个星号) - 第2行:
****(1个空格 + 4个星号) - 第3行:
***(2个空格 + 3个星号) - 第4行:
**(3个空格 + 2个星号) - 第5行:
*(4个空格 + 1个星号)
提醒:这个练习的核心是掌握嵌套for循环的用法,别直接靠流的右对齐控制函数偷懒,跳过循环逻辑是达不到课程练习目的的。
内容的提问来源于stack exchange,提问作者David Blame
相关产品推荐
相关产品推荐

