首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言 while 與 do-while 循環:語法、執行流程、死循環陷阱與實戰應用

     編輯:C 語言基礎

C 語言三大程序結構

  1. 順序結構:自上而下執行
  2. 選擇結構:if-else、switch、條件運算符
  3. 循環結構:重複執行代碼塊(本節重點)

while 循環

while (表達式) {
    語句塊
}

執行流程

  1. 計算表達式值
  2. 真(非0) → 執行語句塊 → 回第1步
  3. 假(0) → 跳出循環,執行後續代碼

示例:1+2+...+100

int i = 1, sum = 0;
while (i <= 100) {
    sum += i;
    i++;
}
printf("%d\n", sum);  // 5050

逐步分析

  • i=1 滿足條件 → 執行體 → i=2, sum=1
  • i=2 滿足 → 執行體 → i=3, sum=3
  • ...第100次後 i=101, sum=5050
  • i=101 不滿足 → 退出

while 循環核心模式

初始化循環變量
while (含變量的條件) {
    循環體
    修改循環變量(趨於結束)
}

死循環與零次循環

實戰:統計輸入行字符數

int n = 0;
printf("Input a string: ");
while (getchar() != '\n') n++;
printf("Number of characters: %d\n", n);

輸入 c.biancheng.net → 輸出 15。條件 getchar()!='\n' 兼具讀取與判斷。

do-while 循環

do {
    語句塊
} while (表達式);  // 注意分號!

關鍵差異:至少執行一次

  • 先執行語句塊,再判斷條件
  • 適合「先做後判」場景(菜單、輸入驗證)

示例:1+...+100

int i = 1, sum = 0;
do {
    sum += i;
    i++;
} while (i <= 100);
printf("%d\n", sum);  // 5050

while vs do-while 選擇指南

情況代碼行為
死循環while(1) { printf("1"); }無限輸出 1,需強制終止
零次循環while(0) { printf("1"); }一次不執行,無輸出

實際編程中 while 使用頻率最高,for 次之,do-while 專用場景較少。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景推薦理由
次數未知、可能零次while前測試,條件不滿足不執行
至少一次(菜單、輸入)do-while後測試,保證首次執行
計數器控制for三要素集中,最清晰