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

C語言學生成績管理系統:Computer 科目最高分最低分計算邏輯錯誤修復

     編輯:程式設計綜合問答

錯誤代碼定位


// max 函數中
if (students[i].computer > maxco) {
    maxco = students[i+1].computer;  // 錯誤:用 i+1 導致越界且邏輯錯
}

同樣問題存在於 min 函數,且未處理並列最高/最低分情況。

修正後的 max/min 函數


void max(Student students[]) {
    maxch = maxma = maxen = maxco = students[0].chinese; // 初始化
    for (int i = 1; i < 5; i++) {
        if (students[i].chinese >= maxch) maxch = students[i].chinese;
        if (students[i].math    >= maxma) maxma = students[i].math;
        if (students[i].english >= maxen) maxen = students[i].english;
        if (students[i].computer>= maxco) maxco = students[i].computer; // 修正:用 i
    }
}

void min(Student students[]) {
    minch = minma = minen = minco = students[0].chinese;
    for (int i = 1; i < 5; i++) {
        if (students[i].chinese <= minch) minch = students[i].chinese;
        if (students[i].math    <= minma) minma = students[i].math;
        if (students[i].english <= minen) minen = students[i].english;
        if (students[i].computer<= minco) minco = students[i].computer;
    }
}

關鍵修正點

問題原代碼修正
Computer 索引越界students[i+1].computerstudents[i].computer
並列最高/最低分未更新> / <>= / <=(可選,視需求)
初始化冗余分別賦值四次鏈式賦值 maxch=maxma=...=students[0].chinese

完善建議

  • 將 5 定義為宏 #define STU_NUM 5,便於擴展。
  • sort 函數中 sum 數組未初始化,需在排序前計算總分:
    
    for (i=0; i
  • 輸入函數中 scanf_s("%s", name) 需傳緩衝區大小:scanf_s("%s", name, 30)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved