首先要了解一个公式,将菱形的行数设为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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。