c_打印星型

just play, and further for hanoi

#include "stdio.h"

void PrintFloor(int floor)
{
	int i,j;
	for(i = 0; i < floor; i++)
	{
		for(j = 0; j < floor-1-i; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i*2+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
}

void PrintFloorBetter(int floor)
{
	int i,j;
	for(i = 0; i < floor; i++)
	{
		for(j = 0; j < floor-1-i; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}
		printf("\n");
	}
}

void PrintDoubleFloorBetter(int floor, int interval)
{
	int i,j;
	interval += sizeof("* ")*floor;
	for(i = 0; i < floor; i++)
	{
		for(j = 0; j < floor-1-i; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}
		for(j = 0; j < interval - i*2; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}

		printf("\n");
	}
}

void PrintTripleFloorBetter(int floor, int interval)
{
	int i,j;
	interval += sizeof("* ")*floor;
	for(i = 0; i < floor; i++)
	{
		for(j = 0; j < floor-1-i; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}
		for(j = 0; j < interval - i*2; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}
		for(j = 0; j < interval - i*2; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1; j++)
		{
			printf("* ");
		}

		printf("\n");
	}
}

int GetTripleMax(int *a)
{
	int i;
	int iRet = *a;
	for(i=1; i < 3; i++)
	{
		if(*(a+i) > iRet)
			iRet = *(a+i);
	}
	return iRet;
}
void PrintTripleFloorControl(int *floor, int interval)
{
	int i,j;
	int space[2];
	int top = GetTripleMax(floor+1);

	interval += sizeof("* ")*floor[1];
	printf("top:%d\n",top);
	for(i = 0; i < *floor; i++)
	{
		if(i < *floor - top)
		{
			printf("\n");	
			continue;
		}
		for(j = 0; j < floor[1]-1-i+(*floor-top); j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(*floor-top); j++)
		{
			printf("* ");
		}
		for(j = 0; j < interval - i*2; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(*floor-top); j++)
		{
			printf("* ");
		}
		for(j = 0; j < interval - i*2; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(*floor-top); j++)
		{
			printf("* ");
		}

		printf("\n");
	}
}

void PrintFloorTripleControl(int *floor, int interval)
{
	int i,j;
	int space[2];
	int tmpInterval;
	int top = GetTripleMax(floor+1);

	printf("top:%d\n",top);
	for(i = 0; i < *floor; i++)
	{
		if(i < *floor - top)
		{
			printf("\n");	
			continue;
		}
		for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[1]); j++)
		{
			printf("* ");
		}
		tmpInterval = floor[1] - (i+1-(floor[0]-floor[1]));
		tmpInterval += floor[2] - (i+1-(floor[0]-floor[2]));
		tmpInterval += interval;
		for(j = 0; j < tmpInterval; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[2]); j++)
		{
			printf("* ");
		}
		tmpInterval = floor[2] - (i+1-(floor[0]-floor[2]));
		tmpInterval += floor[3] - (i+1-(floor[0]-floor[3]));
		tmpInterval += interval;
		for(j = 0; j < tmpInterval; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[3]); j++)
		{
			printf("* ");
		}

		printf("\n");
	}
}

void PrintFloorTripleControlBetter(int *floor, int interval)
{
	int i,j;
	int space[2];
	int tmpInterval;
	int top = GetTripleMax(floor+1);

	printf("top:%d\n",top);
	for(i = 0; i < *floor; i++)
	{
		if(i < *floor - top)
		{
			printf("\n");	
			continue;
		}
		for(j = 0; j < floor[1]-1-i+(floor[0]-floor[1]); j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[1]); j++)
		{
			printf("* ");
		}
		tmpInterval = floor[0] - (i+1-(floor[0]-floor[1]));
		tmpInterval += floor[0] - (i+1-(floor[0]-floor[2]));
		tmpInterval += interval;
		for(j = 0; j < tmpInterval; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[2]); j++)
		{
			printf("* ");
		}
		tmpInterval = floor[0] - (i+1-(floor[0]-floor[2]));
		tmpInterval += floor[0] - (i+1-(floor[0]-floor[3]));
		tmpInterval += interval;
		for(j = 0; j < tmpInterval; j++)
		{
			printf(" ");
		}
		for(j = 0; j < i+1-(floor[0]-floor[3]); j++)
		{
			printf("* ");
		}

		printf("\n");
	}
}
int main(void)
{
	int i,j;
	int floor;
	int control[4];
	
	printf("input floors:\n");
	scanf("%d",&floor);
	printf("floors %d\n\n",floor);

	PrintFloor(floor);
	printf("\n");
	PrintFloorBetter(floor);
	printf("\n");
	PrintDoubleFloorBetter(floor, 5);
	printf("\n");
	PrintTripleFloorBetter(floor, 5); 
	printf("\n");
	control[0] = floor;
	control[1] = floor-1;
	control[2] = floor-1;
	control[3] = floor-1;
	PrintTripleFloorControl(control,5);
	printf("\n");
#if 1
	control[1] = floor-1;
	control[2] = floor-4;
	control[3] = floor-3;
#endif
#if 0
	control[1] = floor-1;
	control[2] = floor-1;
	control[3] = floor-1;
#endif
	PrintFloorTripleControlBetter(control,5);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值