关于#结构#的问题,如何解决?

怎么用循环结构输出一下图案
*
***




 ***
  *

#include <stdio.h>           
int main( )    
{    
    int i,j,n;  //n代表上三角行数   
    scanf("%d",&n);
    //先输出上三角    
    for(i=1;i<=n;++i) //输出n行    
    {    
        //输出第i行    
        for(j=1; j<=n-i; ++j) //输出n-i个空格    
            printf(" ");    
        for(j=1; j<=2*i-1; ++j) //输出2*i-1个星号    
            printf("*");    
        printf("\n");    
    }    
    //下面输出下三角    
    for(i=1;i<=n-1;++i) //输出n-1行     
    {    
        //输出第i行    
        for(j=1; j<=i; ++j) //输出i个空格    
            printf(" ");    
        for(j=1; j<=2*(n-i)-1; ++j) //输出2*i-1个星号    
            printf("*");    
        printf("\n");    
    }    
    return 0;       
} 
#include<stdio.h>
#include<stdlib.h>
void PrintLine(int blank_count, int start_count){     
    int i = 0;
    for (; i < blank_count; i++){
        printf(" ");  //打印空格
    }
    for (i = 0; i < start_count; i++){
        printf("*");
    }
    printf("\n");
}
void  PrintLingxing(int n){
    //打印上半部分
    int i = 1;
    for (i = 1; i < n; i++){
        PrintLine(n - i, 2 * i - 1);  // 打印每一行的空格和每一行的星号
    }
    //打印中间部分
    PrintLine(0, 2 * n - 1);
    //打印下半部分
    for (i = n - 1; i>0; i--){
        PrintLine(n - i, 2 * i - 1);
    }
}
int main(){
    PrintLingxing(7);    //对半的行数
    return 0;
}