打印沙漏ptac++
时间: 2025-03-05 07:38:16 浏览: 38
### 使用 C++ 实现沙漏图案
为了创建一个完整的沙漏图案,可以先构建上半部分逐渐减少星号数量的部分,再构建下半部分逐渐增加星号数量的部分。下面是一个具体的实现方法[^2]:
```cpp
#include <iostream>
using namespace std;
int main() {
int rows;
cout << "请输入行数: ";
cin >> rows;
// 上半部:逐行减少星号的数量
for (int i = rows; i >= 1; --i) {
// 输出前导空格
for (int space = 0; space < rows - i; ++space)
cout << " ";
// 输出星号
for (int j = 1; j <= (2 * i - 1); ++j)
cout << "*";
cout << endl;
}
// 下半部:逐行增加星号的数量
for (int i = 2; i <= rows; ++i) {
// 输出前导空格
for (int space = 0; space < rows - i; ++space)
cout << " ";
// 输出星号
for (int j = 1; j <= (2 * i - 1); ++j)
cout << "*";
cout << endl;
}
return 0;
}
```
此代码首先请求用户输入期望的行数,接着通过两个嵌套循环分别处理沙漏形状上下两部分的输出逻辑。
#### 关键点解释
- **外层循环控制行数**:第一个`for`循环负责生成沙漏顶部收缩的部分;第二个则扩展底部。
- **内层循环管理列宽**:内部的第一个`for`循环用来打印每行前面必要的空白字符以形成缩进效果;而第二个`for`循环则是实际绘制星号的位置。
- **动态调整星号宽度**:随着每一新行的到来,星号序列长度依据当前所在层数做相应变化,从而达到视觉上的收窄与扩张交替的效果。
阅读全文
相关推荐












