正三角还会,加上倒三角的部分就搞不来了😰😭

5写函数void PrintNumers(int line),输出如下图形:

img

其中,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;
}  

img