圖形題很惱人,看完這個,什么題都能套!
來看看一道最基礎的圖形題:
輸入一個大于二的數,輸出一個空心菱形。
輸入:
3
輸出:
*
* *
* *
* *
*
套個for回圈?NO!!!

注意!亮神器的時候到了:
解題技巧:逐層列印,算好域寬。
小二,上代碼!(萌新的,代碼清清爽爽
):
#include <iostream>
#include<iomanip>//setw()的頭檔案
using namespace std;
int n,num;//n是大于二的數,num是n*2-1的數。
void execute(int n)//列印輸出函式。
{
if(n==1)//特殊情況,特殊處理。
{
cout<<setw(num/2+1)<<"*"<<endl;//域寬包括*,“+1”很重要。
}
else
{
cout<<setw((num-n)/2+1)<<"*";
for(int i=1;i<=n-2;i++)//砍掉頭尾,輸出空格。
{
cout<<" ";
}
cout<<"*"<<endl;
}
}
int main()
{
cin>>n;
num=2*n-1;//注意,輸出菱形總行數是2*n-1,最中間一層加上空格也有2*n-1個字符。
for(int i=1;i<=num;i++)//從1到num,num行。
{
if(i%2==1)//每行總個數只可能為奇數。
{
execute(i);
}
}
for(int i=num-2;i>=1;i--)//控制num行之后的行數。
{
if(i%2==1)
{
execute(i);
}
}
return 0;
//完美結束。
}
初次發帖,如有錯誤,多多包涵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/115973.html
標籤:新手樂園
上一篇:[求助]PAT (Basic Level) Practice (中文)1003 我要通過! (20分) C++
下一篇:單鏈表編程題求助
