首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言動態數組求最大最小值:malloc 分配、scanf 讀取、單遍歷雙更新

     編輯:程式設計綜合問答

輸入數組長度 N 及 N 個整數,輸出最大值與最小值。標準動態內存 + 單次遍歷解法。

完整代碼

#include 
#include 

int main(void) {
    int n, *arr, i, min, max;

    printf("Input array index: ");
    if (scanf("%d", &n) != 1 || n <= 0) return 1;

    arr = malloc(n * sizeof(int));
    if (!arr) return 1;               // 分配失敗

    printf("Input %d numbers: ", n);
    for (i = 0; i < n; i++)
        scanf("%d", &arr[i]);

    min = max = arr[0];               // 初始化
    for (i = 1; i < n; i++) {
        if (arr[i] < min) min = arr[i];
        if (arr[i] > max) max = arr[i];
    }

    printf("Maximum: %d\nMinimum: %d\n", max, min);
    free(arr);                        // 釋放內存
    return 0;
}

關鍵點

  • malloc 分配堆內存,用畢 free 釋放,防洩漏。
  • 讀入與計算分離,邏輯清晰。
  • min/max 初始化為 arr[0],避免 INT_MAX/MIN 依賴 。
  • 輸入合法性檢查:scanf 返回值、n > 0、malloc 非空。

複雜度

  • 時間 O(N) —— 單次遍歷。
  • 空間 O(N) —— 存儲數組。

這是 C 語言動態數組處理的教科書級範例。

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