新手也能懂!用 C 語言輕鬆判斷奇偶數的方法(附範例程式碼)

1. 前言

當你開始學習 C 語言時,會遇到各種程式設計的基礎課題。其中「偶數與奇數的判定」是對初學者而言容易理解,且能培養實作能力的主題之一。 偶數與奇數的判定處理在學校作業以及實際的程式開發中都常被使用,因此是值得深入了解的基礎知識。 本文將說明使用 C 語言進行偶數與奇數判定的方法,為了讓初學者也能輕鬆理解,將詳細解說具體的範例程式碼、判定邏輯、常見錯誤以及應用範例。 內容也會針對「為什麼要這樣判定」或「是否有其他寫法」等疑問作說明,閱讀完本文後,您將能自信地完成偶數與奇數的判定。 即將開始學習 C 語言,或是想複習基礎的讀者,請務必閱讀至最後。

2. 偶數與奇數的定義與判定方法

偶數與奇數是算術與數學中常見的詞彙,在程式設計中使用時,其定義基本上也是相同的。首先簡單確認各自的意義吧。

2.1 偶數與奇數的定義

  • 偶數:能被 2 整除的整數(包括 0、2、4、-2、-4 等)
  • 奇數:不能被 2 整除的整數(1、3、5、-1、-3 等)
在 C 語言中,透過判斷「是否能被 2 整除」來判斷數值是偶數還是奇數。

2.2 C 語言使用的餘數運算子「%」

在 C 語言中進行偶數與奇數的判定時,最常使用的是「餘數運算子(%)」。此運算子會求出左側數值除以右側數值的「餘數」。 範例: 7 % 2 會得到 1(7 除以 2 的餘數為 1)。 8 % 2 會得到 0(8 除以 2 的餘數為 0)。

2.3 偶數與奇數的判定邏輯

使用此餘數運算子即可如以下方式進行判定。
  • 餘數(num % 2)為 0 則「偶數」
  • 餘數為 1 或 -1 則「奇數」
若以程式表達,則可使用以下條件式。
如果 num % 2 == 0 則 偶數
否則 奇數
這就是 C 語言中偶數與奇數判定的基本邏輯。接下來的章節將詳細介紹使用此機制的實際程式範例。
年収訴求

3. C 語言的偶數與奇數判斷程式

在此,我們將介紹使用 C 語言判斷偶數與奇數的程式。為了讓初學者也能容易理解,將依序說明基本範例程式、解說以及執行範例。

3.1 基本範例程式

首先來看看最簡單的判斷程式。
#include <stdio.h>

