12. 绩点计算
- 【问题描述】
- 【输入形式】
- 【输出形式】
- 【样例输入】
- 【样例输出】
- 题解
- 思路
- 代码
【问题描述】
学校对本科生的成绩施行绩点制(GPA)。将学生的实际考分根据不同学科的不同学分按一定的公式进行计算。规定如下:
实际成绩 | 绩点 |
---|---|
90-100 | 4.0 |
85-89 | 3.7 |
82-84 | 3.3 |
78-81 | 3.0 |
75-77 | 2.7 |
72-74 | 2.3 |
68-71 | 2.0 |
64-67 | 1.5 |
60-63 | 1.0 |
60以下 | 0 |
-
一门课程的学分绩点=该课绩点*该课学分
-
总评绩点=所有学科绩点之和/所有课程学分之和
现要求你编程求出某人的总评绩点(GPA)
【输入形式】
第一行 总的课程数n
第二行 相应课程的学分(两个学分间用空格隔开)
第三行 对应课程的实际得分
此处输入的所有数字均为整数
【输出形式】
输出有一行,总评绩点,保留两位小数
【样例输入】
5
4 3 4 2 3
91 88 72 69 56
【样例输出】
2.52
题解
思路
- 1.这题很简单,没啥思路
- 注意:这里判断用的数组。避免了写很长的if else,简化了代码
- 注意:控制输出小数位数的代码要记住!
代码
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int main(){int score_left[9]={90,85,82,78,75,72,68,64,60};int score_right[9]={100,89,84,81,77,74,71,67,63};double score[9]={4.0,3.7,3.3,3.0,2.7,2.3,2.0,1.5,1.0};int n;cin>>n;vector<int> xuefen,fenshu;for(int i=0;i<n;i++){int temp;cin>>temp;xuefen.push_back(temp);}for(int i=0;i<n;i++){int temp;cin>>temp;fenshu.push_back(temp);}double sum=0,sum_xuefen=0;for(int i=0;i<xuefen.size();i++){//遍历所有的课 sum_xuefen+=xuefen[i];for(int j=0;j<9;j++){if(fenshu[i]>=score_left[j]&&fenshu[i]<=score_right[j]){sum+=xuefen[i]*score[j];break;}} }cout<<fixed<<setprecision(2)<<sum/sum_xuefen<<endl;return 0;
}