题目
从标准输入读入金字塔的层数 h,在控制台使用星号 * 和空格打印出居中对齐的字符金字塔。
输入格式:一行输入一个正整数 h,表示金字塔高度。
输出格式:输出 h 行字符图案,构成居中金字塔。
数据范围与约定:1 ≤ h ≤ 30。
思路与算法
1. 空格与星号数量数学规律
对于第 i 行(从 1 开始计):
前导空格数:h - i 个;
星号 * 数:2 * i - 1 个(奇数递增)。
2. 嵌套循环打印
每行先用循环打印对应数量的前导空格,再打印星号,最后输出换行符。
完整程序
#include <stdio.h>
int main(void)
{
int n;
if (scanf("%d", &n) != 1 || n < 1 || n > 20) {
return 1;
}
// 外层 i 控制行(共 n 行),第 i 行打印 i 个星号
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
putchar('*');
}
putchar('\n');
}
return 0;
}运行示例
输入:
4输出:
*
**
***
****