上海计算机学会2020年5月月赛C++丙组T2计算GPA
发布时间
阅读量:
阅读量
题目背景
GPA 是 Grade Point Average 的简写,是高校采用的一种评估学生成绩的制度。
题目描述
要计算一个学生的 GPA,先将每门学科的等第换算成为一个绩点,规则为:
- 等第
A为 44 分; - 等第
B为 33 分; - 等第
C为 22 分; - 等第
D为 11 分; - 如果有
+号后缀,则加 0.30.3 分。例如B+为 3.33.3 分; - 如果有
-号后缀,则减 0.30.3 分。例如C-为 1.71.7 分。
接下来,再计算这些分数的平均数,四舍五入保留两位小数即可获得 GPA。
给定一个字符序列表示小爱每门课程的等第,请计算她的GPA。
输入格式
一个字符序列:表示小爱各门课程的等第,一门课程的等第只可能是 A、B、C、D 中的一个,保证 + 号或 - 号只会出现在字母的后面。
输出格式
一个两位小数:表示输入等第对应的 GPA。
数据范围
记 n 表示输入字符序列的长度,有 1≤n≤10001≤n≤1000。
样例数据
输入:
ABAB
输出:
3.5
说明:
四门课程,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 <iostream>
#include<iomanip>
using namespace std;
int main(){
int m,j;
double sum,avg;
string s;
sum=0;
avg=0;
j=0;
cin>>s;
for(int i=0;i<s.length();i++){
if(i==0){
if(s[0]=='+' || s[0]=='-')
break;
}
if(s[i]=='A'){
sum+=4;
j+=1;
}else if(s[i]=='B'){
sum+=3;
j+=1;
}else if(s[i]=='C'){
sum+=2;
j+=1;
}else if(s[i]=='D'){
sum+=1;
j+=1;
}else if(s[i]=='+'){
sum+=0.3;
}else if(s[i]=='-'){
sum-=0.3;
}
}
avg=sum/j;
//输出保留2位小数
cout<<fixed<<setprecision(2)<<avg<<endl;
return 0;
}
全部评论 (0)
还没有任何评论哟~
