题目

打印字符金字塔(指定层数)

思路

本题按给定层数打印字符金字塔(每行若干 * 与空格)。

外层循环行号 row 从 1 到高度 h:先打印 h-row 个空格,再打印 2*row-1*(具体个数以题面为准),然后换行。

解题分析

第 i 行打印 i 个字符,内层循环次数随行增加。若要居中金字塔,行前补 (n-i) 个空格。

完整程序

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1 || n < 1 || n > 20) {
        return 1;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < i; j++) {
            putchar('*');
        }
        putchar('\n');
    }
    return 0;
}

运行示例

输入:

4

输出:

*
**
***
****