C++实现重复阶梯星号图案输出 调整现有代码实现逐列展示效果
C++ 星号图案逐步输出实现方案
实现效果说明
- 输入正整数
x后,会先仅展示图案最右侧列,每隔固定时间向左增加一列,直到完整展示目标图案 - 最终图案完全匹配要求的重复阶梯规律,输入为4时输出和示例完全一致
调整后完整代码
#include <iostream> #include <algorithm> // 用于min函数 using namespace std; // 跨平台兼容清屏、延时逻辑 #ifdef _WIN32 #include <windows.h> #define CLEAR_SCREEN system("cls") #define DELAY(ms) Sleep(ms) #else #include <unistd.h> #define CLEAR_SCREEN system("clear") #define DELAY(ms) usleep(ms * 1000) #endif int main() { int x; cin >> x; const int block_width = x + 1; // 星块总宽度,保证对齐效果 // 逐阶段展示:stage从1到x,对应从仅展示最右1列到展示所有列 for (int stage = 1; stage <= x; stage++) { CLEAR_SCREEN; // 打印x行图案 for (int i = 1; i <= x; i++) { int print_block_cnt = min(stage, i); // 打印前置对齐空格 for (int s = 0; s < (i - print_block_cnt) * block_width; s++) { cout << " "; } // 打印当前阶段需要展示的星块 for (int b = 0; b < print_block_cnt; b++) { // 打印星号 for (int star = 0; star < i; star++) { cout << "*"; } // 打印块间分隔空格,最后一个块不需要 if (b != print_block_cnt - 1) { for (int s = 0; s < block_width - i; s++) { cout << " "; } } } cout << endl; } DELAY(800); // 每阶段停留时长,单位为毫秒,可自行调整 } return 0; }
核心修改点
- 移除原有重复打印相同图案的无效逻辑,新增
stage外层循环控制展示阶段,实现从右到左逐列显示的效果 - 新增块宽度对齐规则,每个星号块按固定宽度排版,保证整体阶梯对齐效果匹配示例
- 增加跨平台清屏与延时逻辑,实现流畅的逐步展示动画
- 调整行内打印逻辑,按当前展示阶段打印对应数量的星号块,符合逐步展示要求
内容的提问来源于stack exchange,提问作者user16787623
相关产品推荐
相关产品推荐

