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

C語言跳轉控制語句詳解:goto、break、continue 實戰應用

     編輯:關於C語言

跳轉語句概覽

C 語言提供四種跳轉語句改變程式預設循序執行流程:goto、break、continue、return。前三種用於主流程控制,return 專用於函數返回,將於函數章節詳細說明。

1. goto - 無條件跳轉

語法:goto 標號;
標號定義:識別碼後接冒號 標號:,置於目標敘述前。
語意:程式流程無條件轉向指定標號處繼續執行。

應用場景與範例

常搭配 if 實現條件跳轉、構建迴圈、跳出多層迴圈。

#include <stdio.h>

void main() {
    int n = 0;
    printf("input a string\n");
loop:
    if (getchar() != '\n') {
        n++;
        goto loop;  // 回到 loop 標號繼續判斷
    }
    printf("%d", n);  // 輸入換行符時結束,輸出字元計數
}

邏輯:利用 if+goto 模擬 while 迴圈,統計輸入行字元數(不含換行符)。

結構化程式設計原則:現代程式設計不建議濫用 goto,易造成「麵條程式碼」,增加理解與除錯困難度。優先使用結構化控制結構(if、for、while、switch)。

2. break - 跳出開關/迴圈

適用範圍:switch 敘述、迴圈敘述(for、while、do-while)。
功能:立即跳出當層 switch 或迴圈,執行其後敘述。
優勢:跳轉方向明確,無需標號配合,可提供迴圈多重出口,增加編寫彈性。

3. continue - 結束本次迴圈

適用範圍:僅限迴圈主體內。
語法:continue;
語意:跳過本次迴圈剩餘敘述,直接進入下一次迴圈條件判斷。
關鍵區別:break 跳出迴圈,continue 僅結束本次迴圈。

範例一:輸出 100 以內 7 的倍數

void main() {
    int n;
    for (n = 7; n <= 100; n++) {
        if (n % 7 != 0)
            continue;  // 非倍數跳過輸出,進入下一輪
        printf("%d ", n);
    }
}

範例二:檢測相鄰重複字元(搭配 break)

#include <stdio.h>

void main() {
    char a, b;
    printf("input a string:\n");
    b = getchar();  // 讀入首字元
    while ((a = getchar()) != '\n') {  // 讀入後續字元
        if (a == b) {  // 發現相鄰相同
            printf("same character\n");
            break;  // 跳出迴圈
        }
        b = a;  // 更新前一字元
    }
}

範例三:輸出 100 以內質數(巢狀迴圈 + break 優化)

void main() {
    int n, i;
    for (n = 2; n <= 100; n++) {
        for (i = 2; i < n; i++)
            if (n % i == 0) break;  // 能整除非質數,跳出內層
        if (i >= n) printf("\t%d", n);  // 內層正常結束(i==n)為質數
    }
}

進階優化:減少判斷次數

#include <math.h>
#include <stdio.h>

void main() {
    int n, i, k;
    for (n = 3; n <= 100; n += 2) {  // 僅檢查奇數(2 為唯一偶數質數)
        k = sqrt(n);  // 僅需判斷至 sqrt(n)
        for (i = 2; i <= k; i++)
            if (n % i == 0) break;
        if (i > k) printf("\t%2d", n);
    }
}

優化原理:
1. 排除偶數,步長設 2
2. 因子成對出現,僅需試除至 √n
大幅降低迴圈次數與執行時間。

三種跳轉語句比較總結

語句適用範圍效果典型用途
goto全域無條件跳轉至標號錯誤處理跳出多層迴圈、狀態機實作
breakswitch、迴圈跳出當層結構搜尋找到目標提前結束、switch 分支結束
continue迴圈主體跳過本次剩餘,進入下輪判斷過濾不符條件項目、跳過特定迴圈步驟
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved