【入门】打印空心等腰三角形 题目描述 从键盘读入一个整数n,代表等腰三角形的边长,请输出一个边长为n的等腰三角形! 为了方便观察,我们在例子中将空格替换成□,将*替换为×,请在程序中正常输出空格和*! 如:n=3则输出 □□× □×□× ××××× n=5则输出: □□□□× □□□×□× □□×□□□× □×□□□□□× ××××××××× 输入格式 3 输出格式 * * * ***** 样例 1 输入样例 1 None 输出样例 1 None
时间: 2025-05-31 15:34:18 浏览: 19
### 实现打印空心等腰三角形的算法
要实现一个输入整数 \( n \) 后输出对应的空心等腰三角形图案,可以通过控制每一行的星号(`*`)和空格的数量来完成。以下是具体的实现思路及其代码示例。
---
#### 思路分析
1. 空心等腰三角形的特点在于除了首尾两行外,中间部分仅保留最左侧、最右侧以及顶部中心位置的星号。
2. 对于第 \( i \) 行(\( 1 \leq i \leq n \)),需要满足以下条件:
- 左侧空白区域数量为 \( n - i \),用于对齐整个图形居中显示。
- 星号的位置取决于当前行为奇数还是偶数,并且需考虑是否为空心结构。
3. 特殊情况处理:当 \( n = 1 \) 或 \( n = 2 \) 时,无法形成有效的空心形状,则退化为实心形式[^5]。
---
#### Python 实现代码
```python
def hollow_isosceles_triangle(n):
if n == 1:
print('*')
return
elif n == 2:
print('**') # 边长为2时无空心效果
print('**')
return
for i in range(1, n + 1):
# 计算每行前面的空格数目
spaces = ' ' * (n - i)
if i == 1: # 第一行只有一个*
stars = '*'
elif i == n: # 最后一行全是*
stars = '*' * (2 * n - 1)
else: # 中间行只有两端有*
stars = '*' + ' ' * (2 * i - 3) + '*'
# 打印结果
print(spaces + stars)
# 测试函数
hollow_isosceles_triangle(5)
```
运行上述代码会得到如下输出(以 \( n = 5 \) 为例):
```
*
* *
* *
* *
*********
```
---
#### C++ 实现代码
如果偏好使用 C++,则可以用类似的逻辑编写代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
void hollowIsoscelesTriangle(int n) {
if (n == 1) {
cout << "*" << endl;
return;
} else if (n == 2) {
cout << "**" << endl;
cout << "**" << endl;
return;
}
for (int i = 1; i <= n; ++i) {
string spaces = string(n - i, ' ');
if (i == 1) {
cout << spaces << "*";
} else if (i == n) {
cout << string(2 * n - 1, '*');
} else {
cout << spaces << "*" << string(2 * i - 3, ' ') << "*";
}
cout << endl;
}
}
// 主函数测试
int main() {
int n;
cin >> n;
hollowIsoscelesTriangle(n);
return 0;
}
```
---
### 注意事项
- 上述代码假设输入的是合法正整数 \( n \geq 1 \)[^6]。
- 若希望进一步增强鲁棒性,可以在程序开头增加异常检测机制,确保用户输入有效值。
---
阅读全文
相关推荐


















