2017年11月26日 星期日

[C_ST14-易] 數字直角三角形輸出(C++)

[C_ST14-易] 數字直角三角形輸出

問題描述:撰寫一個程式,給你一個數字,請你參考範例輸入輸出的形式顯示圖形樣式。
輸入說明輸入一個正整數,介於 1 ~ 9 。
輸出說明:請參考範例輸出。
範例:

Sample Input:Sample Output:
3
5
ST14-1
ST14-2
說明:
輸入一個層數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
{
    //奇數列時,由大到小
}

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     // [C_ST14-易] 數字直角三角形輸出  
  6.     int N;//層數  
  7.     while(cin >> N)  
  8.     {  
  9.         for(int i = 0;i < N;i++)  
  10.         {  
  11.             for(int j = 0;j < N-i-1;j++) //空白  
  12.             {  
  13.                 cout << " ";  
  14.             }  
  15.             if(i % 2 == 0)//偶數(0,2,4,6,8)  
  16.             {  
  17.                 for(int k = 1;k <= i+1;k++)  
  18.                 {  
  19.                     cout << k;  
  20.                 }  
  21.             }  
  22.             else         //奇數(1,3,5,7,9)  
  23.             {  
  24.                 for(int k = i+1;k > 0;k--)  
  25.                 {  
  26.                     cout << k;  
  27.                 }  
  28.             }  
  29.             cout << endl;  
  30.         }  
  31.     }  
  32.     return 0;  
  33. }  






沒有留言:

張貼留言