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

HDU 2399 GPA:字母成績轉換與平均學分點計算

     編輯:關於C++

問題描述

輸入多行,每行包含若干大寫字母 (A/B/C/D/F),空格分隔。將字母轉為學分點:A=4, B=3, C=2, D=1, F=0。計算該行平均值 (GPA),保留兩位小數。若出現非法字母,輸出 "Unknown letter grade in input"。

解法

  • 逐行讀取 (getline)。
  • 字符串流分割字母。
  • 累加分數與計數,檢查合法性。
  • 輸出平均或錯誤信息。

複雜度

  • 時間:O(總字符數)。
  • 空間:O(1)。

參考程式碼 (C++)

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);
    string line;
    while (getline(cin, line)) {
        if (line.empty()) continue;
        stringstream ss(line);
        char ch;
        double sum = 0;
        int cnt = 0;
        bool ok = true;
        while (ss >> ch) {
            double val;
            switch (ch) {
                case 'A': val = 4; break;
                case 'B': val = 3; break;
                case 'C': val = 2; break;
                case 'D': val = 1; break;
                case 'F': val = 0; break;
                default: ok = false; break;
            }
            if (!ok) break;
            sum += val;
            ++cnt;
        }
        if (!ok || cnt == 0) cout << "Unknown letter grade in input\n";
        else cout << fixed << setprecision(2) << (sum / cnt) << '\n';
    }
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved