---
# System prepended metadata

title: 【2-1】選擇結構 — if-else-else if

---

# 【2-1】選擇結構 — if-else-else if

1. 如果會下雨，就帶傘出門
2. 如果考試及格，就不用罰寫，否則要罰寫兩遍
3. 如果數學90分以上，就不用寫作業，或者英文85分以上，就不用寫作業，否則要寫作業

諸如此類的假設語氣，就是選擇結構，如果成立...就怎樣，如果不成立...就怎樣

讓我們來看看怎麼用程式寫出來！

## if

![image](https://hackmd.io/_uploads/BkAdhwYNle.png)

`if` 就是我們口頭上說的「如果...」，當我們給予的「條件」成立時，程式就會執行你指定的「內容」，反之，程式將會跳過這個判定式，繼續執行下去。

舉剛才的例子 1

```
如果 會下雨 就 帶傘出門
```

拆解一下語句

```
如果 條件A成立 就 執行動作B
```

再換成程式寫法

```c++
if(條件A){
    執行動作B;
}
```

### Python對照
```python
if 條件A:
    執行動作B
```

## if-else

![image](https://hackmd.io/_uploads/HySqnDtVle.png)

`if-else` 就是我們口頭上說的「如果...否則...」，當我們給予的「條件」成立時，程式就會執行你指定的「內容」，反之，條件不成立時，程式將會執行 `else` 的部分。

舉剛才的例子 2

```
如果 考試及格 就 不用罰寫 否則 要罰寫兩遍
```

拆解一下語句

```
如果 條件A成立 就 執行動作B 否則 執行動作C
```

再換成程式寫法

```c++
if(條件A){
    執行動作B;
}
else{
    執行動作C;
}
```
### Python對照
```python
if 條件A:
    執行動作B
else:
    執行動作C
```

## else if

![image](https://hackmd.io/_uploads/Sywo6jc4lg.png)

`else if` 通常用在需假設的條件數量 >=3 時，其意思和 `if` 相同。

```
如果 數學90分以上 就 不用寫作業 或者 英文85分以上 就 不用寫作業 否則 要寫作業
```

拆解一下語句

```
如果 條件A成立 就 執行動作B 否則 條件C成立 就 執行動作D 否則 執行動作E
```

再換成程式寫法


```c++
if(條件A){
    執行動作B;
}
else if(條件C){
    執行動作D;
}
else{
    執行動作E;
}
```
### Python對照
```python
if 條件A:
    執行動作B
elif 條件C:
    執行動作D
else:
    執行動作E
```

## 想一想
1. 下方兩組程式碼功能有何不同？
```cpp=
int x;
cin >> x;

if(x>=90){
    cout << "S rank"; 
}
if(x>=80){
    cout << "A rank";
}
if(x>=70){
    cout << "B rank";
}
if(x>=60){
    cout << "C rank";
}
else{
    cout << "F rank";
}
```
```cpp=
int x;
cin >> x;

if(x>=90){
    cout << "S rank"; 
}
else if(x>=80){
    cout << "A rank";
}
else if(x>=70){
    cout << "B rank";
}
else if(x>=60){
    cout << "C rank";
}
else{
    cout << "F rank";
}
```
<details> <summary>解答</summary>
    
第一組程式碼會針對**每個條件都判斷**，只要成立就輸出，以及最後一組判斷是 `if-else`，成立(x >= 60)會輸出 C，不成立會輸出 F；第二組程式碼會從頭(x >= 90)開始判斷，只要成立就執行，然後離開選擇結構。
    
舉例 x = 82
    
第一組程式碼會輸出
```
ABC
```
第二組程式碼會輸出
```
A
```
    
再舉一例 x = 45
    
第一組程式碼會輸出
```
F
```
第二組程式碼會輸出
```
F
```  
</details>

## 高手過招

三元運算符（ternary operator）是一種簡化的條件表達式，這個表達式在APCS觀念題很愛考。
```cpp=
if(condition){
    expression1;
}
else{
    expression2;
}
```
可以寫成
```cpp
condition ? expression1 : expression2;
```
### Python對照
```python
expression1 if condition else expression2
```
---

## 練習題

[U0007-這頓我請](https://code.dali.tc.edu.tw/problem/U0007)
[U0008-做點心](https://code.dali.tc.edu.tw/problem/U0008)

---

聯絡方式：codecodefunny@gmail.com
最後編修時間：2025/07/22 子柚筆