#include <stdio.h>
#define A 60//树顶,以树顶为标杆
#define B 5//等差数列
void tree(int layer,int line)
{
char a = ' ',c = '*';
int x,y,z,l,d;
d=B;//等差
l=0;//用来确定打印范围
//1.画树身
for(x=0;x<layer;x++)//确定有几层
{
for(y=0;y<line;y++)//确定每层有几行
{
for(z=0;z<=A+l;z++)//这一行的打印
{
if(z<A-l)
{
printf("%c",a);
}
else
{
printf("%c",c);
}
}
printf("\n");
if(y!=line-1 && line != 2)
l+=d/2;//下一行的打印范围
}
l-=d/2;//下一层的打印范围
}
//2.画树根
for(x=0;x<(line+d/2);x++)//树根行数
{
for(z=0;z<=A+d/2;z++)//这一行的打印
{
if(z<A-d/2)
{
printf("%c",a);
}else
{
printf("%c",c);
}
}
printf("\n");
}
printf("\33[0m");
return;
}
int main(int argc,char* argv[]){
int a,b;
char* s;
look:
printf("请输入圣诞树的层数:");
scanf("%d",&a);
printf("请输入圣诞树每一层有几行:");
scanf("%d",&b);
if(a < 3 || b < 3)
{
printf("输入的数必须大于等于3!!!\n");
goto look;
}
printf("输入你想要祝福的名字:");
scanf("%s",s);
for(int i=0;i<A-9;i++)
printf(" ");
printf("\033[31m \33[5m %s \33[0m \033[32m Merry Christmas!\n\33[0m",s);
printf("\033[32m \33[5m\n");
tree(a,b);
return 0;
}