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语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

python中time模块的常用方法及应用详解

《python中time模块的常用方法及应用详解》在Python开发中,时间处理是绕不开的刚需场景,从性能计时到定时任务,从日志记录到数据同步,时间模块始终是开发者最得力的工具之一,本文将通过真实案例... 目录一、时间基石:time.time()典型场景:程序性能分析进阶技巧:结合上下文管理器实现自动计时

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短