本题要求实现一个函数,输出n行空心的数字金字塔。
函数接口定义:
void hollowPyramid( int n );
其中n
是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n
行空心的数字金字塔,请注意,最后一行的第一个数字前没有空格。
裁判测试程序样例:
#include <stdio.h>
void hollowPyramid ( int n );
int main()
{
int n;
scanf("%d", &n);
hollowPyramid ( n );
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
5
输出样例:
1
2 2
3 3
4 4
555555555
我的答案:
/*
* 左空格:4 3 2 1
* 右空格:0 1 3 5
*/
// 输出空心的数字金字塔
void hollowPyramid(int n)
{
// 输出金字塔上半部分的每一行
for (int i = 1; i < n; i++)
{
// 输出每行前面的空格
for (int j = n - i; j > 0; j--)
{
printf(" ");
}
// 输出当前行的递增数字
printf("%d", i);
// 如果是第一行,直接换行并进入下一次循环
if (i == 1)
{
printf("\n");
continue;
}
// 输出当前行的空格
for (int j = (i - 1) * 2 - 1; j > 0; j--) // 每行数字之间的空格数
{
printf(" ");
}
// 输出当前行的最后一个数字并换行
printf("%d\n", i);
}
// 输出金字塔下半部分的底座部分
for (int i = 0; i < 2 * n - 1; i++)
{
printf("%d", n); // 底座部分为数字 n 组成的一行
}
}