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

C 語言入門實作:輸入兩數比較大小、排序與巨集技巧

     編輯:關於C語言

範例一:兩數比較大小(函數版)

#include 

int max(int a, int b) {
    return a > b ? a : b;
}

int main() {
    int x, y;
    printf("輸入兩個整數(空格分隔):");
    scanf("%d %d", &x, &y);
    printf("最大值:%d\n", max(x, y));
    return 0;
}

範例二:十數冒泡排序

#include 
#define N 10

int main() {
    int a[N];
    printf("輸入 %d 個整數:", N);
    for (int i = 0; i < N; ++i) scanf("%d", &a[i]);
    
    // 冒泡排序:外層控制輪數,內層相鄰比較交換
    for (int i = 0; i < N - 1; ++i) {
        for (int j = 0; j < N - 1 - i; ++j) {
            if (a[j] > a[j + 1]) {
                int t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    
    printf("排序結果:");
    for (int i = 0; i < N; ++i) printf("%d ", a[i]);
    puts("");
    return 0;
}

範例三:巨集實現最大值(無函數呼叫開銷)

#include 
#define MAX(a,b) ((a) > (b) ? (a) : (b))  // 關鍵:參數加括號,整體加括號

int main() {
    int x = 3, y = 5;
    printf("MAX(3,5)=%d\n", MAX(x, y));
    printf("MAX(x++, y)=%d\n", MAX(x++, y)); // 注意:副作用會被展開多次!
    return 0;
}

巨集陷阱:MAX(x++, y) 展開為 ((x++) > (y) ? (x++) : (y)),x++ 執行兩次!含副作用表達式禁用巨集,改用 inline 函數。

進階:inline 函數替代巨集

static inline int max_inline(int a, int b) {
    return a > b ? a : b;
}
// 編譯器會內聯展開,無函數呼叫開銷,且無副作用風險

總結

  • 比較大小:三元運算子 a>b?a:b 最簡潔。
  • 排序:冒泡法教學用,實戰用 qsort 或 std::sort。
  • 巨集:參數與整體必須加括號;避免副作用參數;複雜邏輯改用 static inline。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved