首页 > 编程语言 >上海计算机学会2020年5月月赛C++丙组T2计算GPA

上海计算机学会2020年5月月赛C++丙组T2计算GPA

时间:2024-04-07 21:30:49浏览次数:57  
标签:字符 int T2 丙组 C++ 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。

输入格式

一个字符序列:表示小爱各门课程的等第,一门课程的等第只可能是 ABCD 中的一个,保证 + 号或 - 号只会出现在字母的后面。

输出格式

一个两位小数:表示输入等第对应的 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;
}

标签:字符,int,T2,丙组,C++,GPA,课程,序列,输入
From: https://blog.csdn.net/winterling/article/details/137478721

相关文章

  • 【每周例题】蓝桥杯 C++ 鸡哥的蛋糕大作战
    鸡哥的蛋糕大作战题目鸡哥的蛋糕大作战 题目分析1.使用一个for循环遍历全数,寻找最大洞的数2.使用一个while进行数位拆分,寻找洞的数量3.使用if从两个条件寻找最大洞的最小数符合最大洞的数洞数相同中的最小数代码#include<iostream>#include<bits/stdc++.h>using......
  • 【每周例题】蓝桥杯 C++ 鸡哥的奇特密码
    鸡哥的奇特密码题目鸡哥的奇特密码 题目分析 1.首先,我们需要想到用一个for循环去遍历整个数组,用if寻找出需要我们处理的部分2.如何处理:将重复的L丢出数组,可以运用pop_back()函数3.为了避免越界,我们可以从后往前遍历代码#include<iostream>#include<bits/stdc++.h>u......
  • C++:类的继承
    基类的构造函数和析构函数不会被继承,但是当子类对象初始化时则会自动调用基类的构造函数和析构函数(默认)如果想要调用基类的重载构造函数,需要在构造函数后加上“:<重载的构造函数>{};”,如下classFATHER{public:FATHER();~FATHER();FATHER(inta)//重载......
  • C++核心编程:多继承
    #include<iostream>usingnamespacestd;//多继承语法继承方式父类1,继承方式父类2//实际开发过程中,一般不建议使用多继承classBase1{public: Base1() { m_A=100; } intm_A;};classBase2{public: Base2() { m_A=200; } intm_A;};cl......
  • 2024 4 7 c++ 作业多态性
    1.多态性:抽象类和派生类(1)定义一个抽象类CShape(至少有一个函数被声明为纯虚函数);(2)再利用CShape分别定义两个派生类CRectangle(矩形)和CCircle(圆),三个类都有计算面积的成员函数GetArea()和计算对象周长的成员函数GetPerimeter();(3)在主函数中声明基类指针和派生类对......
  • 2024.1.27c++测试订正代码
    测试订正生成括号题目描述王五是一名数学专业的同学,在课余选修了C++C++C++编程课,现在他能够自己写程序判断......
  • 【沈阳航空航天大学】 <C++ 类与对象计分作业>
    C++类与对象1.设计用类完成计算两点距离2.设计向量类3.求n!4.出租车收费类的设计与实现5.定义并实现一个复数类6.线性表类的设计与实现7.数组求和8.数组求最大值1.设计用类完成计算两点距离【问题描述】设计二维点类Point,包括私有成员:横坐标x,纵坐标y。能够......
  • C++初级----string类(STL)
    1、标准库中的string1.1、sring介绍    字符串是表示字符序列的类,标准的字符串类提供了对此类对象的支,其接口类似于标准字符容器的接口,但是添加了专门用于操作的单字节字符字符串的设计特性。    string类是使用char,即作为他的字符类型,使用他默认的char_tr......
  • 谷歌 Rust 团队工作效率是 C++ 团队的两倍
    谷歌Rust团队工作效率是C++团队的两倍来源:OSCHINA编辑: 白开水不加糖2024-04-0116:01:00 22国产数据库圈,为啥那么多水货?”谷歌Android工程总监LarsBergstrom在近期举行的RustNation大会上,介绍了该公司将Go或C++编写的项目迁移到Rust语言的......
  • 第十四届蓝桥杯省赛大学B组填空题(c++)
    日期统计:暴力枚举+set(自带排序加去重)#include<iostream>#include<set>usingnamespacestd;set<int>ans;inta[100]={5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,7,0,5,8,......