合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️

 
二、解题步骤 ⭐️
下面以
n=5举例:🦋
- 第1步 🎀、外层循环(从
1到n):金字塔层数。则:for循环,从1遍历到n;- 第2步 🎀、内层循环1:打印 每一层 第一个字符前的空格。则:第一层 打印4个空格,第二层打印3个空格,第三层打印2个空格,第四层打印1个空格,第五层打印0个空格;
- 第3步 🎀、判断是否是第一层,如果是第一层,直接打印数字
1;- 第4步 🎀、判断是否是最后一层,如果是最后一层,打印连续的数字
n,数量为2 * n - 1;- 第5步 🎀、内层循环2:处理中间层,把 数字和一个空格 看作整体,即"
G_“。则:第一层 需要打印一个整体"1_”,第二层需要打印两个整体"2_2_“,第三层需要打印三个整体"3_3_3_”,第四层需要打印四个整体"4_4_4_4_";
- 【关键】因为 是 空心 的 数字金字塔,所以对上面 的 “整体” 处理如下:💥
- 1、若是 第1个数字,则打印 数字+一个空格;
- 2、若是 最后一个数字,则只打印 数字;
- 3、其余情况,则打印 两个空格。
- 第6步 🎀、每层打印完成后换行,进入下一层的打印。
总结: 🦋
- 该程序通过嵌套循环实现空心数字金字塔的打印。
- 外层循环控制层数,内层循环分别负责打印空格、数字和空格。
- 第一层和最后一层单独处理,中间层打印数字和空格。
三、代码(C语言)⭐️
#include <stdio.h>
void hollowPyramid ( int n );
int main()
{
    int n;
    scanf("%d", &n);
    hollowPyramid ( n );
    return 0;
}
/* 你的代码将被嵌在这里 */
void hollowPyramid(int n) {
    // 外层循环:控制金字塔的层数(从1到n)
    for (int i = 1; i <= n; i++) {
        // 内层循环1:打印每一层 第一个字符 前的空格
        for (int j = n - i; j > 0; j--) {
            printf(" "); // 打印每一层 第一个字符 前的空格
        }
        // 判断是否是第一层
        if (i == 1) {
            printf("%d", i); // 打印 第一个数字
        }
        // 判断是否是最后一层
        else if (i == n) {
            // 打印 最后一层的数字
            for (int i = 0; i < 2 * n - 1; i++) {
                printf("%d", n); // 打印 最后一层的数字
            }
        }
        // 处理中间层
        else {
            // 内层循环2:打印非最后一层的数字和空格
            for (int k = i; k > 0; k--) {
                if (k == i) {
                    printf("%d ", i); // 打印 第一个数字+一个空格
                } else if (k == 1) {
                    printf("%d", i); // 打印 最后一个数字
                } else {
                    printf("  "); // 打印 两个空格
                }
            }
        }
        // 换行,进入下一层的打印
        printf("\n");
    }
}


【注意 📢 】 结合练习5-3 字符金字塔这篇文章一起看~




















