### 編號: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

### 編號: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個字元開始,每隔2個取出字元,得到Spebr
* 第2組加密文字: 由第2個字元開始,每隔2個取出字元,得到etme
* 將第1組和第2組加密文字合併成密文。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
```