C 語言中的 Do-While 迴圈:初學者指南

你好,未來的編程魔法師們!今天,我們將踏上一段令人興奮的旅程,探索 C 語言中的 do-while 迴圈。作為你們友好的鄰居計算機老師,我將帶領你們透過大量的範例和一點幽默來理解這個概念。所以,戴上你們的虛擬思考帽,我們一起來深入探討吧!

C - Do...while loop

什麼是 Do-While 迴圈?

在我們深入細節之前,讓我們先了解一下 do-while 迴圈是什麼。想像你正在玩一個遊戲,你要不斷擲骰子直到你擲出六點。你至少會擲一次骰子,對吧?這正是 do-while 迴圈在編程中的做法——它至少執行一次代碼塊,然後再檢查條件。

Do-While 迴圈的語法

現在,讓我們來看看 do-while 迴圈的語法。別擔心,它起初看起來可能有些令人害怕——我們會一起分解它!

do {
// 要執行的代碼
} while (條件);

這裡有一個有趣的記憶方法:"做這個,當那個是真的時候!"簡單吧?

Do-While 迴圈如何工作?

讓我們走過 do-while 迴圈的操作:

  1. 執行 do 區塊中的代碼。
  2. 執行後,評估 while 語句中的條件。
  3. 如果條件為真,迴圈返回步驟 1。
  4. 如果條件為假,迴圈結束,程序繼續執行下一個語句。

Do-While 迴圈的流程圖

為了形象化這個過程,讓我們來看一個流程圖:

┌─────────────────┐
│                 │
│  開始            │
│                 │
└────────┬────────┘
│
▼
┌─────────────────┐
│                 │
│  執行代碼       │
│  區塊            │
│                 │
└────────┬────────┘
│
▼
┌─────────────────┐
│  評估            │
│  條件            │
│                 │
└────────┬────────┘
│
▼
┌───┴───┐
┌───┤ 真的嗎? ├───┐
│   └───────┘   │
│ 是            │ 否
│               │
│               ▼
│        ┌──────────────┐
│        │              │
│        │  結束        │
│        │              │
│        └──────────────┘
└───────────────┘

Do-While 迴圈的範例

讓我們來看一個實際的範例。記得我們的骰子遊戲嗎?讓我們來編寫它!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
int dice;
int rolls = 0;

// 初始化隨機數生成器
srand(time(0));

do {
// 擲骰子(生成一個介於 1 和 6 之間的隨機數)
dice = rand() % 6 + 1;
rolls++;

printf("你擲到了一個 %d\n", dice);
} while (dice != 6);

printf("你用了 %d 次擲骰子才擲到 6!\n", rolls);

return 0;
}

讓我們分解一下:

  1. 我們包含必要的庫並設置我們的變量。
  2. 我們用當前時間種子隨機數生成器。
  3. 在 do-while 迴圈中:
  • 我們"擲"骰子,通過生成一個介於 1 和 6 之間的隨機數。
  • 我們增加我們的擲骰子計數器。
  • 我們打印擲骰子的結果。
  1. 迴圈會繼續,直到我們沒有擲到 6。
  2. 一旦我們擲到 6,我們退出迴圈並打印出擲到 6 需要的次數。

這個程序總是會至少運行一次(你不擲骰子就不可能贏!),這正是 do-while 迴圈的完美應用。

While 和 Do-While 迴圈的區別

現在,你可能會想,"為什麼不用 while 迴圈呢?"這個問題問得好!讓我們來比較一下:

特性 While 迴圈 Do-While 迴圈
條件檢查 第一次執行前 第一次執行後
最少執行次數 0 1
使用場景 當你可能不需要執行迴圈時 當你需要至少執行一次迴圈時
語法 while (條件) { ... } do { ... } while (條件);

關鍵的區別在於,do-while 迴圈即使條件從一開始就是假的,也至少會執行一次。這就像說,"我們先做這次,然後我們再看是否需要再做一次。"

當使用 Do-While 迴圈

Do-while 迴圈在以下情況中非常適合:

  1. 在檢查條件之前至少執行一次代碼。
  2. 驗證用戶輸入(你需要至少獲取一次輸入才能檢查它)。
  3. 實現菜單驅動的程序(至少顯示一次菜單,然後問用戶是否要繼續)。

這裡有一個簡單的菜單程序範例:

#include <stdio.h>

int main() {
int choice;

do {
printf("\n菜單:\n");
printf("1. 說你好\n");
printf("2. 講一個笑話\n");
printf("3. 離開\n");
printf("請輸入你的選擇: ");
scanf("%d", &choice);

switch(choice) {
case 1:
printf("你好,世界!\n");
break;
case 2:
printf("為什麼科學家不相信原子?因為它們構成了一切!\n");
break;
case 3:
printf("再見!\n");
break;
default:
printf("無效的選擇。請再試一次。\n");
}
} while (choice != 3);

return 0;
}

在這個程序中,我們至少顯示一次菜單並獲取用戶輸入,這正是 do-while 迴圈的絕佳應用。

結論

至此,我們已經揭開了 C 語言中 do-while 迴圈的神秘面紗。記住,就像編程中的任何工具一樣,do-while 迴圈有它應用的時機和地點。它不是每個問題的解決方案,但當你需要確保在某個條件檢查之前至少發生一件事時,它就是你的首选結構。

實踐使人完美,所以不要害怕在你自己的程序中嘗試 do-while 迴圈。誰知道呢?你可能會很快就在編程中連續獲得六點!

祝編程愉快,願迴圈永遠在你這邊!

Credits: Image by storyset