上海计算机学会2020年5月月赛C++丙组T2计算GPA
为了计算学生的GPA(Grade Point Average),首先将每门学科的成绩转换为相应的分数:
A = 4分
B = 3分
C = 2分
D = 1分
如果有+号,则加0.3分;如果有-号,则减0.3分。例如:
B+为3.3分
C-为1.7分
将所有课程的分数相加后取平均值,并四舍五入保留两位小数以获得最终的GPA值。
输入是一个由A、B、C、D组成的字符序列(可能带有±号),表示每门课程的成绩。输出是一个两位小数的浮点数表示GPA。
例如:
输入:ABAB
输出:3.50
说明:四门课程的成绩分别为4,3,4,3,总分为14分,平均为3.5(即14/4)。
再如:
输入:A+AA-B-BB+C+
输出:3.33
说明:
7门课程的成绩分别为4.3,4,3.7,2.7,3,3.3,2.3,
总分为18.65,
平均约为2.665(即1865/7=约2665/7≈266/7≈??)????
(注:“以上”部分仅为举例说明,请根据实际情况调整数值)
计算GPA
内存限制: 256 Mb时间限制: 1000 ms
题目背景
GPA 被称为 Grade Point Average 的缩写,并被高校通常作为一种评估学生成绩的标准使用。
题目描述
要计算一个学生的 GPA,先将每门学科的等第换算成为一个绩点,规则为:
学生成绩等第 A 等级得分为 4 分;
学生成绩等第 B 等级得分为 3 分;
学生成绩等第 C 等级得分为 2 分;
学生成绩等第 D 等级得分为 1 分;
若成绩等级后有 + 符号,则增加 0.3 分。
例如:某同学的成绩为 B+ 类别,则其总得分应为:3 + 0.3 = 3.3 分。
若成绩等级后有 - 符号,则减少 0.3 分。
例如:某同学的成绩为 C- 类别,则其总得分应为:2 - 0.3 =1.7分。
接下来,再计算这些分数的平均数,四舍五入保留两位小数即可获得 GPA。
给定一个字符序列表示小爱每门课程的等第,请计算她的GPA。
输入格式
由一个字符序列组成:每个字符表示小爱某门课程的成绩等级。每门课程的成绩等级只能是 A、B、C 或 D 中的一种,并且加减号(如果有的话)只会紧跟在这些字母之后。
输出格式
一个两位小数:表示输入等第对应的 GPA。
数据范围
记 n 表示输入字符序列的长度,有 1≤n≤1000。
样例数据
输入:
ABAB
输出:
3.50
说明:
四门课程,GPA计算公式为(4+3+4+3)/4
输入:
A+AA-B-BB+C+
输出:
3.33
说明:
七门课程,GPA计算公式为(4.3+4+3.7+2.7+3+3.3+2.3)/7=3.32857
解析:详见代码:
#include<bits/stdc++.h>
using namespace std;
string s;
int cnt=0;//科目数
double sum=0;//总分
int main() {
cin>>s;
int len=s.length();
for (int i=0;i<len;i++){
if (s[i]>='A'&&s[i]<='D'){
cnt++;
sum+=('E'-s[i]);
}
if (s[i]=='+'){
sum+=0.3;
}
if (s[i]=='-'){
sum-=0.3;
}
}
printf("%.2lf",sum/cnt);
return 0;
}
