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

C 語言循環結構完全指南:while、do-while、for 詳解與嵌套實戰

     編輯:關於C語言

C 語言循環結構完全指南

循環是程序控制流的核心。本文系統講解 while、do-while、for 三種循環的語法、執行流程、差異對比、典型應用模式與嵌套技巧,附帶可直接運行的代碼片段。

一、while 循環:先判斷後執行

// 語法
while (條件表達式) {
    循環體;
}

特點:條件為真才執行,**可能零次執行**。

示例:打印 1~100 間 7 的倍數

int i = 1;
while (i < 101) {
    if (i % 7 == 0) printf("%d ", i);
    i++;
}
printf("\n");

示例:倒序輸出 7 的倍數

int number = 100;
while (number--) {           // number 從 100 遞減至 1(0 時為假結束)
    if (number % 7 == 0 && number)  // 排除 0
        printf("%d ", number);
}

示例:隨機生成 n 個 [30,70] 區間數,求最大最小值

#include   // arc4random() 需 BSD/macOS,Linux 用 rand()

int n, number, max = 0, min = 70;
printf("請輸入 n: "); scanf("%d", &n);
while (n--) {
    number = arc4random() % 41 + 30;  // [30, 70]
    printf("%d ", number);
    if (number > max) max = number;
    if (number < min) min = number;
}
printf("\nMax: %d, Min: %d\n", max, min);

二、do-while 循環:先執行後判斷

// 語法
do {
    循環體;
} while (條件表達式);

特點:**至少執行一次**,適合菜單、輸入驗證等場景。

示例:模擬登錄(限 3 次嘗試)

int number = 0, attempts = 3;
do {
    printf("請輸入密碼: "); scanf("%d", &number);
    if (number == 123) {
        printf("登陸成功!\n"); break;
    } else {
        if (--attempts > 0)
            printf("密碼錯誤,剩餘 %d 次機會\n", attempts);
        else
            printf("賬戶凍結,48 小時後重試!\n");
    }
} while (attempts > 0);

三、for 循環:計數循環首選

// 語法
for (初始化; 條件; 增量) {
    循環體;
}
// 執行順序:1→2→4→3→2→4→3→...→2(假)→結束

四大要素對應

  1. 循環變量初始化(int i=1)
  2. 循環條件(i<101)
  3. 循環增量(i++)
  4. 循環體

示例:多種 7 相關數字篩選

// 7 的倍數
for (int i = 1; i < 101; i++) if (i % 7 == 0) printf("%d ", i);
printf("\n");

// 個位是 7
for (int i = 1; i < 101; i++) if (i % 10 == 7) printf("%d ", i);
printf("\n");

// 十位是 7
for (int i = 1; i < 101; i++) if (i / 10 == 7) printf("%d ", i);
printf("\n");

// 既非 7 的倍數,個十位也非 7
for (int i = 1; i < 101; i++)
    if (i % 7 != 0 && i % 10 != 7 && i / 10 != 7)
        printf("%d ", i);

四、三種循環對比總結

特性whiledo-whilefor
判斷時機循環前循環後循環前
最少執行次數010
適用場景未知次數、條件複雜菜單、至少一次已知次數、計數遍歷
變量作用域外部外部C99 可在初始化處聲明,僅循環內可見

五、循環嵌套

規則:外層執行一次,內層執行一遍。

for (int i = 1; i < 4; i++) {      // 外層 3 次
    for (int j = 1; j < 4; j++) {  // 內層每次 3 次
        printf("%d ", j);          // 輸出 1 2 3
    }
    printf("\n");                   // 換行
}
// 輸出:
// 1 2 3
// 1 2 3
// 1 2 3

六、控制語句輔助

  • break:立即跳出**當前層**循環。
  • continue:跳過本次迭代剩餘代碼,直接進入下一次判斷/增量。
  • goto:慎用,可跳出多層嵌套(配合標籤)。

七、常見陷阱

  1. 死循環:條件永真(while(1))且內部無 break/返回。
  2. off-by-one:邊界條件寫錯(<= vs <)。
  3. 修改循環變量:在 for 循環體內修改計數器導致邏輯混亂。
  4. 浮點數做循環條件:精度問題導致次數不準,改用整數計數。

熟練掌握三種循環的語義差異與適用場景,配合 break/continue 靈活控制流程,是編寫高效、可讀 C 代碼的基礎功力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved