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

相关文章

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库