题目描述
GPA 是 Grade Point Average 的简写,是高校采用的一种评估学生成绩的制度。
要计算一个学生的 GPA,先将每门学科的等第换算成为一个绩点,规则为:
- 等第
A
为4
分; - 等第
B
为3
分; - 等第
C
为2
分; - 等第
D
为1
分; - 如果有
+
号后缀,则加0.3
分。例如B+
为3.3
分; - 如果有 - 号后缀,则减
0.3
分。例如C-
为1.7
分。
接下来,再计算这些分数的平均数,四舍五入保留两位小数即可获得 GPA。
给定一个字符序列表示小爱每门课程的等第,请计算她的GPA。
输入描述
一个字符序列:表示小爱各门课程的等第,一门课程的等第只可能是A
、B
、C
、D
中的一个,保证+
号或-
号只会出现在字母的后面。
数据范围
记 $n$ 表示输入字符序列的长度,有 1≤n≤1000。
输出描述
一个两位小数:表示输入等第对应的 GPA。
输入样例
ABAB
输出样例
3.50
#include<iostream>
#include<string>
using namespace std;
int main() {
string gpa;
float count = 0 , len[2] = {0, 0};
cin >> gpa;
len[0] = gpa.size() + 1;
for (int i = 0; i < len[0]; ++i)
if (gpa[i] == 'A' || gpa[i] == 'B' || gpa[i] == 'C' || gpa[i] == 'D')
len[1]++;
for (int i = 0; i < len[0]; ++i) {
if (gpa[i] == 'A')
count = count + 4;
else if (gpa[i] == 'B')
count = count + 3;
else if (gpa[i] == 'C')
count = count + 2;
else if (gpa[i] == 'D')
count = count + 1;
else if (gpa[i] == '+')
count = count + 0.3;
else if (gpa[i] == '-')
count = count - 0.3;
}
float score = count / len[1];
printf("%.2f", score);
return 0;
}