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

C語言結構體數組實戰:學生成績管理系統模塊化設計與平均分排序輸出

     編輯:關於C語言

結構體數組:組織同類複雜數據的標準方式

單個結構體變量實用性有限,實際項目中常用結構體數組批量管理數據。本文通過一個「學生成績管理」完整案例,展示模塊化設計、數組輸入、平均分計算、排序、格式化輸出、單科統計全流程。

案例需求

4 位學生,記錄姓名、學號、三科成績(英語、數學、物理),求:

  1. 每生三科平均分
  2. 按平均分降序輸出
  3. 三科各自平均分

模塊化分解

  1. 結構體類型定義(外部共享)
  2. 輸入模塊 input()
  3. 平均分計算 aver()
  4. 排序模塊 sort()
  5. 輸出模塊 output()
  6. 單科平均統計 subject_aver()
  7. main() 調度

核心代碼實現

1. 結構體類型定義


struct stu {
    char name[20];
    long number;
    float score[4];  // [0]English [1]Math [2]Physics [3]Average
};

放在文件最前,供所有函數共用。

2. 輸入模塊:gets + atoi/atol 安全轉換


void input(struct stu arr[], int n) {
    char temp[30];
    for(int i=0; i

用 gets 讀整行,atol/atof 轉換,避免 scanf 緩衝區殘留換行符問題。

3. 平均分計算


void aver(struct stu arr[], int n) {
    for(int i=0; i

結果存入 score[3],原數組就地修改,無需額外空間。

4. 後續模塊(排序、輸出、單科統計)邏輯

  • 排序:按 score[3] 降序,可用選擇/冒泡/快排,交換整個結構體元素。
  • 輸出:格式化打印姓名、學號、三科分、平均分,對齊美觀。
  • 單科平均:累加各科 score[j] 除以學生數,輸出三科平均。

設計亮點

  • 模塊化:單一職責,易維護擴展。
  • 數組復用:score[4] 兼存原始分與平均分,空間高效。
  • 安全輸入:gets+atof 組合避免格式匹配失敗。
  • 外部類型定義:結構體定義前置,多函數無縫共享。

此案例完整演示了從數據建模、模塊劃分、安全輸入、就地計算、排序輸出到統計分析的結構體數組工程化用法,是 C 語言數據處理項目的經典範式。

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