【C语言】输入行数,打印上下对称的菱形

输入行数,打印上下对称的菱形


菱形分解为上三角和下三角两部分
设菱形输入行数为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;
}

输出结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48701521/article/details/112737936
今日推荐