c语言打印一个菱形!!小白思路篇!!

目录

1.做题思路

2.怎么实现呢

3.代码的解释

第一个for循环用于打印多行

第二个for循环用于打印空格,有菱形可以看出第一行的空格为6个,所以line - 1 - i的意思是,line - 1是因为第一行已经有一个星星,所以要先减一,- i的意思是每行少一个空格。

第三个for循环则是用来打印打印星星,因为每一行星星加两个,且第一行本来就存在1个星星所以,第二个表达式中 2 * i + 1的含义是每一行多两个星星且还有第一行的第一个星星。


用C语言在屏幕上输出以下图案:

1.做题思路

一个菱形可以拆解为两个三角形一个大一个小,由此思路就是先打印上面的三角形在打印出下面的三角形。

2.怎么实现呢

第一行只有一个星星后续每一行多两个星星(前面的星星是把空格取代,后面的星星是自然多出的),再看每一行的空格数量,明显空格的数量是自第一行每一行减一的。这样就可以构思出代码。

3.代码的解释

输入要打印的上半三角的行数,后利用for循环的嵌套

第一个for循环用于打印多行
第二个for循环用于打印空格,有菱形可以看出第一行的空格为6个,所以line - 1 - i的意思是,line - 1是因为第一行已经有一个星星,所以要先减一,- i的意思是每行少一个空格。
第三个for循环则是用来打印打印星星,因为每一行星星加两个,且第一行本来就存在1个星星所以,第二个表达式中 2 * i + 1的含义是每一行多两个星星且还有第一行的第一个星星。

记得最后要换行哦!!!。

本题对于初学者而言还是挺绕的,不懂的uu可以多看看熟悉一下奥


int main()
{
	int line = 0;
	int i = 0;
	scanf("%d", &line);//7
	//打印上半部分
	for(i=0; i<line; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for(j=0; j<line-1-i; j++)
		{
			printf(" ");
		}
		//打印*
		for(j=0; j<2*i+1; j++)
		{
			printf("*");
		}
		printf("\n");
	}


	//打印下半部分
	for(i=0; i<line-1; i++)
	{
		//打印一行
		int j = 0;
		for(j=0; j<=i; j++)
		{
			printf(" ");
		}
		for(j=0; j<2*(line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}