---
# System prepended metadata

title: 選擇結構
tags: [課程]

---

---
###### tags: `課程`
---
# 選擇結構

----

### 選擇結構會根據條件式判斷的結果
### 選擇不同的應對方式 有以下三種語法

1. if
2. if-else
3. if-else if

---

# IF

----

### if是如果條件式成立，才執行敘述，否則不執行。
![](https://i.imgur.com/bNo2W7j.png)

----

## 範例code

```cpp=
if(a == 3){
    cout<<"A等於3耶";
}

if(a == 3)
    cout<<"A等於3耶";

if(a == 3) cout<<"A等於3耶";
```

---

# if-else

----

### if-else是如果條件式成立，執行敘述1；否則執行敘述2。
![](https://i.imgur.com/rBBLq2F.png)

----

```cpp=
if(a==3)
    cout<<"A等於3耶";
else cout<<"A不等於3耶";
```

---

# if-else if

----

### if-else if是依序判斷多個條件式，那個條件式成立，就執行此條件式內的敘述，若都不成立，就執行 else 
![](https://i.imgur.com/PDFCmvj.png)

----

```cpp=
if(a == 1) cout<<"A等於1耶";
else if(a == 2) cout<<"A等於2耶";
else if(a == 3) cout<<"A等於3耶";
else cout<<"A不等於1或2或3耶"
```

----

# 以上就是對選擇結構的大概介紹

---

# 進階用法

---

## A?B:C

----


## 語法
A?B:C
A is true -> B
A is false -> C
    
```cpp=
cout<<((a==3) ? "A等於3耶" : "A不等於3耶")<<endl;
```

---

## 短路

----

# &&運算子

(判斷式A)&&(判斷式B)

- 判斷式A 成立
    - 檢查B是否成立
- 否則直接跳過B

----

## assign

對一個數值做改變的時候

(ex. a = 3 or a = a+1)

如果成功操作

系統會對這件事情回傳 true

----

## 範例code

```cpp=
if(a == 3){
    b --;
    c +=2;
}

if(a == 3 && b--)
    c+=2;


```

---

# 例題

---

### 1.寫一程式，輸入 3 次測驗成績後，輸出最高分
![](https://i.imgur.com/qShJ7IT.png)

----

## 解答
![](https://i.imgur.com/a4u2LRc.png)

----

## 另解

```cpp=
int a,b,c
cin>>a>>b>>c;
cout<<max({a,b,c})<<endl;
```

---

### 2.輸入一個數，並判斷使用者所輸入的數是奇數還是偶數
![](https://i.imgur.com/mQpIlbX.png)

----

## 解答
![](https://i.imgur.com/5fO2fhh.png)

----

## 另解

```cpp=
int a;cin>>a;
if(a%2) cout<<"奇數"<<endl;
else cout<<"偶數"<<endl;

cout<<(a % 2 ? "奇數":"偶數")<<endl;
```

---

### 3.判斷學生的成績等級
      大於等於90分為A
      大於等於80分為B
      大於等於70分為C
      大於等於60分為D
      不及格為E
![](https://i.imgur.com/pBT40jB.png)

----

## 解答
```cpp    
#include <bits/stdc++.h>
using namespace std;
int32_t main() {
    int score;
    cout<<"Give :";
    cin >> score;
    if (score >= 90)
        cout << "get A" << endl;
    else if (score >= 80)
        cout << "get B" << endl;
    else if (score >= 70)
        cout << "get C" << endl;
    else if (score >= 60)
        cout << "get D" << endl;
    else
        cout << "get E" << endl;
    return 0;
}
```

---

### 4.試寫一程式，可以判斷所輸入座標的所在象限
![](https://i.imgur.com/fDAiWOo.png)

----

![](https://i.imgur.com/1X3ww7x.png)

----

### 另解

```cpp=
int x,y;
cin>>x>>y;
cout<<4-(abs(3*(x / abs(x))+2*(y / abs(y)))+4*(y / abs(y))+3)/4<<endl;
```


---
