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