---
# System prepended metadata

title: C++ 課程題目
tags: [EGame]

---



### 編號：01
### 題目：C++ 開發環境 - 撰寫第一個程式

### 內容
印出字串"Hello World"。

#### 輸入說明
無

#### 輸出說明
輸出字串"Hello World"

##### 範例輸入 #1
```
無
```
##### 範例輸出 #1
```
Hello
```


### 編號：02
### 題目：C++ 開發環境 – 取得輸入資料

### 內容
參考以下程式，使用 cin 取得姓名，輸出「Hello 姓名」（中間有一個空格）。
```
#include <iostream>
#include <string>

using namespace std;

int main() {
    string name;
    // 請從選項複製適當程式碼置於此處
    cout << "Hello " << name << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	name << cin;
2.	name >> cin;
3.	cin << name;
4.	cin >> name;

#### 輸入說明
輸入一個不包含空格的字串

#### 輸出說明
Hello 姓名。Hello和姓名中間要有一格空格

##### 範例輸入 #1
```
John
```
##### 範例輸出 #1
```
Hello John
```


### 編號：03
### 題目：資料型態 – 強制型別轉換

### 內容
參考以下程式，使用 cin 取得二個整數，輸出二數相除為浮點數的結果。
```
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    // 請從選項複製適當程式碼置於此處
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cout << float(a) / b << endl;
2.	cout << float(a / b) << endl;
3.	cout << a / b << endl;

#### 輸入說明
輸入一行，包含二個整數以空格分開
整數範圍 -2147483648 到 2147483647

#### 輸出說明
二數相除為浮點數的結果

##### 範例輸入 #1
```
7 2
```
##### 範例輸出 #1
```
3.5
```


### 編號：04
### 題目：變數命名及指派 – 格式化輸出

