合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
二、解题步骤 ⭐️
下面以
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 字符金字塔这篇文章一起看~