本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印c++ ***** -**** ******** 所谓“沙漏形状",是指每行输出奇数个符号;各行符号中心对齐;相邻两
时间: 2024-07-26 13:01:25 浏览: 64
打印沙漏 (20 分)PTA
当然可以。为了创建一个沙漏形状的打印程序,我们可以使用循环来控制每一行输出的字符数量。这里是一个简单的C++示例,它会接收用户输入的数量并按照指定格式输出沙漏:
```cpp
#include <iostream>
#include <string>
void print_pyramid(int count) {
int row = 0;
while (row <= count / 2) {
// 前半部分的星号
for (int i = 0; i <= row; ++i) {
std::cout << "* ";
}
// 中间的减号
if (count % 2 != 0 && row < count / 2) {
std::cout << "-";
}
// 后半部分的星号
for (int i = 0; i < count - row * 2; ++i) {
std::cout << "* ";
}
std::cout << "\n";
++row;
}
// 如果输入的是奇数,再打印下半部分
if (count % 2 != 0) {
for (int i = row - 1; i >= 0; --i) {
// 前半部分的星号
for (int j = 0; j <= i; ++j) {
std::cout << "* ";
}
// 中间的减号
std::cout << "-";
// 后半部分的星号
for (int j = 0; j < count - (i + 1) * 2; ++j) {
std::cout << "* ";
}
std::cout << "\n";
}
}
}
int main() {
int input;
std::cout << "请输入需要打印的星号数量:";
std::cin >> input;
print_pyramid(input);
return 0;
}
```
运行此程序,输入17,将会得到如下的沙漏形状:
```
*****
-**
*****
-**
*****
-**
```
阅读全文