输入行数,打印上下对称的菱形
菱形分解为上三角和下三角两部分
设菱形输入行数为n;当前行数为i;
很显然,对于上三角部分
当行数n等于1时有0空格,1“ * ”;
当行数n等于2时,第一行有1空格,1“ * ”; 第二行有0空格,3“ * ”;
当行数n等于3时,第一行有2空格,1“ * ”; 第二行有1空格,3“ * ”; 第三行有0空格,5“ * ”;
即第i行前n-i个都为空格,第i行有2i-1个“ * ”
同理,下三角也是如此推导
代码如下:
#include <stdio.h>
int main()
{
int n,i,j;
printf("请输入菱形的行数:");
scanf("%d",&n);
//打印上三角
for(i=1;i<=n;i++)//打印第i行
{
for(j=1;j<=n-i;j++)//打印上三角第i行“*”前n-i个空格
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)//打印上三角第i行2i-1个“*”
{
printf("*");
}
printf("\n");
}
//打印下三角
for(i=1;i<=n-1;i++)//打印下三角的n-1行
{
for(j=1;j<=i;j++)//打印下三角第i行“*”前i个空格
{
printf(" ");
}
for(j=1;j<=2*(n-i)-1;j++)//打印下三角第i行2(n-i)-1个“*”
{
printf("*");
}
printf("\n");
}
return 0;
}
输出结果: