#include "stdio.h"
int main()
{
int n,i,j,count;
scanf("%d",&n);
for(i=1;i<=n*3;i++) //打印树叶
{
count = 1;
for(j=1;j<=n*3-i;j++) //打印前置空格
putchar(' ');
if((i-1)%3==0) //当在第一行、第四行、第七行。。。时打印
for(j=1;j<=2*i-1;j++) //打印中间间隔五个空格的行
(j-1)%6 ? putchar(' ') : putchar('*');
if((i+1)%3==0) //当在第二行、第五行、第八行。。。时打印
for(j=1;j<=2*i-1;j++) //打印中间间隔三个空格的行
{
switch(count) //标记位
{
case 1:
case 3:
putchar('*'); //当第一次和第三次时打印*
break;
case 2:
putchar(' '); //打印1、3次中间的一个空格
break;
default: //打印三个空格
putchar(' ');
if(count == 6) //当打印了三个空格后归零标志位
count = 0;
break;
}
count ++;
}
if(i%3==0) //当在第三行、第六行、第九行。。。时打印
for(j=1;j<=2*i-1;j++) //打印满的一行
j%2 ? putchar('*') : putchar(' ');
puts("");
}
for(i=1;i<=n;i++) //打印树干
{
for(j=1;j<3*n;j++) //打印前置空格
putchar(' ');
puts("*");
}
}
int main()
{
int n,i,j,count;
scanf("%d",&n);
for(i=1;i<=n*3;i++) //打印树叶
{
count = 1;
for(j=1;j<=n*3-i;j++) //打印前置空格
putchar(' ');
if((i-1)%3==0) //当在第一行、第四行、第七行。。。时打印
for(j=1;j<=2*i-1;j++) //打印中间间隔五个空格的行
(j-1)%6 ? putchar(' ') : putchar('*');
if((i+1)%3==0) //当在第二行、第五行、第八行。。。时打印
for(j=1;j<=2*i-1;j++) //打印中间间隔三个空格的行
{
switch(count) //标记位
{
case 1:
case 3:
putchar('*'); //当第一次和第三次时打印*
break;
case 2:
putchar(' '); //打印1、3次中间的一个空格
break;
default: //打印三个空格
putchar(' ');
if(count == 6) //当打印了三个空格后归零标志位
count = 0;
break;
}
count ++;
}
if(i%3==0) //当在第三行、第六行、第九行。。。时打印
for(j=1;j<=2*i-1;j++) //打印满的一行
j%2 ? putchar('*') : putchar(' ');
puts("");
}
for(i=1;i<=n;i++) //打印树干
{
for(j=1;j<3*n;j++) //打印前置空格
putchar(' ');
puts("*");
}
}

京公网安备 11010502036488号