#include <stdio.h>

void tree(int a){
    for(int i = 0;i<a;i++){
        for(int j = 0;j<3*a-1-3*i;j++){   //根据层数,打出左边不同的空格数
            printf(" ");
        }
        for(int k = 0;k<=i;k++){    //观察得出*后面5个空格在哪一层都是这种形式
            printf("*     ");
        }
        printf("\n");
        for(int j = 0;j<3*a-2-3*i;j++){
            printf(" ");
        }
        for(int k = 0;k<=i;k++){
            printf("* *   ");
        }
        printf("\n");
        for(int j = 0;j<a*3-3-3*i;j++){
            printf(" ");
        }
        for(int k = 0;k<=i;k++){
            printf("* * * ");
        }
        printf("\n");
    }
}
void root(int a){
    for(int i = 0;i<a;i++){
        for(int j = 0;j<a*3*2-1;j++){
            if( j == (a*3*2-1)/2){
                printf("*\n");
                break;
            }
            else{
                printf(" ");
            }
        }
    }
}
int main(){
    int h;
    scanf("%d",&h);
    tree(h);
    root(h);
    return 0;
}
妙哉妙哉 做了这么多道循环打图案的题目。解题的关键就在于怎么找出规律。所以我将圣诞树分解成两部分(开始是三部分,但做不出来,后面又是参考了一波大佬的解题,实在膜拜!)