B2025 输出字符菱形 (适用性更强的解法)

题目描述

用 * 构造一个对角线长 55 个字符,倾斜放置的菱形。

输出格式

如样例所示。用 * 构成的菱形。

  *
 ***
*****
 ***
  *
int main()
{
    printf("  *\n ***\n*****\n ***\n  *");//输出。
    return 0;
}

题解给出的是面向结果直接打印,不具有一般性,更抽象的题目可改写为,输入数字N,打印中间星数为N的菱形。而示例B2025可作为本题的特殊情况。那么一般代码如下。

目标是找到空格数和星数的相互关系,本解答分上三角和下三角来分别打印。

上三角:

层数 = 长度 / 2

空格数 = 上三角层数-1,直到n = 1

星数 从1开始+=2,直到n = 上三角层数

下三角:

层数较上三角少1

空格数 从1开始-=2,直到n = 下三角层数

星数 = 2*层数-1 或者 N-=2直至N=1

#include<iostream>
using namespace std;
int main()
{
	int num ;
    cin>>num;
	int i_height = num/2 +1; // height of uppper taiangle
	int ini = 1;	  // initialize variable 
	
	int i_low = i-1; // height of low tri
	while(i_height > 0)     // print uppper triangle
	{
		int j = i_height-1;
		while(j-- > 0)
		{
			cout<<" ";
		}
		
		int in_high = ini;
		while(in_high-- > 0)
		{
			cout<<"*";
		}
		cout<<endl;
		
		ini+=2;
		i_height--;
	}
	
	ini = 1; 

	while(i_low > 0)
	{
		int j = ini;
		while(j-- > 0)
		{
			cout<<" ";
		}
		
		int ini_low = i_low*2-1;
		while(ini_low-- > 0)
		{
			cout<<"*";
		}
		cout<<endl;
		
		ini++;
		i_low--;
	}
	
	
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值