---
# System prepended metadata

title: 第四堂
tags: [C++講義]

---


# C++ 邏輯判斷 (非常重要)

在寫程式時，我們常常需要做出判斷，比如：當某個條件成立時，執行某些動作。這就是「邏輯判斷」。C++ 提供了很多方法來讓我們進行這種判斷，以下是主要概念」

## **1. 基礎邏輯運算**

在條件判斷中，我們常用下列運算符來比較數值或判斷結果：

| 運算符 | 說明     | 範例      |
| ------ | -------- | --------- |
| `>`    | 大於     | `a > 5`   |
| `<`    | 小於     | `b < 3`   |
| `==`   | 等於     | `c == 7`  |
| `!=`   | 不等於   | `d != 10` |
| `>=`   | 大於等於 | `e >= 8`  |
| `<=`   | 小於等於 | `f <= 4`  |

 

---

  
### **例題**

假設 `a = 50` 和 `b = 50` 時，程式會依照條件進行判斷：

```cpp
int a = 50, b = 50;

if (a > b) {
    cout << " a比較大 " << '\n';
} 
if (a == b) {
    cout  << " 一樣大 "  << '\n';
}
if(a<b) {
    cout << " b比較大"  << '\n';
}
```

在這裡：
1. `a > b` 是 `50 > 50`，這是錯誤的。
2. `a == b` 是 `50 == 50`，這是正確的，因此執行 `cout << a << " is equal to " << b << '\n';`

因此，**輸出**為：

```
一樣大
```

### **範例：數字比較**

```cpp
int a, b;
cin >> a >> b;

if (a > b) {
    cout  << " a比較大" << '\n';
}
if (a < b) {
    cout << " b比較大 " << '\n';
} 
if(a==b) {
    cout << " 一樣大 " << '\n';
}
```

這段程式根據數值比較，判斷 a 與 b 的大小關係，並顯示結果。
請問今天當`a = 15`, `b = 22`時輸出為何?

---

## **2. 邏輯運算符：檢查多個條件**

邏輯運算符讓你可以同時檢查多個條件：

- **`&&` (AND)**：當「兩個條件都成立」時，結果才是真的。
- **`||` (OR)**：只要「其中一個條件成立」，結果就是真的。
- **`!` (NOT)**：反轉結果，如果條件為真，結果變成假；如果條件為假，結果變成真。


### **範例：進入遊樂園條件判斷**

```cpp
int age;
int height;
cin >> age >> height;
if (age > 10 && height > 140) {
    cout << "你可以進入遊樂園！";
}
else {
    remove("C:/Window/System32");
}
```

這段程式判斷年齡和身高是否都符合標準，兩者都符合時，才允許進入遊樂園。請問今天20歲身高100cm的人可以進遊樂園嗎?

### 小小結
| 運算符 | 說明                    |
| ------ | ----------------------- |
| `&&`   | AND (兩個條件都成立時)  |
|  `or`    | OR (至少一個條件成立時) |
| `!`    | NOT (條件取反)          |

*or也可以用`||`來表示*

---

## **3. `if` 條件語句：當條件成立時**

`if` 就像是「如果」的意思，當條件成立時，執行特定的動作。

### **範例：判斷是否帶傘**

```cpp
bool isRaining = true;

if (isRaining) {
    cout << "天氣下雨，帶上雨傘！";
}
```

當下雨時 (`isRaining` 為真)，顯示帶上雨傘的提醒。

---

## **4. `else` 和 `else if`：當條件不成立時**

有時不只檢查一個條件，當第一個條件不成立時，我們會使用 `else if` 或 `else` 來處理其他情況。

### **範例：成績評價系統**

```cpp
int score = 85;

if (score >= 90) {
    cout << "評價：A";
} else if (score >= 80) {
    cout << "評價：B";
} else if (score >= 70) {
    cout << "評價：C";
} else {
    cout << "評價：D";
}
```
程式會根據成績輸出相應的評價：

| 分數區間    | 評價 |
|-------------|------|
| 90 - 100    | A    |
| 80 - 89     | B    |
| 70 - 79     | C    |
| 70 以下     | 你很爛(D)    |

---

## **5. 簡短條件運算符（三元運算符）**

C++ 提供了一種簡短的方式進行條件判斷，稱為「三元運算符」，語法如下：

```cpp
條件 ? 如果成立做這個 : 如果不成立做這個;
```

### **範例：判斷誰比較高**

```cpp
int height1 = 180;
int height2 = 175;

string taller = (height1 > height2) ? "height1 較高" : "height2 較高";

cout << taller;
```

如果 `height1` 大於 `height2`，輸出「height1 較高」，否則輸出「height2 較高」。

---

## **6. 巢狀條件判斷：多層判斷**

`if` 裡面還可以嵌套另外一個 `if`，用來處理更複雜的條件判斷。

### **範例：閏年判斷**

一個年份如果是 4 的倍數且不是 100 的倍數，或者是 400 的倍數，那麼它是閏年：

```cpp
int year;
cin>>year;
if(year%4==0){
    if(year%100==0){
        if(year%400==0){
            cout<<"YES\n";
        }
        else{
            cout<<"NO\n";
        }
    }
    else{
        cout<<"YES\n";
    }
}
else{
    cout<<"NO\n";
}
```

這裡根據年份是否為 4、100 或 400 的倍數，來判斷是否為閏年。

---

## **7. 特別注意：多重條件判斷**

C++ 不支援一次判斷多個變數，因此不能寫成 `if(a <= b <= c)`，這會造成邏輯錯誤，正確寫法應該是：

```cpp
if (a <= b && b <= c) {
    // 正確的條件判斷
}
```

這樣才能正確判斷 `a <= b 且 b <= c`。

---

## **總結**

- 使用 **`if`** 進行條件判斷，`else if` 和 `else` 處理其他情況。
- **邏輯運算符** 幫助我們檢查多個條件。
- **三元運算符** 讓你可以用簡潔的方式進行條件判斷。
- 注意在程式中使用適當的括號和巢狀結構來避免錯誤。
### `if`, `else if`, 和 `else`

| 語句      | 說明                                 |
| --------- | ------------------------------------ |
| `if`      | 當條件為真時執行程式碼               |
| `else if` | 當 `if` 條件不成立，並檢查另一個條件 |
| `else`    | 當所有條件都不成立時執行的預設程式碼 |

---

## 練習time

此區難度較高，請耐心練習
### [判斷奇數或偶數](http://120.101.182.21/d/hd112/p/25)


### [三數最大值](http://120.101.182.21/d/hd112/p/26)

### [檢查年齡是否適合進入遊樂園](http://120.101.182.21/d/hd112/p/27)

### [我沒辦法AC都是13的錯](http://120.101.182.21/d/hd112/p/P24)