C語言最大值最小值

在C語言中,你可以使用內置的比較運運算元來找出數組或變量的最大值和最小值。以下是一個簡單的例子,展示了如何找出兩個數字中的最大值和最小值:

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;

    // 找出最大值
    int max = (a > b) ? a : b;

    // 找出最小值
    int min = (a < b) ? a : b;

    printf("最大值是: %d\n", max);
    printf("最小值是: %d\n", min);

    return 0;
}

在上面的代碼中,我們使用了問號冒號運運算元(?:),這是一個三元條件運運算元,用來根據條件選擇不同的值。max變量將被賦予ab中較大的那個值,而min變量將被賦予較小的那個值。

如果你想要找出一個數組中的最大值和最小值,你可以使用迴圈來遍歷數組中的每個元素,並在遍歷的過程中更新最大值和最小值。以下是一個例子:

#include <stdio.h>

int main() {
    int array[5] = {1, 5, 3, 7, 9};
    int min = array[0];
    int max = array[0];

    for (int i = 1; i < 5; i++) {
        if (array[i] > max) {
            max = array[i];
        }
        if (array[i] < min) {
            min = array[i];
        }
    }

    printf("最大值是: %d\n", max);
    printf("最小值是: %d\n", min);

    return 0;
}

在上面的代碼中,我們定義了一個包含5個元素的數組array,然後初始化minmax變量為數組的第一個元素。接著,我們使用一個for迴圈來遍歷數組中的其他元素,並在遍歷的過程中更新minmax變量,使其分別保持數組中的最小值和最大值。

請注意,如果你的C語言版本支援C11標準或更新的版本,你可以使用constexpr關鍵字來定義常量表達式,這可以讓你在編譯時就計算出最大值和最小值,而不是在運行時。以下是一個例子:

#include <stdio.h>
#include <stdbool.h>

constexpr int min(const int* a, const int* b) {
    return *a < *b ? *a : *b;
}

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

int main() {
    const int array[5] = {1, 5, 3, 7, 9};
    const int min_value = min(&array[0], &array[1]);
    const int max_value = max(&array[0], &array[1]);

    for (int i = 2; i < 5; i++) {
        min_value = min(min_value, &array[i]);
        max_value = max(max_value, &array[i]);
    }

    printf("最大值是: %d\n", max_value);
    printf("最小值是: %d\n", min_value);

    return 0;
}

在上面的代碼中,我們定義了兩個constexpr函數minmax,它們可以在編譯時就計算出最小值和最大值。然後,我們使用這些函數來找出數組array中的最小值和最大值。由於min_valuemax_value是在編譯時就計算出來的,它們可以作為常量表達式使用,這意味著它們可以在編譯時就確定下來,而不是在運行時。