Problem 16.“掏空”的三角形
阿新 • • 發佈:2019-01-05
Problem 16.“掏空”的三角形
題目簡述:
每行包含一個字元和一個整數n(0<n<41),整數n表示等腰三角形的高,用字元做一個掏空的三角形。每個樣板三角形之間應空上一行且遇到@字元就結束。
解題思路:
分析圖形的特點可知,若給定輸出行數為n的鏤空三角形,變數i為每行的行數,那麼最後一行元素的個數為2*i-1, 每行輸出的第一個符號前有n-i個空格,且從第二行起首尾兩個符號之間有2*i-3個空格(除最後一行)
細節處理:
注意題目給了一個要求為每個樣板三角形之間應空上一行。(本人就沒注意到,提交好幾遍才AC)
原始碼:
#include<iostream> #include<iomanip> using namespace std; int main() { int n,sign=1; char a; while(cin>>a>>n) { if(sign!=1) cout<<endl; if(a=='@') break; if(n!=1) { for(int i=1;i<=n;i++) { if(i==1) cout<<setw(n-i)<<" "<<a<<endl;//控制字元前的空格數 if(i!=1&&i!=n) cout<<setw(n-i)<<" "<<a<<setw(2*i-3)<<" "<<a<<endl;//控制字元前和字元之間的空格數 if(i==n) { for(int j=1;j<=2*n-1;j++) cout<<a; cout<<endl; } } } if(n==1) cout<<a<<endl; sign=0; } return 0; }