打印空心菱形问题解析
作者:互联网
首先要了解一个公式,将菱形的行数设为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