[C_ST14-易] 數字直角三角形輸出
問題描述:撰寫一個程式,給你一個數字,請你參考範例輸入輸出的形式顯示圖形樣式。
輸入說明:輸入一個正整數,介於 1 ~ 9 。
輸出說明:請參考範例輸出。
範例:
輸入說明:輸入一個正整數,介於 1 ~ 9 。
輸出說明:請參考範例輸出。
範例:
Sample Input: | Sample Output: |
3 5 |
說明:
輸入一個層數N。
以N=5為例,說明順序一律由上至下,由左至右。
可以發現偶數列與奇數列,一個由大到小一個由小到大。
偶數列(0,2,4,5,6,8) : 數字由小到大(123456789)
奇數列(1,3,5,7,9) : 數字由大到小(987654321)
一列中不只有數字還有空白,我用*當作空白,比較方便顯示。
第零列 ****1 -> 4個空白,1個數字,偶數行(由小到大)
第一列 ***21 -> 3個空白,2個數字,奇數行(由大到小)
第二列 **123 -> 2個空白,3個數字,偶數行(由小到大)
第三列 *4321 -> 1個空白,4個數字,奇數行(由大到小)
第四列 12345 -> 0個空白,5個數字,偶數行(由小到大)
改成數字及符號N = 5, 假設現在在第i列
i = 0:
第i列
****1 -> N-1-i個空白,i+1個數字,偶數行(由小到大)
i = 1:
第i列
***21 -> N-1-i個空白,i+1個數字,奇數行(由大到小)
i = 2:
第i列
**123 -> N-1-i個空白,i+1個數字,偶數行(由小到大)
i = 3:
第i列
*4321 -> N-1-i個空白,i+1個數字,奇數行(由大到小)
i = 4:
第i列
12345 -> N-1-i個空白,i+1個數字,偶數行(由小到大)
再來只要寫個判斷式來對奇偶列作不同的動作
if(偶數)
{
//偶數列時,由小到大
}
else
{
//奇數列時,由大到小
}
- #include <iostream>
- using namespace std;
- int main() {
- // [C_ST14-易] 數字直角三角形輸出
- int N;//層數
- while(cin >> N)
- {
- for(int i = 0;i < N;i++)
- {
- for(int j = 0;j < N-i-1;j++) //空白
- {
- cout << " ";
- }
- if(i % 2 == 0)//偶數(0,2,4,6,8)
- {
- for(int k = 1;k <= i+1;k++)
- {
- cout << k;
- }
- }
- else //奇數(1,3,5,7,9)
- {
- for(int k = i+1;k > 0;k--)
- {
- cout << k;
- }
- }
- cout << endl;
- }
- }
- return 0;
- }
沒有留言:
張貼留言