打印菱形

要考虑打印一个菱形,我们首先将菱形分为上下两个三角形,先打印上三角,再打印下三角。

对于上三角形,假设最多一行有13个*,那么我们可以定义一个left(L)=right(R)=最中间位置(6)。

对于上三角形,我们首先要打印7行,因此确定一个for循环:

for (int i = 0; i < 7; i++);//打印 7行

对于每一行我们需要打印13个字符:

for (int j=0;j<13;j++);//从第一个字符打印到第十三个字符

而L和F是我们判断打印*还是空格的一个范围:

if (j >= L && j <= R)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}

每一行打印完,L都需要向左移一位,R需要向右移一位

打印上三角形:

int main() //打印上三角形
{
	int L = 6;
	int R = 6;
	for (int i = 0; i < 7; i++)
	{
		for (int j=0;j<13;j++)
		{
			if (j >= L && j <= R)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		L--;
		R++;
		printf("\n");
	}//L=-1  R=13上

上三角形打印完毕,L会变成-1,R会变成13,越界了,因此我们首先需要执行一次L++,R--,此时L=0,R=12,再来打印下三角形。

对于下三角形,我们只需要打印6行,且第一行便会在i=1处开始打印*,

因此首先需要执行L++,R--,此时L=1,R=11

	L++;
	R--;
	for (int i = 0 ; i < 6; i++)
	{
		L++;
		R--;
		for (int j = 0; j < 13; j++)
		{
			if (j >= L && j <= R)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}
}

打印完整菱形:

int main() //打印菱形
{
	int L = 6;
	int R = 6;
	for (int i = 0; i < 7; i++)
	{
		for (int j=0;j<13;j++)
		{
			if (j >= L && j <= R)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		L--;
		R++;
		printf("\n");
	}//L=-1  R=13
	L++;
	R--;
	for (int i = 0 ; i < 6; i++)
	{
		L++;
		R--;
		for (int j = 0; j < 13; j++)
		{
			if (j >= L && j <= R)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
	}
}