#include <stdio.h>
//思路:我们可以观察到树叶部分是由一些相同的三角形构成的,树的底部就是处于中间的所输入n层的n个*,所以大体上我们就可以分为2部分来打印
int main()
{
//一、先打印上面“树叶”部分
int n=0; //层数
scanf("%d",&n);
int i=0; //循环控制层数
int m=3*n; //用于控制打印空格,不直接用3*n,而是重新定义一个变量,是因为在打印过程中每一层要打印的空格不同,我们需要对m进行变化
for(i=1;i<=n;i++)
{
//打印第i层的第一行
int space=m-1; //三角形前面的空格
while(space--)
{
printf(" ");
}
int k=0; //因为打印过程中相邻三角形会出现"* "
for(k=0;k<i;k++)
{
printf("* "); //打印每层三角形的第一行
}
printf("\n");
//打印第i层的第二行
int space2=m-2; //空格少1
while(space2--)
{
printf(" ");
}
for(k=0;k<i;k++)
{
printf("* * "); //到了第二行相邻三角形间变为了"* * "
}
printf("\n");
//打印第i层的第三行
int space3=m-3; //空格少1
while(space3--)
{
printf(" ");
}
for(k=0;k<i;k++)
{
printf("* * * "); //第三行变成了"* * * "
}
printf("\n");
m=m-3; //每层少打3个空格
}
//二、底部
int bottom=0;
for(bottom=0;bottom<n;bottom++)
{
int j=0;
for(j=0;j<3*n-1;j++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}