使用动态内存分配创建封装的动态学生类Student的对象数组class,在主函数中计算出所有学生三门课程的平均成绩并输出

时间: 2023-12-03 10:42:03 浏览: 29
以下是使用动态内存分配创建封装的动态学生类Student的对象数组class,并计算所有学生三门课程的平均成绩的示例代码: ```cpp #include <iostream> using namespace std; class Student { private: string name; int score1, score2, score3; public: Student(string n, int s1, int s2, int s3): name(n), score1(s1), score2(s2), score3(s3) {} double averageScore() const { return (score1 + score2 + score3) / 3.0; } }; int main() { int n; cout << "Enter the number of students: "; cin >> n; Student* students = new Student[n]; for (int i = 0; i < n; i++) { string name; int score1, score2, score3; cout << "Enter student " << i+1 << "'s name and three scores: "; cin >> name >> score1 >> score2 >> score3; students[i] = Student(name, score1, score2, score3); } double avg1 = 0, avg2 = 0, avg3 = 0; for (int i = 0; i < n; i++) { avg1 += students[i].averageScore() * students[i].score1; avg2 += students[i].averageScore() * students[i].score2; avg3 += students[i].averageScore() * students[i].score3; } avg1 /= n; avg2 /= n; avg3 /= n; cout << "The average score for course 1 is " << avg1 << endl; cout << "The average score for course 2 is " << avg2 << endl; cout << "The average score for course 3 is " << avg3 << endl; delete[] students; return 0; } ``` 该示例代码首先从标准输入中读取学生数量,然后使用 `new` 运算符动态分配一个大小为 `n` 的 `Student` 数组,并循环读取每个学生的姓名和三门课程的成绩,将它们存储在相应的 `Student` 对象中。接着,循环遍历所有学生,计算每门课程的加权平均分,并输出结果。最后,使用 `delete` 运算符释放动态分配的内存。 需要注意的是,在实现 `averageScore()` 函数时,为了避免整数除法的问题,我们需要将求和结果强制转换为 `double` 类型,再除以 `3.0`。在计算加权平均分时,我们需要将每个学生的平均分乘以相应的课程分数,再累加到总分上,最后除以学生数量来求得加权平均分。

相关推荐

最新推荐

recommend-type

js删除对象/数组中null、undefined、空对象及空数组方法示例

这两天在项目中遇到后台需要传的数据为不能有null,不能有空值,而这个数据又是一个庞大的对象,对组集合,所以写了个方法来解决这个问题。为了兼具所有的种类类型,封装了方法,代码如下: let obj = { a: { a_1:...
recommend-type

Python3实现的Mysql数据库操作封装类

主要介绍了Python3实现的Mysql数据库操作封装类,涉及Python针对mysql数据库的连接、查询、更新及关闭连接等相关操作技巧,需要的朋友可以参考下
recommend-type

C++自定义封装socket操作业务类完整实例

主要介绍了C++自定义封装socket操作业务类,结合完整实例形式分析了Linux环境下C++操作socket的封装业务类,可实现基本的socket连接、参数设置、发送请求等基本功能,需要的朋友可以参考下
recommend-type

Python操作Oracle数据库的简单方法和封装类实例

主要介绍了Python操作Oracle数据库的简单方法和封装类,结合实例形式分析了Python简单连接、查询、关闭Oracle数据库基本操作,并给出了一个Python针对Oracle各种操作的封装类,需要的朋友可以参考下
recommend-type

【PyQt案例】PyQt 图解Qt Designer工具的使用方法,并封装exe文件

Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。