Erin.23333 2022-10-17 20:01 采纳率: 100%
浏览 31
已结题

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

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

img

其中,line表示中间最长一行的行数,如上例中line为4。如果line<1则输出“输入参数错误”。

  • 写回答

1条回答 默认 最新

  • a5156520 2022-10-17 20:36
    关注

    后面的倒三角形也可以像前面正三角形一样打印,如可以分为:打印前面的空格,打印正序的数字,打印后面逆序的数字,然后是每一行的换行符。

    具体的打印规律根据每一行的数字分布情况得来,下面的代码对于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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月17日
  • 创建了问题 10月17日