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

C語言基礎:兩種方法輸出 1-100 之間的奇數

     編輯:關於C語言

C語言基礎:兩種方法輸出 1-100 之間的奇數

輸出指定範圍內的奇數是迴圈與條件判斷的經典練習。本文對比兩種常見思路,分析其效能差異與適用場景。

方法一:步長為 2 的直接迴圈

#include <stdio.h>

int main() {
    for (int i = 1; i < 100; i += 2) {
        printf("%d ", i);
    }
    return 0;
}

方法二:遍歷所有數並判斷奇偶

#include <stdio.h>

int main() {
    for (int i = 1; i < 100; i++) {
        if (i % 2 == 1) {  // 或 (i & 1)
            printf("%d ", i);
        }
    }
    return 0;
}

輸出結果(兩者相同)

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

深度對比分析

維度方法一 (步長 2)方法二 (判斷奇偶)
迴圈次數50 次99 次
分支預測無條件分支每次迴圈需判斷
指令數極少包含模運算/位運算
適用場景已知步長規律條件複雜、無固定步長
可讀性意圖明確邏輯通用

效能優化細節

  • 位運算替代取模:(i & 1) 比 (i % 2 == 1) 更快,編譯器通常會自動優化。
  • 編譯器優化:開啟 -O2 時,現代編譯器可能將方法二優化為方法一的機器碼。
  • 分支預測:方法二的 if 在固定模式下預測準確率高,但仍有微小開銷。

擴展:通用區間奇數輸出

void print_odds(int start, int end) {
    // 確保起始為奇數
    if (start % 2 == 0) start++;
    for (int i = start; i <= end; i += 2) {
        printf("%d ", i);
    }
}

總結

**方法一是最佳解**:迴圈次數減半、無分支、意圖清晰。方法二適用於「條件不規則、無法用步長描述」的場景。初學者應養成「尋找數學規律、減少不必要計算」的優化直覺。

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