菱形的打印

首先我们可以将菱形分为上下两个部分,看成上三角形和下三角形

菱形的打印_第1张图片

红线圈起来的部分为上半部分,而下面的则为下半部分

因此我们可以根据这个发现来写代码


上半层的代码写法 

#include 
int main()
{
	int line = 0;//line为上半部分的层数
	scanf("%d", &line);
	for (int i = 0; i < line; i++)//i为行数
	{
		int j = 0;//j为打印空格和*的次数
		for (j = 0; j < line-i-1; j++)//例如line为4,那么j就是4-0-1=3,打印3个空格
		{
			printf(" ");
		}
		for (int j = 0; j 

我们输入line为4,那么第一个for循环i<4,循环4次,也就是打印4行,第二个for循环用来控制空格的打印,第三个for循环用来控制*的打印,让我们来整理一下思路:首先进入第一个for循环打印第一层,然后进入第二个for循环打印了3个空格,然后j++,直到条件不满足,进入第二个循环,打印一个*号之后,条件不满足,换行,然后紧接着打印第二行。

 菱形的打印_第2张图片

打印出来上半层其实就是正三角形


下半层代码的写法

for (int i = 0; i < line - 1; i++)//因为上半层包含的中间部分,而下半层没有,所以我们要减去1层
{
	int j = 0;
	for (j = 0; j 

还是老规矩,我们输入line为4,第三个for循环里面就为j<5,也就是打印5个*号,如果直接想打印5个*号的话是不是我们就会写成j<5,但是下一层怎么办呢,许多小伙伴是不是就会写成j<(line+1)-2呢?因为和层数有关我们不妨借助i来实现,我们将利用line和i可以写成(line-i),那么输入4的时候就是3了,line为4的话我们第一层可是要为5才对,所以我们就可以将这个式子×2,           也就是2*(line-i),但是还是不对,带入一下line==4,式子为8,所以我们可以再改进一下,变成2*(line-1-i),还是不对,我们再改进,变成2*(line-1-i)-1,现在对了,这个式子还是比较难,需要大家多看几遍

你可能感兴趣的:(c语言)