|
|
发表于 2025-6-6 09:16:06
|
显示全部楼层
#include <stdio.h>
int main() {
int n, i, j, num;
scanf("%d", &n);
// 计算最大数字的位数,用于格式化输出
int max_num = n;
int width = 1;
while (max_num /= 10) width++;
// 上半部分
for (i = 1; i <= n; i++) {
// 前置空格
for (j = 1; j <= n - i; j++)
printf("%*s", width + 1, "");
// 左侧数字序列
for (j = 1; j <= i; j++)
printf("%*d ", width, j);
// 右侧数字序列(倒序,不包括中间和第一个数字)
for (j = i - 1; j >= 1; j--)
printf("%*d ", width, j);
printf("\n");
}
// 下半部分
for (i = n - 1; i >= 1; i--) {
// 前置空格
for (j = 1; j <= n - i; j++)
printf("%*s", width + 1, "");
// 左侧数字序列
for (j = 1; j <= i; j++)
printf("%*d ", width, j);
// 右侧数字序列(倒序,不包括中间和第一个数字)
for (j = i - 1; j >= 1; j--)
printf("%*d ", width, j);
printf("\n");
}
return 0;
} |
|