#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了,今天来特地送个圣诞节礼物给大家。:)
新手可以试着做做,这是我以前看到的一个面试题,在很短时间内做出来还是有点小难度的哈哈。
?
效果如下:
?? ? ? ? ? ? ? ? ? ? ?*
?? ? ? ? ? ? ? ? ? ?***
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ? ? ?***
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ?*******
?? ? ? ? ? ? ? ? ?*****
?? ? ? ? ? ? ? ?*******
?? ? ? ? ? ? ?*********
?? ? ? ? ? ? ? ? ? ? ?|
?? ? ? ? ? ? ? ? ? ? ?|
?? ? ? ? ? ? ? ? ? ? ?|
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?