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

C Primer Plus 學習筆記:經典求最大最小值程式解析

     編輯:關於C語言

C Primer Plus 學習筆記:經典求最大最小值程式解析

《C Primer Plus 第六版中文版》第 198 頁呈現了一個極具教學價值的程式範例,用極簡代碼實現輸入數列的最大值與最小值查找。本文記錄核心代碼片段與算法精妙之處。

核心代碼片段

書中通過循環讀取輸入,動態更新最大值與最小值:

#include <stdio.h>
#include <limits.h>  // 提供 INT_MAX, INT_MIN

int main(void) {
    int num, max = INT_MIN, min = INT_MAX;
    
    printf("請輸入整數(輸入非數字結束):\n");
    
    while (scanf("%d", &num) == 1) {
        if (num > max) max = num;
        if (num < min) min = num;
    }
    
    printf("最大值:%d\n最小值:%d\n", max, min);
    return 0;
}

算法精妙點分析

  1. 初始值巧妙選取:max = INT_MIN、min = INT_MAX 確保第一個輸入值必定更新兩者,無需特殊判斷首次輸入
  2. 單次掃描完成雙目標:一次循環同時維護最大/最小值,時間複雜度 O(n)
  3. 輸入驗證整合:scanf("%d", &num) == 1 同時完成讀取與格式驗證,非整數輸入自動終止
  4. 邊界情況處理:若無有效輸入,結果仍為理論極值,語義合理

關鍵標頭檔 <limits.h>

定義了各資料型別的極限值,常用常數:

常數含義典型值 (32位系統)
INT_MAXint 最大值2,147,483,647
INT_MINint 最小值-2,147,483,648
LONG_MAXlong 最大值9,223,372,036,854,775,807
CHAR_BIT位元組位數8

擴充應用

此模式可擴展至:

  • 求浮點數最大/最小值(使用 FLT_MAX/FLT_MIN,<float.h>)
  • 同時統計總和、平均值、計數
  • 尋找第二大/小值(需額外變數)
  • 處理檔案輸入流(將 stdin 替換為 FILE*)

學習心得

這個看似簡單的範例展現了 C 語言「以簡馭繁」的哲學:善用標準庫常數、循環不變式設計、輸入迴圈條件判斷融合,僅十幾行代碼即構建出健壯、高效、可擴展的解決方案。這正是《C Primer Plus》作為經典教材的魅力所在——在基礎語法中蘊含工程智慧。

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