C++自学精简教程 目录(必读)
我们读大学也要上课,上课也要考试的。
基本上每门课也都是满分100分。
虽然选择一个专业要上很多门课,每门课也都是100分,但是这些课程的“价值”却是不一样的。
有的课程是核心专业课:比如数学专业的《数学分析》;计算机专业的《数据结构》。
有的课程是专业选修课:比如数学专业的《泛函分析》;计算机专业的《C++语言程序设计》。
虽然不同的课都是100分,但是分量它们是不一样的。这个呢,就用学分来表示。
比如,《数学分析》是核心专业课3个学分。《泛函分析》呢,是专业选修课就只有2个学分。
也就是说,这两门课都考满分,一个得到3个学分,一个得到2个学分。
这样以来,国内大部分计算机专业都规定,你毕业之前只要积累修满120个学分就可以毕业了。
但是同样是修了2个学分,一个学生靠了99,另一个学生考了60分。这是明显的不同。
同样是毕业,怎么样衡量谁更厉害呢?那就需要另外的指标:学分绩点。
这种指标建立就同时考虑的考试成绩和课程的学分。
从下面的介绍中可以看出,这种学分绩点指标设计的是非常合理的。其本质就是加权平均数。
既然每门课都是100分,而不同课程的100分的分量又不一样,那怎么算这个学生学到了多少价值呢?用绩点取代成绩。
学分绩点就是把这门课的考试成绩和这门课的学分综合起来考虑计算得到的一个数值。
简单的可以像下面这样计算:
课程绩点 = 课程成绩 × 课程学分
例如,《数学分析》这门课,3个学分,考试成绩为80分,那么学生得到的课程学分绩点可以像下面这样计算:
《数学分析》绩点= 80 × 3 = 240。
但是这样计算的话,很多们课加起来数值太大,看起来费劲,不方便。
为了让绩点数值看起来不是那么大,目前国内大部分高校通用的计算方法是:
课程绩点 = 课程成绩 / 10 - 5
可以看出来来59分,以及59分以下,课程绩点都是0。也就是不及格就啥也得不到。
类似的,3个学分的《数学分析》考88分,那么:
《数学分析》课程绩点 = 88 / 10 - 5 = 3.8
下面再把学分也考虑进来:
课程学分绩点 = 课程学分 × 课程绩点
所以,
《数学分析》的学分绩点 = 3 × 3.8 = 11.4
那么,我们休了很多门课,怎么样用一个数值来综合衡量我们的所有学分绩点呢?那就是加权平均。
平均学分绩点(Grade Point Average,即GPA)。
GAP =(课程学分1*课程绩点1+课程学分2*课程绩点2+...+课程学分n*课程绩点)/(课程学分1+课程学分2+...+课程学分n)
题目:已知学生李白的各门课的成绩,以及各门课对应的学分,求张三的平均学分绩点GPA。
我们把,各门课的成绩放在数组score_list里,各门课的学分放在数组 credit_hour_list里。
李白总共修了10门课。求李白的平均学分绩点GPA。
前驱知识点: for循环语句 和堆数组 heap array
#include
using namespace std;
int main()
{
//10门课
int course_number = 10;
//10门课的考试分数
int* score_list = new int[course_number]{ 88, 95, 84, 89, 92, 79, 80, 96, 83, 80 };
//10门课的学分
int* credit_hour_list = new int[course_number]{ 3 , 4 , 1 , 3 , 3 , 2 , 2 , 4 , 3 , 3 };
//累加课程学分绩点=课程学分绩点1+课程学分绩点2+...+课程学分绩点n
double total_credit_hour_point = 0;
for (int i = 0; i < course_number; i++)
{
//课程绩点=课程成绩/10 -5
double grade_point = score_list[i] / 10.0 - 5;//注意这里整数通过除以浮点数结果转换成了浮点数
//课程学分绩点
double credit_hour_point = credit_hour_list[i] * grade_point;
//累加课程学分绩点
//(1) your code
}
//平均学分绩点
//各门课学分之和 sum_credit_hour
int sum_credit_hour = 0;
for (int i = 0; i < course_number; i++)
{
//(2) your code //累加
}
//平均学分绩点= 累加课程学分绩点/各门课学分之和
double GPA = total_credit_hour_point / sum_credit_hour;
cout << "李白的GPA = " << GPA << endl;
//释放动态内存
delete[] score_list;
delete[] credit_hour_list;
return 0;
}
正确结果为:
C++自学精简教程 全部答案