#include <stdio.h>
int main()
 {
    int n,i,j;//n表示输入的层数;
    int x;//x表示空格数量,空格数量=3*层数-1
    scanf("%d",&n);
    x=3*n-1;
    for(i=1;i<=n;i++)//n层,就有n次循环,一次循环输出一层
    {
        for(j=1;j<=x;j++)//第一行空格数
        {
            printf(" ");
        }
        for(j=1;j<=i;j++)//第一行都是(*加上五个空格),第一层就输出一个,第n层就输出n个(*+五个空格)
        {
            printf("*     ");
        }
        printf("\n");
        for(j=1;j<=x-1;j++)//第二行空格数
        {
            printf(" ");
        }
        for(j=1;j<=i;j++)//第二行都是(*空格*加三个空格),同上,第n层就输出n个(*空格*加三个空格)
        {
            printf("* *   ");
        }
        printf("\n");
        for(j=1;j<=x-2;j++)//第三行空格数
        {
            printf(" ");
        }
        for(j=1;j<=i;j++)//第三行都是(*空格*空格*空格),同上,第n层就输出n个(*空格*空格*空格)
        {
            printf("* * * ");
        }
        printf("\n");
        x-=3;//下一层的第一行空格数比上一层的第一行空格数少3
    }
    for(i=1;i<=n;i++)//树的尾巴数,n层就有n个尾巴,就用n次循环,一次循环输出一个尾巴
    {
        for(j=1;j<=3*n-1;j++)//尾巴前的空格数为3*层数-1
        printf(" ");
        printf("*\n");
    }
    
    return 0;
}

新手理解哈哈,