目录
空心的数字金字塔
本题要求实现一个函数,输出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
my 想法:
1. 笨拙一点的就是把第一行和最后一行分别打印,中间的各行按照 空格 数字 空格 数字去打印。(不过我写的函数,第二个测试点过不去www,但是我不知道第二个测试点是什么,欢迎uu指出我的错误!!)
2.通过判断当前行的当前位置,按规律满足条件就打印,只是最后一行依然special。
规律:第i行,n-i+1表示空格前的第一个数字,n-1+i表示是非空格的后一个数字。
代码:
void hollowPyramid ( int n )
{
int i,j;
for(i=1;i<=n;i++)//i为行数
{
for(j=1;j<=n-1+i;j++)
//j为第i行中的第几个 (n-i+1表示空格前的第一个数字,n-1+i表示是非空格的后一个数字)
{
if(i==n)
{
printf("%d",i);//实际上就是在打印最后一行
}
else if(i<n)
{
if((j==n+1-i)||(j==n-1+i))
{
printf("%d",i);
}
else
{
printf(" ");
}
}
}
printf("\n");
}
}