### 內容
參考以下程式，使用 cin 取得一個整數。
輸出此數轉成十六進位及八進位的的結果。
```
#include <iostream>
using namespace std;
int main()
{
    int i;
    cin >> i;
    // 請從選項複製適當程式碼置於此處
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cout << hex(i) << endl;
    cout << oct(i) << endl;
2.  cout << oct(i) << endl;
    cout << hex(i) << endl;
3.  cout << hex << i << endl;
    cout << oct << i << endl;
4.  cout << oct << i << endl;
    cout << hex << i << endl;

#### 輸入說明
輸入一個整數 i，0 <= i <= 10000

#### 輸出說明
輸出二行：
第一行是 i 的十六進位表示法
第二行是 i 的八進位表示法

##### 範例輸入 #1
```
15
```
##### 範例輸出 #1
```
f
17
```







### 編號：05
### 題目：運算子及運算元 - 算術運算子

### 內容
參考以下程式，使用 cin 取得 4 個整數，分別代表 a, b, c, d。
請分別計算 b/a + c/b + d/b 的整數計算結果，以及 d/b 的餘數。
```
#include <iostream>
using namespace std;
int main()
{
    int a, b, c, d;
    int ans1, ans2 ;
    cin >> a >> b >> c >> d;
    // 請從選項複製適當程式碼置於此處
    cout << ans1 << endl;
    cout << ans2 << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	ans1 = a/b + c/b + d/b;
    ans2 = d % b;
2.	ans1 = b/a + c/b + d/b;
    ans2 = d % b;
3.	ans1 = a/b + c/b + d/b;
    ans2 = d / b;
4.	ans1 = b/a + c/b + d/b;
    ans2 = d / b;

#### 輸入說明
輸入一行，包含 4 個整數以空格分開，分別代表 a, b, c, d
整數範圍 -2147483648 到 2147483647

#### 輸出說明
輸出二行
第一行是 b/a + c/b + d/b 的整數計算結果
第二行是 d / b 的餘數

##### 範例輸入 #1
```
2 3 4 5
```
##### 範例輸出 #1
```
3
2
```


### 編號：06
### 題目：運算子及運算元 – 平方及開根號

### 內容
參考以下程式，使用 cin 取得 3 個整數，分別代表 h, i, j。
請分別計算 h 的 i 次方，以及 j 的平方根。
```
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int h, i, j;
    int a, b;
    cin >> h >> i >> j;
    // 請從選項複製適當程式碼置於此處
    cout << a << endl;
    cout << b << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	a = sqrt(i, h);
    b = pow(j);
2.	a = sqrt(h, i);
    b = pow(j);
3.	a = pow(i, h);
    b = sqrt(j);
4.	a = pow(h, i);
    b = sqrt(j);

#### 輸入說明
輸入一行，包含 3 個整數以空格分開，分別代表 h, i, j
h: -100 到 100
i: 0 到 10
j: 0 到 10000

#### 輸出說明
輸出二行：
第一行是 h 的 i 次方
第二行是 j 的平方根（取整數）

##### 範例輸入 #1
```
2 3 9
```
##### 範例輸出 #1
```
8
9
```


### 編號：07
### 題目：運算子及運算元 – 關係運算子

### 內容
參考以下程式，由輸入取得二個整數，輸出這二個整數大小關係。
```
#include <iostream>
using namespace std;
int main()
{
    int m, n;
    int a, b, c;
    cin >> m >> n;
    // 請從選項複製適當程式碼置於此處
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	a = m > n;
    b = m < n;
    c = m == n;
2.	a = m > n;
    b = m < n;
    c = m = n;
3.	a = m < n;
    b = m > n;
    c = m == n;
4.	a = m < n;
    b = m > n;
    c = m = n;

#### 輸入說明
輸入一行，包含 2 個整數 m, n 以空格分開
-2147483648 <= m, n <= 2147483647

#### 輸出說明
輸出三行：
第一行是 m 是否大於 n
第二行是 m 是否小於 n
第三行是 m 是否等於 n

##### 範例輸入 #1
```
3 5
```
#### 範例輸出 #1
```
0
1
0
```


### 編號：08
### 題目：運算子及運算元 – 邏輯運算子Ⅰ

### 內容
參考以下程式，由輸入取得二個整數 a, b。
輸出三行，分別是以下三種結果：
1. NOT a
2. a > 0 且 b > 0
3. a > 0 或 b > 0

```
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    // 請從選項複製適當程式碼置於此處
    cout << not_a << endl;
    cout << and_result << endl;
    cout << or_result << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	bool not_a = !a;
    bool and_result = (a > 0) & (b > 0);
    bool or_result = (a > 0) | (b > 0);
2.	bool not_a = ~a;
    bool and_result = (a > 0) && (b > 0);
    bool or_result = (a > 0) || (b > 0);
3.	bool not_a = !a;
    bool and_result = (a > 0) && (b > 0);
    bool or_result = (a > 0) || (b > 0);
4.	bool not_a = ~a;
    bool and_result = (a > 0) & (b > 0);
    bool or_result = (a > 0) | (b > 0);

#### 輸入說明
輸入一行，包含 2 個整數 a, b 以空格分開
-10 < a, b < 10


#### 輸出說明
輸出三行，分別是以下三種結果：
1. NOT a
2. a > 0 且 b > 0
3. a > 0 或 b > 0

##### 範例輸入 #1
```
1 0
```
##### 範例輸出 #1
```
0
0
1
```

### 編號：09
### 題目：運算子及運算元 – 邏輯運算子Ⅱ

### 內容
參考以下程式，由輸入取得二個整數 a, b。
輸出二行，分別是以下二種結果：
1. a > 0 OR b > 0
2. a == 1 XOR b == 0

```
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    // 請從選項複製適當程式碼置於此處
    cout << or_result << endl;
    cout << xor_result << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	bool or_result = (a > 0) or (b > 0);
    bool xor_result = (a == 1) xor (b == 0);
2.	bool or_result = (a > 0) || (b > 0);
    bool xor_result = (a == 0) ^ (b == 0);
3.	bool or_result = (a > 0) | (b > 0);
    bool xor_result = (a == 1) ^ (b == 0);
4.	bool or_result = (a > 0) || (b > 0);
    bool xor_result = (a == 1) ^ (b == 0);

#### 輸入說明
輸入一行，包含 2 個整數 a, b 以空格分開
-10 < a, b < 10

#### 輸出說明
輸出二行，分別是以下二種結果：
1. a > 0 OR b > 0
2. a == 1 XOR b == 0

##### 範例輸入 #1
```
1 0
```
##### 範例輸出 #1
```
1
0
```


### 編號：10
### 題目：流程控制 – 關係運算子條件

### 內容
參考以下程式，由輸入取得二個整數 a, b。
依 a, b 二數的大小關係，輸出「a 小於 b」或「a 不小於 b」

```
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    // 請從選項複製適當程式碼置於此處
        cout << "a 小於 b" << endl;
    } else {
        cout << "a 不小於 b" << endl;
    }
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	if (a < b) {
2.	if (a <= b) {
3.	if (a > b) {
4.	if (a >= b) {

#### 輸入說明
輸入一行，包含 2 個整數 a, b 以空格分開
-10 < a, b < 10

#### 輸出說明
輸出一行，表示 a, b 二數的大小關係：
「a 小於 b」或「a 不小於 b」

##### 範例輸入 #1
```
10 20
```
##### 範例輸出 #1
```
a 小於 b
```

### 編號：11
### 題目：流程控制 – 三元運算子

### 內容
參考以下程式，由輸入取得一個整數 score。
請協助判斷 score 是及格或不及格

```
#include <iostream>
using namespace std;
int main()
{
    int score;
    cin >> score;
    // 請從選項複製適當程式碼置於此處
    cout << s << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	string s = score < 60 ? "及格" : "不及格";
2.	string s = score <= 60 ? "及格" : "不及格";
3.	string s = score > 60 ? "及格" : "不及格";
4.	string s = score >= 60 ? "及格" : "不及格";

#### 輸入說明
輸入一個整數 score
0 <= score <= 100

#### 輸出說明
輸出一行表示 score 及格或不及格

##### 範例輸入 #1
```
80
```
##### 範例輸出 #1
```
及格
```


### 編號：12
### 題目：流程控制 – 複合條件

### 內容
參考以下程式，由輸入取得一個整數 year 代表西元年。
請協助判斷 year 是閏年或平年

```
#include <iostream>
using namespace std;
int main()
{
    int year;
    cin >> year;
    // 請從選項複製適當程式碼置於此處
        cout << year << " 是閏年" << endl;
    } else {
        cout << year << " 是平年" << endl;
    }
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	if ((year % 4 != 0 && year % 100 != 0) || year % 400 == 0) {
2.	if ((year % 4 == 0 && year % 100 != 0) || year % 400 != 0) {
3.	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
4.	if ((year % 4 == 0 && year % 100 == 0) || year % 400 == 0) {

#### 輸入說明
輸入一個整數 year
0 <= year <= 10000

#### 輸出說明
輸出一行：
year 是閏年
或
year 是平年

##### 範例輸入 #1
```
2024
```
##### 範例輸出 #1
```
2024 是閏年
```

### 編號：13
### 題目：流程控制 – switch 語法

### 內容
參考以下程式，由輸入取得一個整數 month 代表月份。
如果 month 介於 1 到 4 之間，輸出 month 的中文寫法；
如果 month 大於 4，輸出「不是一到四月之間的月份」

```
#include <iostream>
using namespace std;
int main()
{
    int month;
    cin >> month;
    // 請從選項複製適當程式碼置於此處
        case 1:
            cout << "一月";
            break;
        case 2:
            cout << "二月";
            break;
        case 3:
            cout << "三月";
            break;
        case 4:
            cout << "四月";
            break;
        default:
            cout << "不是一到四月之間的月份";
    }
    return 0;

}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	if (month) {
2.	switch (month) {
3.	for (month) {
4.	where (month) {

#### 輸入說明
輸入一個整數 month，1 <= month <= 12

#### 輸出說明
輸出一行：
如果 month 介於 1 到 4 之間，輸出 month 的中文寫法；
如果 month 大於 4，輸出「不是一到四月之間的月份」

##### 範例輸入 #1
```
4
```
##### 範例輸出 #1
```
四月
```


### 編號：14
### 題目：上學放學

### 內容
輸入一個時間，請判斷上學或放學。
上學時間定義為上午七點半（包含七點半）到下午五點（不包含五點）。

#### 輸入說明
輸入為 24小時制。
格式為 hh(時) mm(分)，以空白隔開
0 <= hh <= 23
0 <= mm <= 59

#### 輸出說明
輸出一行上學或放學

##### 範例輸入 #1
```
17 00
```
##### 範例輸出 #1
```
放學
```

### 編號：15
### 題目：流程控制 – while 迴圈

### 內容
參考以下程式，由輸入取得一個整數 n。
計算 1 加到 n 的總和。

```
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int sum = 0;
    int i = 1;
    // 請從選項複製適當程式碼置於此處
        sum += i;
        i++;
    }
    cout << sum << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	while (i <= n) {
2.	while (i <= sum) {
3.	while (i < n) {
4.	while (i < sum) {

#### 輸入說明
輸入一個整數 n

#### 輸出說明
輸出 1 加到 n 的總和

##### 範例輸入 #1
```
10
```
##### 範例輸出 #1
```
55
```


### 編號：16
### 題目：流程控制 – for 迴圈

### 內容
參考以下程式，由輸入取得一個整數 n。
計算 1 加到 n 的總和。

```
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int sum = 0;
    // 請從選項複製適當程式碼置於此處
        sum += i;
    }
    cout << sum << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	for (int i = 0; i < n; i++) {
2.	for (int i = 1; i <= n; i++) {
3.	for (int i = 0; i < n; i++) {
4.	for (int i = 1; i <= n; i++) {

#### 輸入說明
輸入一個整數 n
0 <= n <= 1000

#### 輸出說明
輸出 1 加到 n 的總和

##### 範例輸入 #1
```
10
```
##### 範例輸出 #1
```
55
```


### 編號：17
### 題目：新冠病毒

### 內容
假設新冠病毒數量每一天會增加三倍，我們的檢驗試劑要在 X 個病毒才會顯示確診。
假設一開始接觸到了 a 個病毒，幾天後會確診（接觸病毒當天不算）?


#### 輸入說明
輸入一行，包含二個整數，分別代表 a, X，中間以空格分隔
a: 1 到 1000
X: 100 到 1000000

#### 輸出說明
輸出一個整數代表天數

##### 範例輸入 #1
```
1 10
```
##### 範例輸出 #1
```
3
```


### 編號：18
### 題目：函式 - 內建函式

### 內容
由輸入取得一個浮點數。
依序輸出該浮點數的絕對值、無條件進位整數值、無條件捨去整數值及四捨五入整數值。


#### 輸入說明
輸入一個浮點數 f

#### 輸出說明
依序輸出 f 的絕對值、無條件進位整數值、無條件捨去整數值及四捨五入整數值。

##### 範例輸入 #1
```
-2.6
```
##### 範例輸出 #1
```
2.6
-2
-3
-3
```


### 編號：19
### 題目：函式 - 重新組合字串

### 內容
由輸入取得一串文字。
將該字串重新組合成奇數字在前，偶數字在後的新字串後輸出。


#### 輸入說明
輸入一行文字字串 s。

#### 輸出說明
輸出一行新字串 s_new
s_new 是將原字串 s 重新組合成奇數字在前，偶數字在後的新字串。

##### 範例輸入 #1
```
apple
```
##### 範例輸出 #1
```
apepl
```


### 編號：20
### 題目：函式 – 溫度單位換算

### 內容
參考以下程式，由輸入取得華氏溫度。
請換算成攝氏溫度輸出。
換算公式如下：

$C = \frac{5}{9} \left( F - 32 \right)$

```
#include <iostream>
#include <iomanip>
using namespace std;

float f2c(float f);

float f2c(float f) {
  // 請從選項複製適當程式碼置於此處
  return c;
}

int main() {
    float F;
    cin  >> F;
    cout << fixed << setprecision(1) << f2c(F) << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	float c = f * (9 / 5) + 32;
2.	float c = f * (9 / 5) - 32;
3.	float c = (f + 32) * 5 / 9;
4.	float c = (f - 32) * 5 / 9;

#### 輸入說明
輸入一個浮點數 F，表示華氏溫度。

#### 輸出說明
輸出一個浮點數 c，表示 F 的攝氏溫度。

##### 範例輸入 #1
```
82.5
```
##### 範例輸出 #1
```
28.1
```


### 編號：21
### 題目：與惡的距離

### 內容
給定 4 個數字，請計算每個數字與 2 的距離總和。


#### 輸入說明
輸入一行，包含四個整數，中間以空格分隔
整數範圍 -2147483648 到 2147483647

#### 輸出說明
輸出一個整數代表距離總和

##### 範例輸入 #1
```
1 2 3 4
```
##### 範例輸出 #1
```
4
```


### 編號：22
### 題目：ASCII 對應

### 內容
利用迴圈印出 a 到 z。


#### 輸入說明
無

#### 輸出說明
輸出一行 a 到 z

##### 範例輸入 #1
```

```
##### 範例輸出 #1
![a-z](https://hackmd.io/_uploads/SytKVU6HR.png)



### 編號：23
### 題目：反轉大小寫

### 內容
輸入一個英文字元。
若輸入的英文字母為小寫則輸出大寫，反之則輸出小寫。


#### 輸入說明
輸入一個字元

#### 輸出說明
輸出一個字元
若輸入的英文字母為小寫則輸出大寫，反之則輸出小寫。

##### 範例輸入 #1
```
a
```
##### 範例輸出 #1
```
A
```


### 編號：24
### 題目：字元字串 – 輸入字串

### 內容
參考以下程式，由輸入取得一行文字。
再將該行文字輸出。

```
#include <iostream>
using namespace std;
int main() {
    string s1;
    // 請從選項複製適當程式碼置於此處
    cout << s1;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cout >> s1;
2.	cin >> s1;
3.	getline(cout, s1);
4.	getline(cin, s1);

#### 輸入說明
輸入一行文字

#### 輸出說明
將輸入的該行文字輸出

##### 範例輸入 #1
```
I Love C++
```
##### 範例輸出 #1
```
I Love C++
```


### 編號：25
### 題目：待辦清單

### 內容
由輸入取得 n 行文字，1 <= n <= 100，讀取至 EOF 為止。
輸出時，再由最後一項開始依序往前顯示。

#### 輸入說明
輸入 n 行文字，至 EOF 為止。

#### 輸出說明
輸出 n 行文字
由輸入 n 行文字的最後一項開始依序往前輸出。

##### 範例輸入 #1
```
刷牙
洗臉
去 7-11 繳費
```
##### 範例輸出 #1
```
去 7-11 繳費
洗臉
刷牙
```
##### 提示
使用 vector 存放字串


### 編號：26
### 題目：字元字串 – 字串長度

### 內容
參考以下程式，由輸入取得一行文字。
輸出該行文字的長度。

```
#include <iostream>
using namespace std;
int main() {
    string s;
    getline(cin, s);
    // 請從選項複製適當程式碼置於此處
    return 0;
}

```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cout << s.append();
2.	cout << s.find();
3.	cout << s.size();
4.	cout << s.empty();


#### 輸入說明
輸入一行文字

#### 輸出說明
輸出該行文字的長度

##### 範例輸入 #1
```
Hello World!
```
##### 範例輸出 #1
```
12
```


### 編號：27
### 題目：取得最後一個字

### 內容
由輸入取得一行文字。
程式輸出此行字串的最後一個字元。


#### 輸入說明
輸入一行文字

#### 輸出說明
輸出此行字串的最後一個字元

##### 範例輸入 #1
```
Hello World!
```
##### 範例輸出 #1
```
!
```


### 編號：28
### 題目：籬笆加密法

### 內容
籬笆加密法是一種古典加密方式，將明文字串加密成密文。
加密方式是先決定把所有文字折成數個組數(例如2組)，再來給各組加密。
例如分成二組為例（文字為September）:
* 第1組加密文字: 由第1個字元開始，每隔２個取出字元，得到Spebr
* 第2組加密文字： 由第２個字元開始，每隔２個取出字元，得到etme
* 將第１組和第２組加密文字合併成密文。Spebr＋etme＝Spebretme



#### 輸入說明
輸入一行文字

#### 輸出說明
籬笆加密法加密後的密文字串

##### 範例輸入 #1
```
September
```
##### 範例輸出 #1
```
Spebretme
```


### 編號：29
### 題目：凱薩密碼

### 內容
凱薩密碼是一種古典加密方式
1.	首先決定加密金鑰，當加密金鑰是3
2.	則明文字串中的每一個英文字母，都會轉換成該字母在英文字母序列中後面第3個字母。
3.	就是a會轉換為d，b會轉換為e，…依此類推。而x則會回到開始的a，y則轉換為b，z轉為c。

#### 輸入說明
一個全為小寫的字串

#### 輸出說明
凱薩密碼加密後的密文字串，加密金鑰為3

##### 範例輸入 #1
```
hello
```
##### 範例輸出 #1
```
khoor
```

### 編號：30
### 題目：更改附檔名

### 內容
由輸入取得 n 行檔案名稱，讀取至 EOF 為止。
將所有的檔案的副檔名改為 .png 後，依序輸出。

#### 輸入說明
輸入 n 行文字，至 EOF 為止。
1 <= n <= 100

#### 輸出說明
將所有的檔案的副檔名改為 .png 後，依序輸出

##### 範例輸入 #1
```
image.jpg
document.txt
presentation.pptx
file
```
##### 範例輸出 #1
```
image.png
document.png
presentation.png
file.png
```

### 編號：24
### 題目：字元字串 – 字串分割 

### 內容
參考以下程式，由輸入取得一行多個文字，用空白隔開。
將每個文字依序輸出，一個字一行。

```
#include<bits/stdc++.h>
using namespace std;

int main() {
    string str;
    getline(cin, str);
    stringstream ss(str); 
    string token;
    // 請從選項複製適當程式碼置於此處
        cout << token << endl;
    }
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	while (getline(ss, token, ',')) {
2.	while (getline(ss, token, ' ')) {
3.	while (getline(cin, token, ',')) {
4.	while (getline(cin, token, ' ')) {


#### 輸入說明
輸入一行用空白分隔的多個文字

#### 輸出說明
將每個文字輸出，一行一個

##### 範例輸入 #1
```
Hello this is C++
```
##### 範例輸出 #1
```
Hello
this
is
C++
```


### 編號：31
### 題目：加總

### 內容
輸入用半形逗號隔開的一串數字。
請將這些數字加總後輸出。


#### 輸入說明
輸入一行用半形逗號隔開的一串數字
數字範圍 -10000 到 10000

#### 輸出說明
輸出所有數字的總和

##### 範例輸入 #1
```
11,22,33,44,55
```
##### 範例輸出 #1
```
165
```


### 編號：32
### 題目：學生分數管理

### 內容
由輸入取得一組數據代表班上學生的國文成績。座號從 1 號起算，班上同學至少 8 個人。
接下來做以下處理:
1.  轉來一個同學座號在最後一號
2.  轉來一個同學座號 3 號後面座號順延
3.  座號 4, 5, 6 共 3 個同學轉走，後面往前遞補
4.  全班同學分數全部加10分

請輸出：
1.  現在班上總共多少人?
2.  全班的成績，以空白隔開


#### 輸入說明
輸入三行：
1.  第一行有 n 個整數，代表 n 個同學的成績，中間以空白隔開，n ≥ 8。
2.  第二行代表轉來最後一號同學的成績
3.  第三行代表轉來座號 3 號同學的成績


#### 輸出說明
輸出二行：
1. 第一行代表全班人數
2. 第二行輸出全班成績，以空白隔開

##### 範例輸入 #1
```
61 63 75 59 87 93 77 91
91
79
```
##### 範例輸出 #1
```
7
71 73 89 103 87 101 91
```







### 編號：33
### 題目：演算法 – 循序搜尋（找得到） 

### 內容
已知數列 {1, 9, 7, 3, 5}
參考以下程式，由輸入取得一個數字，輸出這個數字在數列出現的索引值。

```
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {1, 9, 7, 3, 5};
    int target;
    cin >> target;
    for (int i = 0; i < v.size(); i++){
        // 請從選項複製適當程式碼置於此處
    }
    return 0;
}

```
提示: 可從選項複製正確的程式碼執行。
選項
1.	if (v[i] != target) cout << i << endl;
2.	if (v[i] == target) cout << i << endl;
3.	if (v[i] != target) cout << i + 1 << endl;
4.	if (v[i] == target) cout << i + 1 << endl;


#### 輸入說明
輸入一個數字，是 1, 3, 5, 7, 9 其中一個。

#### 輸出說明
輸出這個數字在數列出現的索引值

##### 範例輸入 #1
```
9
```
##### 範例輸出 #1
```
1
```


### 編號：34
### 題目：演算法 – 循序搜尋（可能找不到） 

### 內容
已知數列 {1, 9, 7, 3, 5}
參考以下程式，由輸入取得一個數字，輸出這個數字在數列出現的索引值。
如果找不到輸出 -1

```
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {1, 9, 7, 3, 5};
    int target;
    cin >> target;
    bool found = false;
    for (int i = 0; i < v.size(); i++){
        if (v[i] == target) {
            // 請從選項複製適當程式碼置於此處
            found = true;
        }
    }
    if (!found) {
        cout << -1 << endl;
    }
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cout << v[i + 1] << endl;
    found = true;
2.	cout << v[i] << endl;
    found = true;
3.	cout << i + 1 << endl;
    found = true;
4.	cout << i << endl;
    found = true;


#### 輸入說明
輸入一個數字 n，0 <= n <= 10。

#### 輸出說明
如果 n 在數列中，輸出 n 在數列出現的索引值
如果 n 不在數列中，則輸出 -1

##### 範例輸入 #1
```
9
```
##### 範例輸出 #1
```
1
```




### 編號：35
### 題目：千里尋他千百度

### 內容
已知數列 {2, 8, -5, -6, 2, 4, -2, -10, -4, 4}
請設計一個程式，由輸入取得一個數字，程式輸出這個數字在數列第一次出現是第幾項（最左邊為第一項）。
若此數不存在於數列中，則輸出 0。



#### 輸入說明
輸入一個整數 n，-10 <= n <= 10

#### 輸出說明
n 在數列第一次出現是第幾項（最左邊為第一項）

##### 範例輸入 #1
```
8
```
##### 範例輸出 #1
```
2
```


### 編號：36
### 題目：演算法 – 比較並交換

### 內容
參考以下程式，由輸入取得二個數字 a, b。
如果 a > b ，請將二數交換後輸出。

```
#include <iostream>
using namespace std;

int main() {
    int a, b, cup;
    cin >> a >> b;
    if (a > b) {
        // 請從選項複製適當程式碼置於此處
    }
    cout << a << " " << b << endl;
    return 0;
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	cup = b;
    a = b;
    b = cup;
2.  cup = b;
    b = a;
    b = cup;
3.  cup = a;
    a = b;
    b = cup;
4.  cup = a;
    b = a;
    b = cup;


#### 輸入說明
輸入二個整數 a, b，0 <= a, b <= 10。

#### 輸出說明
輸出一行

##### 範例輸入 #1
```
5 2
```
##### 範例輸出 #1
```
2 5
```


### 編號：37
### 題目：演算法 – 氣泡排序

### 內容
參考以下程式，由輸入一由空白分隔的整數列。
使用氣泡排序法由小至大進行排序。每一輪比較之後，需要將目前狀態的串列輸出。

```
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

int main() {
    string str;
    getline(cin, str);
    istringstream sst(str);
    int num;
    vector<int> v;
    while (sst >> num) {
        v.push_back(num);
    }
    for (int j = 1; j <= v.size() - 1; j++){
        // 請從選項複製適當程式碼置於此處
            if (v[i - 1] > v[i]) {
                int cup = v[i - 1];
                v[i - 1] = v[i];
                v[i] = cup;
            }
        }
        for (int i = 0; i < v.size(); i++) {
            if (i < v.size() - 1) cout << v[i] << " ";
            else cout << v[i] << endl;
        }
    }
    
}
```
提示: 可從選項複製正確的程式碼執行。
選項
1.	for (int i = v.size() - 1; i > 0; i--) {
2.	for (int i = v.size() - 1; i > 0; i++) {
3.	for (int i = 0; i < v.size(); i--) {
4.	for (int i = 0; i < v.size(); i++) {


#### 輸入說明
一行以空格分開的整數

#### 輸出說明
每輪比較後，輸出結果串列

##### 範例輸入 #1
```
1 9 7 3 5
```
##### 範例輸出 #1
```
1 3 9 7 5
1 3 5 9 7
1 3 5 7 9
1 3 5 7 9
```

### 編號：38
### 題目：精打細算優惠

### 內容
某間便利商店推出優惠「買三送一」，優惠內容為任三件商品結帳取最低價者免費。
小新買了很多東西，並且思考怎樣結帳才能最便宜。
請你寫一個程式幫小新計算最便宜的優惠總價！

#### 輸入說明
輸入共一行，有若干個整數代表商品價格，最後一個數為 0 代表結束輸入。

#### 輸出說明
輸出最優惠情況的商品總價格。

##### 範例輸入 #1
```
10 20 30 40 50 60 0
```
##### 範例輸出 #1
```
160
```


### 編號：39
### 題目：二元搜尋法

### 內容
先由輸入取得一系列由空白分隔的整數列，以及想在數列中搜尋的值。
使用任何你所知道的方法將數列進行排序。先輸出排序後的數列。
再以二元搜尋法進行搜尋。每次尋找必須輸出當次的起始值及結束值。
如果找到則輸出找到索引值；如果找不到則輸出-1。

#### 輸入說明
依序分二次輸入，第一次是一行以空格分開的整數；第二次則是一個整數，代表要在數列中搜尋的值。

#### 輸出說明
先輸出排序後的串列。接著每次尋找都需要輸出起始和結束索引值，中間以空白分隔。
如果找到則輸出找到索引值；如果找不到則輸出-1。

##### 範例輸入 #1
```
10 4 2 5 1 3
4
```
##### 範例輸出 #1
```
1 2 3 4 5 10 
0 5
3 5
3 3
3
```