int main(void) {
    int num;

    printf("請輸入整數: ");
    scanf("%d", &num);

    if (num % 2 == 0) {
        printf("%d是偶數。
", num);
    } else {
        printf("%d是奇數。
", num);
    }

    return 0;
}

3.2 程式的詳細說明

  • 變數宣告 int num; 用於準備整數型變數 num。
  • 輸入的取得 scanf("%d", &num); 用於從鍵盤取得整數。
  • 判斷處理 if (num % 2 == 0) 的條件式用來判斷 num 除以 2 的餘數是否為 0。0 為偶數,否則為奇數。
  • 結果的顯示 使用 printf 在螢幕上顯示判斷結果。

3.3 執行範例

以下為實際執行程式時的輸入與輸出範例。
請輸入整數: 8
8是偶數。
請輸入整數: -3
-3是奇數。
透過這樣的方式,只要在 C 語言中結合簡單的條件式與餘數運算子,即可輕鬆判斷偶數與奇數。接下來的章節將介紹如何以各種寫法與變形來表達這個基本判斷。

4. 判定方法的變化

在 C 語言中判斷偶數與奇數的方法,除了基本的 if 敘述外,還有幾種變化。這裡將介紹代表性的寫法與想法,並說明各自的特點與使用時機。

4.1 使用 if 敘述的判定方法

最常見且最易懂的是使用 if 敘述的方法。前一章的範例程式碼也是這種模式。 可讀性高,也推薦給初學者。
if (num % 2 == 0) {
    // 偶數時的處理
} else {
    // 奇數時的處理
}

4.2 使用 switch 敘述的判定方法

即使使用 switch 敘述也能判斷偶數與奇數。但通常 switch 用於值有限的情況,亦可應用於偶數奇數的判斷。
switch (num % 2) {
    case 0:
        printf("%d 是偶數。\n", num);
        break;
    case 1:
    case -1: // 也支援負奇數
        printf("%d 是奇數。\n", num);
        break;
}
要點
  • 只要同時寫入 case 1 以及 case -1,負數也能安全判斷。

4.3 使用三元運算子的簡潔表達

如果想更簡短、在一行寫完,也可以使用三元運算子。
printf("%d 是%s。\n", num, (num % 2 == 0) ? "偶數" : "奇數");
特點
  • 三元運算子適合簡潔的條件式描述,想以單行表達時很便利。

4.4 各自的優點與缺點

方法優點缺點
if 敘述易讀、錯誤少、適合初學者程式碼可能稍長
switch 敘述易於新增 case、易於擴充條件處理稍嫌冗長、若不熟悉會較難閱讀
三元運算子非常短小、可用單行完成可讀性可能較低、容易變得複雜
依照自己的撰寫習慣、程式規模、可讀性等,選擇最適的方法即可。

5. 應用範例:結合正負判斷

偶數與奇數的判斷單獨使用已相當便利,但依程式需求,有時需要「正的偶數」「負的奇數」等更細緻的分類。此處將介紹結合偶數奇數判斷與正負判斷的應用範例。

5.1 判斷正負時的範例程式碼

以下程式會判斷並顯示輸入的整數是「正的偶數」「正的奇數」「負的偶數」「負的奇數」或「零」中的哪一種。
#include <stdio.h>

int main(void) {
    int num;
    printf("請輸入整數: ");
    scanf("%d", &num);

    if (num == 0) {
        printf("0是偶數。
");
    } else if (num > 0) {
        if (num % 2 == 0) {
            printf("%d是正的偶數。
", num);
        } else {
            printf("%d是正的奇數。
", num);
        }
    } else {
        if (num % 2 == 0) {
            printf("%d是負的偶數。
", num);
        } else {
            printf("%d是負的奇數。
", num);
        }
    }
    return 0;
}

5.2 程式說明

  • num == 0 的情況 零在數學上被歸類為偶數,故特別判斷。
  • num > 0 的情況 對於正整數,分別判斷偶數與奇數。
  • num < 0 的情況 負整數亦同樣判斷偶數與奇數。

5.3 實用的應用範例

  • 在資料處理或控制程式中的區分使用 例如,只對偶數執行某些處理,或特別對正的奇數進行處理等情況皆可應用。
  • 加強程式的變化性 透過正負與奇偶的組合改變輸出或處理,可提升程式的彈性與實用性。
透過對基本判斷稍作工夫,即可打造更實用的邏輯。

6. 常見錯誤與其對策

偶數與奇數的判斷很簡單,但在撰寫程式時仍有一些注意事項以及初學者容易卡住的重點。以下說明常見錯誤與問題的原因,以及解決方法。

6.1 整數以外的輸入處理

scanf("%d", &num); 使用 scanf("%d", &num); 時,若輸入的不是整數(例如:包含文字或小數點的數值),程式可能無法正常運作,或出現預期之外的行為。 對策範例 確認輸入值是否為整數,若有不正確的輸入則顯示錯誤訊息,從而打造更穩固的程式。
#include <stdio.h>

int main(void) {
    int num;
    printf("請輸入整數: ");
    if (scanf("%d", &num) != 1) {
        printf("輸入的不是整數。
");
        return 1;
    }
    // 在此繼續判斷處理
    return 0;
}

6.2 負數與零的處理注意事項

  • 零的處理 零在數學上屬於偶數,但常會不小心把它排除在判斷條件之外。明確寫出零的處理會比較安心。
  • 負數的餘數 負數的餘數 C 語言中,負數除以 % 2 時的餘數可能為 -1。奇數判斷時除了 num % 2 == 1,也要考慮 num % 2 == -1

6.3 程式未如預期運作時的除錯方法

  • 確認輸出內容 使用 printf 檢查變數的值與餘數,可驗證計算是否如預期。
  • 重新檢視 if 語句與條件式 確認判斷式設定正確,且沒有遺漏條件。
  • 使用樣本資料反覆測試 例如「0」「2」「-3」等,各種數值皆測試,確認判斷是否符合預期。

6.4 小結

為了預防錯誤與問題,輸入驗證邊界值(零與負數)測試非常重要。程式無法順利執行時,請保持冷靜,養成逐一檢查條件與輸出的習慣。

7. 總結

在本文中,我們詳細說明了使用 C 語言進行偶數與奇數判定的方法,從基礎到應用,甚至錯誤對策。最後,回顧所學內容,並總結未來的步驟。

7.1 文章要點回顧

  • 偶數與奇數的定義與判定方法 偶數被定義為「能被 2 整除的數」,奇數則是「不能被 2 整除的數」,我們學到在 C 語言中可以使用餘數運算子(%)輕鬆判定。
  • 基本程式範例與說明 以 if 陳述式為中心,介紹了 switch 陳述式、三元運算子等各種寫法。
  • 進階應用方式 包含偶數與奇數判定結合正負號、錯誤處理與輸入檢查的實作範例,讓學習更具實用性。
  • 常見錯誤與問題的對策 也介紹了輸入檢查與除錯的要點。

7.2 知識的活用方式

偶數與奇數的判定邏輯在學習 C 語言基礎時幾乎必定會出現。若能充分理解本文所介紹的內容,便能將其應用於條件分支、輸入處理等更複雜的程式。 例如,
  • 從陣列中抽取偶數
  • 從輸入的多個值中求出奇數的總和
  • 在特定條件下分支處理
等,在許多實用情境中都能應用。

7.3 進一步學習的步驟

掌握了偶數與奇數判定後,接下來可以挑戰「for 或 while 迴圈的重複處理」「陣列操作」「函式的建立」等。程式的範圍會不斷擴大,能夠應對更高階的課題。 這樣就已經完整掌握了使用 C 語言進行偶數與奇數判定的基礎。請務必親自動手,透過各種模式編寫程式,進一步深化理解。

8. FAQ(常見問題)

在此,我們將簡要回答在 C 語言判斷偶數與奇數時常見的疑問與困擾。 Q1: 在 C 語言中判斷偶數與奇數最簡單的方法是什麼? A1: if (num % 2 == 0) 的條件式是最常見且簡單的做法。餘數為 0 則為偶數,否則為奇數。 Q2: 負整數與零也能正確判斷嗎? A2: 是的,零會被視為偶數。另外,在 C 語言的餘數運算子處理負數時,num % 2 的值可能會是 -1,因此在判斷奇數時,除了 num % 2 == 1,也應考慮 num % 2 == -1Q3: 除了 if 敘述之外的判斷方法是? A3: 可以使用 switch 敘述或三元運算子(條件式 ? 真值時 : 假值時)來判斷。例如:
printf("%d是%s。"
, num, (num % 2 == 0) ? "偶數" : "奇數");
Q4: 如果輸入不是整數(例如:字串或小數)會怎樣? A4: scanf("%d", &num); 在遇到非整數的輸入時可能會產生未預期的行為。建議事先檢查輸入值是否為整數,或在偵測到不正確的輸入時加入錯誤處理,以確保安全。 Q5: 如果想一次判斷多個值該怎麼做? A5: 使用 for 迴圈或 while 迴圈進行重複處理,即可自動化對多個數值的判斷。若使用陣列,甚至大量資料也能輕鬆判斷。 Q6: 有更進階的偶數與奇數判斷方法嗎? A6: 例如可以使用位元運算(num & 1)的方法。位元運算速度快,但對初學者可能稍嫌難以理解。若有興趣可自行研究。 請善加利用本文內容與範例程式碼,若有疑問或不明之處,務必在實作中不斷探索以加深理解。這將有助於扎實培養程式設計的基礎能力。