使用动态内存分配创建封装的动态学生类Student的对象数组class,在主函数中计算所有学生每1门课程的平均成绩并输出。学生类Student中包含当前学生对象的姓名、学号和三门课程的成绩,在主函数中要求用户输入学生人数num,并根据输入的学生人数num创建动态对象数组。

时间: 2023-12-03 11:47:30 浏览: 24
以下是使用动态内存分配创建封装的动态学生类Student的对象数组class,并计算所有学生每1门课程的平均成绩并输出的完整代码: ```c++ #include <iostream> #include <string> using namespace std; class Student { public: // 构造函数 Student(string name, int num, double score1, double score2, double score3) { this->name = name; this->num = num; this->score1 = score1; this->score2 = score2; this->score3 = score3; } // 获取学生姓名 string getName() const { return name; } // 获取学生学号 int getNum() const { return num; } // 获取三门课程的成绩 double getScore1() const { return score1; } double getScore2() const { return score2; } double getScore3() const { return score3; } private: string name; // 学生姓名 int num; // 学生学号 double score1; // 第一门课程成绩 double score2; // 第二门课程成绩 double score3; // 第三门课程成绩 }; int main() { int num; // 学生人数 cout << "请输入学生人数: "; cin >> num; // 动态创建学生对象数组 Student* classArr = new Student[num]; // 输入学生信息 for (int i = 0; i < num; i++) { string name; int num; double score1, score2, score3; cout << "请输入第" << i+1 << "个学生的姓名: "; cin >> name; cout << "请输入第" << i+1 << "个学生的学号: "; cin >> num; cout << "请输入第" << i+1 << "个学生的三门课程成绩: "; cin >> score1 >> score2 >> score3; // 创建学生对象并添加到对象数组中 Student s(name, num, score1, score2, score3); classArr[i] = s; } // 计算每门课的平均成绩 double avgScore1 = 0, avgScore2 = 0, avgScore3 = 0; for (int i = 0; i < num; i++) { avgScore1 += classArr[i].getScore1(); avgScore2 += classArr[i].getScore2(); avgScore3 += classArr[i].getScore3(); } avgScore1 /= num; avgScore2 /= num; avgScore3 /= num; // 输出每门课的平均成绩 cout << "三门课程的平均成绩分别为: " << avgScore1 << ", " << avgScore2 << ", " << avgScore3 << endl; // 释放动态分配的内存 delete[] classArr; return 0; } ``` 在上述代码中,首先通过 `new` 关键字动态创建了一个大小为 `num` 的 `Student` 对象数组 `classArr`。然后通过 `for` 循环输入每个学生的信息,并创建学生对象并添加到对象数组中。最后再通过 `for` 循环计算每门课的平均成绩,并输出结果。最后使用 `delete` 关键字释放动态分配的内存,避免内存泄漏。

相关推荐

最新推荐

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的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。