Codeup——577 | 问题 D: 沙漏图形 tri2str [1*+]

题目描述

问题:输入n,输出正倒n层星号三角形。首行顶格,星号间有一空格,效果见样例

输入样例

3

输出样例

* * *
 * * 
  * 
 * * 
* * *
数据规模 1<= n <=50 

思路:先把这个题目看成是打印一个倒三角,即只先从沙漏的上部分找规律,会发现在每一行中,奇数打印星号,偶数打印空格,且每行都有(2*(n-i)-1)个元素,把上部分弄好后就在下部分找规律,上下部分基本一样。

#include 
#include 
using namespace std;

int main()
{
	int n,i,j,blank,m;
	cin >>n;
	m=n;
	blank=0;
	for(i=0;i<n;i++){
		for(j=0;j<blank;j++)
			cout <<' ';
		blank++;
		for(j=0;j<(2*m-1);j++){
			if((j+1)%2!=0)
				cout <<'*';
			else
				cout <<' ';
		}
		m--;
		cout <<endl;
	}
	blank-=2;
	m=2;
	for(i=0;i<n-1;i++){
		for(j=0;j<blank;j++)
			cout <<' ';
		blank--;
		for(j=0;j<(2*m-1);j++){
			if((j+1)%2!=0)
				cout <<'*';
			else
				cout <<' ';
		}
		m++;
		if(i!=n-2)
			cout <<endl;
	}
}

你可能感兴趣的:(Codeup,c++)