其他分享
首页 > 其他分享> > 打印空心菱形问题解析

打印空心菱形问题解析

作者:互联网

首先要了解一个公式,将菱形的行数设为a,(a+1)/2,即可得出第一行所占的字符长度(包括空格),根据规律,发现字符长度在递加直到其等于(a+1)/2,一样的公式但是意义不一样,一个是行数,一个是长度。可以发现,两个字母之间的长度等于行数-1;我们可以据此来控制输出空格的数量,具体代码见下图。以菱形的中心(公式同样为(a+1)/2)为基点左右+-两字母间的长度,就是字母的位置。但是当行数等于(a+1)/2时,条件发生改变,所以我们可以运用if,else函数。此时两字母间距为题目给定的目标行数减去目前的行数。

   最后一个for循环从最左端开始,至一行的末尾,一行的长度为第一行的长度加上两字母间距。

当长度等于中心+-两字母间距时,打印字符,否则打印空格。

#include <stdio.h>
int main()
{
	char c;
	int n,i,a,b,d;
	scanf("%c%d",&c,&n);
	a=n/2+1;
	c--;
	for(i=1;i<=n;i++)
	{
		
		if(i<=a)
		{
			b=i-1;
			c++;
		} 
		else 
		{
			b=n-i;
			c--;
		}
		for(d=1;d<=a+b;d++)
		{
			if(d==a-b||d==a+b)  printf("%c",c);
			else printf(" ");
		}
		printf("\n");
		
	}
	 
}
   

标签:间距,字母,空心,空格,菱形,行数,长度,解析
来源: https://blog.csdn.net/m0_62460019/article/details/121591300