详细步骤打印实心菱形

#学习思路#


         打印菱形流程分两半


        假设n是5,那么上半部分是3,下半部分就是2。

         我们打印上半部分的菱形的时候,上半部分的菱形打印次数是比下半部分菱形多一次的,而下半部分的菱形比上半部分少一次。

        我们的总思路为:先打印上半部分菱形——>找到行与空格菱形之间的关系——>打印下半部分菱形——>找到下半部分行与空格的关系——>完成菱形

int main()
{
	int n ;
	scanf_s("%d", &n);
	for (int i=1;i<=(n+1) /2; i++)
	{
		for ( int j = 1; j <=(n+1)/2-i; j++)
		{
			printf(" ");
		}
		for ( int k = 1; k <= 2*i-1; k++)
	    
		{
			printf("*");	
			
		}printf("\n");
	}

打印菱形之前首先要有一个思路,那就是我们先找出他们之间存在什么联系:

        首先我们自定义一个n,是我们想要的几阶菱形,然后我们从键盘输入。

        这里为了解释清楚就先把n定义为5来讲。

        因为需要循环打印空格和菱形,所以我们就第一时间想到的是循环,先写一个for循环,然后再在循环里面嵌套两个循环,一个是打印空格,一个打印星号,记住空格后面是紧跟着星号的。

        首先我们把外层循环定义为i,它管理这个整体的循环次数,然后内层我们打印空格为j,打印星号为k。

        接下来找他们之间有什么关系:

        找到他们之间相互的关系之后,那个关系就是打印空格和星号的关键点!!!


但是特别记住,外层循环一次内层可不只是循环一次,当时我没注意到这一点想了九个小时!


        记住,外层第一次循环进入的时候,遵循的是第一个内循环的规律,就是外循环进入第一次,内循环循环完他的条件才会进入第二个内循环,当时因为这个搞混了想了好长时间,大家避避坑,把规律找到这个题是很简单的!!!

         这就是菱形的下半部分了,直到找到前半部分的规律,后半部分就很简单了。

	for (int i=1;i<=(n+1)/2-1;i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf(" ");
		}
		for (int k = 1; k <= n-2*i; k++)
		{
			printf("*");

		}printf("\n");

	}return 0;
}

        哪里不明白可以在评论区说出来,因为我想这个挺长时间的,所以哪里有问题一点竭尽全力帮助!!


下图我整理好的代码及思路,希望可以帮助到大家!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值