1.8.6 练习 本科生学平均分绩点GPA计算(堆数组的应用)

2023-10-19 18:59

本文主要是介绍1.8.6 练习 本科生学平均分绩点GPA计算(堆数组的应用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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计算

题目:已知学生李白的各门课的成绩,以及各门课对应的学分,求张三的平均学分绩点GPA。

我们把,各门课的成绩放在数组score_list里,各门课的学分放在数组 credit_hour_list里。

李白总共修了10门课。求李白的平均学分绩点GPA。

前驱知识点: for循环语句 和堆数组 heap array

代码如下

#include <iostream>
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+...+课程学分绩点ndouble total_credit_hour_point = 0;for (int i = 0; i < course_number; i++){//课程绩点=课程成绩/10 -5double 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++自学精简教程 全部答案

这篇关于1.8.6 练习 本科生学平均分绩点GPA计算(堆数组的应用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/241732

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或