【1星難度】C++程序設計:輸出n層金字塔圖形

【問題描述】

輸入金字塔的層數n(n爲正整數),輸出由字符*組成的金字塔圖形。最底層的字符數爲2n-1,最上層字符數爲1。字符圖形水平居中對齊(使用空格填充)。

 

【樣例輸入】

5

 

【樣例輸出】

    *
   ***
  *****
 *******
*********

 

【分析】

輸出金字塔圖形的關鍵就是確定每一行空格數、星號數與金字塔層數、所在行數的關係。

每一行應該輸出多少星號很容易確定,第i行輸出2i-1個星號就可以了。

那麼在每一行的星號之前,輸出需要多少空格呢?這就與金字塔的層數n有關了。

 

我個人認爲這樣計算空格數最爲簡單:

首先計算第一行的空格數x。第一行有一個星號,這個星號左邊有x個空格,右邊也有x個空格的位置。

也就是說,第一行有2x+1個字符。

最後一行的空格數爲0,只有2n-1個星號,n爲金字塔的層數。

也就是說,最後一行有2n-1個字符。

怎樣保證金字塔的對稱性?對了,就是每一行的字符數都相同,所以:2x+1=2n-1,x是多少不用再解釋了吧!

我們不需要求每一行的空格數,每一行都比上一行少輸出一個空格就可以了。

 

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
	int n;
	cin>>n;
	int i,count,m,konggeshu;
	konggeshu=(2*n-2)/2;
	for(i=1;i<=n;i++){
		count=2*i-1;
		for(m=1;m<=konggeshu;m++)
			cout<<" ";
		for(m=1;m<=count;m++)
			cout<<"*";
		konggeshu--;
		cout<<endl;
	}
	return 0;
}

 

發佈了25 篇原創文章 · 獲贊 28 · 訪問量 6005
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章