#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define COL 3 //每层3行
#define ROW 4 //圣诞树层数(每层3行)
char *list[] = {
"*\0",
"***\0",
"*****\0",
"*******\0",
"*********\0",
"***********\0"
};
main()
{
int i,j,k,len,listlen;
k=0;
listlen = sizeof(list)/sizeof(list[0]);//取list数组长度
len = strlen(list[listlen -1])/2 + 1;//最后一行的长度除以2,用来生成空格用的,既最大空格数
for(i=0;i<ROW*COL;i++)//循环总行数(圣诞树层数乘以每层行数)
{
/*strlen(list[k])/2 + 1 得到本行你所站用空格的各数*/
/*len-(strlen(list[k])/2 + 1) 总空格"减"本行站用的空格*/
for(j=0;j<len-(strlen(list[k])/2 + 1);j++)//循环打印空格
{
putchar(' ');
}
printf("%s\t\t%d\n",list[k],k);//打印 "*"
k++;
if(i%3==2)//说明打印好一层圣诞树
k-=2;//移到下层圣诞树需要打印的下标
}
for(i=0;i<4;i++)
{
for(j=0;j<len-2;j++)//循环打印空格
{
putchar(' ');
}
printf("|||\n");
}
}
?由于上次eye无故封我发表文章,所以一直都没有登eye了,今天来特地送个圣诞节礼物给大家。:)
新手可以试着做做,这是我以前看到的一个面试题,在很短时间内做出来还是有点小难度的哈哈。
?
效果如下:
?? ? ? ? ? ? ? ? ? ? ?*
?? ? ? ? ? ? ? ? ? ?***
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ? ? ?***
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ?*******
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ?*******
?? ? ? ? ? ? ?*********
?? ? ? ? ? ? ? ? ? ? ?|
?? ? ? ? ? ? ? ? ? ? ?|
?? ? ? ? ? ? ? ? ? ? ?|
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?