5写函数void PrintNumers(int line),输出如下图形:
其中,line表示中间最长一行的行数,如上例中line为4。如果line<1则输出“输入参数错误”。
后面的倒三角形也可以像前面正三角形一样打印,如可以分为:打印前面的空格,打印正序的数字,打印后面逆序的数字,然后是每一行的换行符。
具体的打印规律根据每一行的数字分布情况得来,下面的代码对于line<=9适用,line>10,还需要调整一些格式,代码如下:
#include <stdio.h>
void PrintNumers(int line){
if(line<1){
printf("输入参数错误");
return ;
}
//第一个大for循环打印line行的正三角形
for(int i=0;i<line;i++){
//打印每一行前面的空格
for(int j=0;j<line-1-i;j++){
printf(" ");
}
int k;
//打印每一行前面正序的数字
for(k=0;k<=i;k++){
printf("%d ",k+1);
}
//打印每一行后面逆序的数字
for(int p=k-1;p>=1;p--){
printf("%d ",p);
}
printf("\n"); //打印每一行的换行符
}
//第二个大for循环打印后面line-1行的倒三角形
for(int i=0;i<line-1;i++){
//打印每一行前面的空格
for(int j=0;j<=i;j++){
printf(" ");
}
int k;
//打印每一行前面正序的数字
for(k=0;k<line-1-i;k++){
printf("%d ",k+1);
}
//打印每一行后面逆序的数字
for(int p=k-1;p>=1;p--){
printf("%d ",p);
}
printf("\n");//打印每一行的换行符
}
}
int main(void){
int line ;
scanf("%d",&line);
PrintNumers(line);
return 0;
}