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

C語言流程控制全攻略:for、while、do-while 循環與巢狀應用

     編輯:關於C

程式執行流程控制概述

C 程式預設由 main() 起始,自上而下循序執行。但實際開發中極少單純循序執行,必須透過流程控制語句(if、for、while、do-while)改變執行順序,實現判斷與迴圈邏輯。

一、for 迴圈詳解

語法結構

for (初始化運算式; 條件判斷; 遞增運算式) {
    陳述句;  // 單一或複合陳述句
}

執行流程

  1. 執行 初始化運算式(通常為計數器賦初值)。
  2. 判斷 條件判斷:為假(0)則結束迴圈,繼續執行迴圈後第一行;為真(非 0)則進入迴圈本體。
  3. 執行 迴圈本體 陳述句。
  4. 執行 遞增運算式,回到第 2 步。

經典範例

1. 簡單向上計數(1 到 20)

#include 
#include 

int main() {
    for (int i = 1; i <= 20; i++) {
        printf("%d\n", i);
    }
    system("pause");
    return 0;
}

輸出1-20

2. 倒數計數(20 到 1)

for (int i = 20; i >= 1; i--) {
    printf("%d\n", i);
}

輸出20-1

3. 增量為 2(偶數列印)

int i = 0;
for (; i <= 20; i += 2) {  // 初始化已在迴圈外完成
    printf("%d\n", i);
}

增量2輸出

4. 遞增運算式放在迴圈本體

int i = 0;
for (; i <= 20;) {
    printf("%d\n", i++);  // 後置遞增
}

本體遞增輸出

5. 複合條件控制

int i = 0, j = 15;
for (; i <= 20 && j >= 0;) {
    j--;
    printf("%d\n", i++);
}

複合條件輸出

for 迴圈三要素靈活性

  • initial:可為任何合法運算式,常為賦值。
  • condition:可為任何運算式,非 0 即真。
  • increment:可為任何運算式,不限於遞增。
  • 三者皆可省略,但分號不可省略(for(;;) 為無限迴圈)。

巢狀 for 迴圈:列印矩形

#include 
#include 

void draw_box(int row, int column) {
    int col;
    for (; row > 0; row--) {
        for (col = column; col > 0; col--) {
            printf("x");
        }
        printf("\n");
    }
}

int main() {
    draw_box(8, 25);  // 8行25列
    system("pause");
    return 0;
}

矩形輸出

二、while 迴圈詳解

語法結構

while (條件判斷) {
    陳述句;
}

執行流程

  1. 計算條件判斷。
  2. 為假(0)則結束迴圈。
  3. 為真(非 0)執行迴圈本體。
  4. 回到第 1 步。

範例:列印 1 到 20

#include 
#include 

int main() {
    int count = 1;
    while (count <= 20) {
        printf("%d\n", count);
        count++;
    }
    system("pause");
    return 0;
}

while輸出1-20

for 與 while 等價性

for (; condition;) 等價於 while (condition)。兩者可相互轉換,差異在於初始化與遞增的書寫位置。

巢狀 while 迴圈與 for 結合應用

#define _CRT_SECURE_NO_WARNINGS
#include 

int main() {
    int array[5];
    int ctr = 0, nbr = 0;

    printf("請輸入 5 個 1-10 之間的整數:\n");
    while (ctr < 5) {
        nbr = 0;
        while (nbr < 1 || nbr > 10) {
            printf("輸入第 %d 個數: ", ctr + 1);
            scanf("%d", &nbr);
        }
        array[ctr] = nbr;
        ctr++;
    }

    for (ctr = 0; ctr < 5; ctr++) {
        printf("Value %d is %d\n", ctr + 1, array[ctr]);
    }
    system("pause");
    return 0;
}

輸入驗證輸出

三、do-while 迴圈

do-while 保證迴圈本體至少執行一次,條件判斷在本體之後:

do {
    陳述句;
} while (條件判斷);

適用於選單驅動程式、輸入驗證等必須先執行一次的情境。

總結與選擇建議

迴圈類型適用場景特點
for已知迴圈次數、計數器控制初始化、條件、遞增集中,結構清晰
while未知迴圈次數、條件驅動僅條件判斷,初始化與遞增分散
do-while至少執行一次、選單/輸入驗證後測試,保證首次執行

實務上,根據邏輯清晰度與可讀性選擇,必要時可相互轉換。

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