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

C++ 學生成績統計:四學生四門課平均分與最低分的正確計算邏輯

     編輯:程式設計綜合問答

原代碼缺陷

  • 輸入循環與統計循環混淆,導致 i 索引越界。
  • 最小值邏輯錯誤:if (score[i] < score[i+1]) 僅比較相鄰元素,且未初始化 min。
  • 未重置累加變量,導致多次運行結果疊加。

重構方案:面向對象封裝

#include <iostream>
#include <iomanip>
using namespace std;

class Student {
    string name;
    double scores[4];
public:
    void input() {
        cout << "輸入學生姓名: "; cin >> name;
        for (int i = 0; i < 4; ++i) {
            cout << "第" << i+1 << "門成績: "; cin >> scores[i];
        }
    }
    double average() const {
        double sum = 0;
        for (double s : scores) sum += s;
        return sum / 4;
    }
    double minScore() const {
        double m = scores[0];
        for (double s : scores) if (s < m) m = s;
        return m;
    }
    void print() const {
        cout << name << " 平均分: " << fixed << setprecision(2) << average()
             << " 最低分: " << minScore() << endl;
    }
};

int main() {
    const int N = 4;
    Student stu[N];
    for (int i = 0; i < N; ++i) {
        cout << "--- 第 " << i+1 << " 位學生 ---\n";
        stu[i].input();
    }
    cout << "\n=== 統計結果 ===\n";
    for (int i = 0; i < N; ++i) stu[i].print();
    return 0;
}

核心改進

  1. 封裝學生數據與操作,職責清晰。
  2. 獨立計算平均值、最小值,邏輯正確且可復用。
  3. 使用 fixed << setprecision(2) 格式化輸出。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved