2017年10月6日 星期五

[C_OT44-易] 用星號(“ * ”)畫等腰梯形(C++)

[C_OT44-易] 用星號(“ * ”)畫等腰梯形

問題描述 
有天小美在學校上體育課的時候,老師教到體操跳馬的項目,小美看到跳馬是等腰梯形,覺得非常有趣,想用 ”*” 記號把他畫出來,他也覺得等腰梯形上底太小不像跳馬,決定用九個 ”*” 記號當作上底向下延伸,請問小美要怎麼畫呢 ?
輸入說明 
輸入一開始給定一個正整數 n ,代表欲畫出的等腰梯形高度。
輸出說明 
每一個測試範例的輸出為用星號畫出高為 n 的實心等腰梯形。

他要從九為上底的梯形梯形,n代表梯形的高,也就是輸出幾列(直行橫列)

****
****
****
綠底為第一列,所以共三列
橘字為第一行,所以共四行
再來就有另一個問題,怎麼讓她是梯形,以下黃底和綠底的"*"代表空白" ",我們只需要處理左手邊的空白(黃底)即可
n = 3

*************
*************
*************
//第一列:n-1的空白,9個"*"
//第二列:n-2的空白,10個"*"
//第三列:n-3的空白,11個"*"
n = 4

***************
***************
***************
***************
//第一列:n-1的空白,9個"*"
//第二列:n-2的空白,10個"*"
//第三列:n-3的空白,11個"*"
//第四列:n-4的空白,12個"*"

n = 5

*****************
*****************
*****************
*****************
*****************
//第一列:n-1的空白,9個"*"
//第二列:n-2的空白,10個"*"
//第三列:n-3的空白,11個"*"
//第四列:n-4的空白,12個"*"
//第五列:n-5的空白,13個"*"

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     // [C_OT44-易] 用星號(“ * ”)畫等腰梯形  
  6.     int n, p=0;  
  7.     while(cin >> n)  
  8.     {  
  9.         int sp = (n-1);  
  10.         if(n == 0)  
  11.         {  
  12.             cout << "No answer" << endl;  
  13.         }  
  14.         else  
  15.         {  
  16.             for(int i = 1;i <= n;i++)  
  17.             {  
  18.                 for(int x = sp;x > 0;x--)  
  19.                 {  
  20.                     cout << " ";  
  21.                 }  
  22.                 sp--;  
  23.                 for(int j = 1;j <= 9;j++)  
  24.                 {  
  25.                     cout << "*";  
  26.                 }  
  27.                 if(p != 0)  
  28.                 {  
  29.                     for(int k = (n-p);k < n;k++)  
  30.                     {  
  31.                         cout << "**";  
  32.                     }  
  33.                 }  
  34.                 p++;  
  35.                   
  36.                 cout << endl;  
  37.             }  
  38.         }  
  39.         p=0;  
  40.     }  
  41.     return 0;  
  42. }  




[C_OT42-易] 用星號“ * ”畫矩形(C++)

[C_OT42-易] 用星號“ * ”畫矩形

問題描述 :
有天老師心血來潮叫班上的同學畫圖,可是卻不能用手畫要用電腦畫出,小明想要用 ”*” 記號畫出一個 m 乘 n 實心矩形, 聰明的小明一下就想出了解決的方法,請問小明是怎麼畫的呢 ?

輸入說明 :
輸入一開始給定兩個正整數,各代表 m 跟 n 的值,也就是矩形的長以及寬兩邊。

輸出說明 :
每一個測試範例的輸出為用星號畫出的 m 乘 n 實心矩形。

範例 :

輸入範例輸出範例
4 5

****
****
****
****
****
0 9no answer
6 2******
******
8 0no answer
5 5*****
*****
*****
*****
*****

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     // [C_OT42-易] 用星號“ * ”畫矩形  
  6.     int m, n;  
  7.     //橫的是列,m = 每列有m個*,n = 有幾列
  8.     while(cin >> m >> n)  
  9.     {  
  10.         if(m == 0 || n == 0)  //m或n有一個是零,那就沒答案
  11.         {  
  12.             cout << "no answer" << endl;  
  13.         }  
  14.         else  
  15.         {  
  16.             for(int i = 1;i <= n;i++)   //第一個for迴圈是控制有幾列 => n
  17.             {  
  18.                 for(int j = 1;j <= m;j++)  //每列有幾個* => m
  19.                 {  
  20.                     cout << "*" ;  
  21.                 }  
  22.                 cout << endl;  
  23.             }  
  24.         }  
  25.     }  
  26.     return 0;  
  27. }  

[C_OT14-易] 九九乘法表(C++)

[C_OT14-易] 九九乘法表

問題描述 :
輸入兩數M、N整數,去設定九九乖法表的底限,列印出M × N為最大值之乘法表。
輸入說明:
輸入M、N兩整數,分別以一空格為間隔。
輸出說明:
列印出M、N兩整數為最大值之乘法表。
範例:
輸入範例輸出範例
1 11 x 1 = 1
1 21 x 1 = 1
1 x 2 = 2
3 11 x 1 = 1
2 x 1 = 2
3 x 1 = 3
2 21 x 1 = 1
1 x 2 = 2
2 x 1 = 2
2 x 2 = 4
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     // [C_OT14-易] 九九乘法表  
  6.     int M, N;  
  7.     while(cin >> M >> N)  
  8.     {  
  9.         for(int i = 1;i <= M; i++)  
  10.         {  
  11.             for(int j = 1;j <= N;j++)  
  12.             {  
  13.                 cout << i << " x " << j << " = " << i*j << endl;  
  14.             }  
  15.         }  
  16.     }  
  17.     return 0;  
  18. }  

[C_CH03-易] 判斷基數偶數(C++)

[C_CH03-易] 判斷基數偶數

問題描述:
試寫一個程式,判斷使用者輸入的數值為奇數或是偶數。
輸入說明:
輸入一個整數
輸出說明:
輸出奇數或偶數
範例:
輸入範例:輸出範例:
3
6
odd
even

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     int num;   //帶測數字
  6.     while(cin >> num)  
  7.     {  
  8.         if(num % 2 == 0)  //被二整除者為偶數
  9.         {  
  10.             cout << "even" << endl;  
  11.         }  
  12.         else              //否則為基數
  13.         {  
  14.             cout << "odd" << endl;  
  15.         }  
  16.     }  
  17.     return 0;  
  18. }  

[C_MM40-易] 1~N之間的總和(C++)

[C_MM40-易] 1~N之間的總和

問題描述:撰寫一個程式,輸入一個正整數 N ( 0 < N < 100 ) ,計算 1 ~ N 之間 的總和。
輸入說明:輸入一個正整數。
輸出說明:輸出總和,顯示格式如範例。
範例:
Sample Input:Sample Output:
11 = 1
21 + 2 = 3
31 + 2 + 3 = 6

輸出格式要求是1 + 2 + 3 = 6, 所以分開輸出,|是切割的分隔線,像這樣  1 |+ 2 |+ 3 |= |6|

  1. #include <iostream>  
  2. using namespace std;  
  3. //[C_MM40-易] 1~N之間的總和  
  4. int main() {  
  5.     int N, sum;  //1~N,總和
  6.     while(cin >> N)  
  7.     {  
  8.         for(int i = 1;i <= N;i++)  //計算總和
  9.         {  
  10.             sum = sum + i;  
  11.         }  
  12.         for(int j = 1;j <= N;j++)  //輸出格式要求
  13.         {  
  14.             if(j == 1)  
  15.             {  
  16.                 cout << "1";  
  17.             }  
  18.             else  
  19.             {  
  20.                 cout << " + " << j;  
  21.             }  
  22.         }  
  23.         cout << " = " << sum << endl;  
  24.         sum=0;  
  25.     }  
  26.     return 0;  
  27. }