【沈阳航空航天大学】【实验课程】<类与对象编程作业>

实验课程作业

  • 1. 编写数组类
  • 2. 设计一个班级类
  • 2. 设计一个学生类

1. 编写数组类

【问题描述】
建立一个数组类,数组个数不定,求该数组的平均值,并对该数组排序,其中类内成员数据:int *arr,int n(其中:arr存储数组元素起始地址,n存储数组元素个数),基本完成以下操作:

1构造函数:初始化成员数据;
2) 求数组平均值;
3) 对数组升序排列;
4) 输出平均值和排序后的数组元素。

【输入形式】输入数组个数,和数组每一个元素
【输出形式】输出数组平均值,和排序后的数组元素
【样例输入】5 3 4 6 1 2
【样例输出】3.20 1 2 3 4 6
【评分标准】数组元素是整数类型,平均值输出保留两位小数,输出数据之间用单个空格隔开。

#include <iostream>
#include <iomanip>	 // 用于设置输出格式
#include <algorithm> // 提供排序算法using namespace std;// 定义一个数组类 Arrey
class Arrey
{
private:int n;	  // 数组的大小int *arr; // 指向数组元素的指针public:// 构造函数,初始化数组大小并分配内存Arrey(int size) : n(size), arr(new int[n]) {}// 析构函数,释放数组内存~Arrey(){delete[] arr;}// 输入数组元素void input(){for (int i = 0; i < n; i++){cin >> arr[i];}}// 计算数组的平均值double average(){int sum = 0;for (int i = 0; i < n; i++){sum += arr[i];}return (double)sum / (double)n; // 强制类型转换确保结果为double类型}// 对数组进行快速排序void quicksort(){sort(arr, arr + n); // 使用STL的sort函数进行排序}// 输出数组的平均值和排序后的数组元素void output(){double avg = average();cout << fixed << setprecision(2) << avg << " "; // 设置输出格式,保留两位小数quicksort();									// 对数组进行排序for (int i = 0; i < n; i++){cout << arr[i] << " "; // 输出排序后的数组元素}cout << endl; // 换行}
};int main()
{int size;cin >> size; // 从标准输入读取数组的大小Arrey myArrey(size); // 创建数组对象myArreymyArrey.input();	 // 输入数组元素myArrey.output();	 // 输出数组的平均值和排序后的数组元素return 0; // 程序正常退出
}

2. 设计一个班级类

【问题描述】设计一个班级类,可以包含n名学生的基本信息(学号,姓名,1门课程成绩),可以求班级的平均分和成绩最高的学生信息。假设最高分唯一。
【输入形式】班号,学生人数n,n名学生信息
【输出形式】班级平均分,成绩最高的学生信息

【样例输入】
Computer01 4
1 Hello 95
2 Haha 90
3 Fine 92
4 SoLo 93

【样例输出】
92.50
1 Hello 95

【样例说明】课程成绩用整数表示,平均分用double类型,输出保留两位小数。
【提示】cout输出保留两位小数,需要大家自己查阅资料。

#include <iostream>
#include <string.h> // 引入字符串处理函数库
#include <iomanip>	// 引入输入输出流格式控制库
using namespace std;// 定义学生结构体
struct student
{int no;		   // 学号char name[20]; // 姓名int score;	   // 成绩
};// 定义班级类
class classes
{
private:char classname[20];	  // 班级名称int class_size;		  // 班级人数struct student s[30]; // 学生信息数组,最多存30名学生double ave;			  // 班级平均成绩public:// 构造函数,用于初始化班级信息classes(const char *name, int size){strncpy(classname, name, sizeof(classname)); // 安全地复制班级名称class_size = size;							 // 设置班级人数ave = 0.0;									 // 初始化平均分为0}// 设置学生信息void set(){for (int i = 0; i < class_size; i++){cin >> s[i].no >> s[i].name >> s[i].score; // 从控制台读取学生信息}}// 计算班级平均分void Ave(){for (int i = 0; i < class_size; i++){ave += s[i].score; // 累加所有学生的成绩}ave /= class_size; // 计算平均分}// 获取班级平均分double getAve() const{return ave;}// 获取成绩最高的学生信息student max_student() const{student max_st = s[0]; // 假设第一个学生成绩最高for (int i = 0; i < class_size; i++){if (s[i].score > max_st.score) // 如果发现更高分的学生{max_st = s[i]; // 更新最高分学生信息}}return max_st;}// 打印班级平均分,保留两位小数void printAve() const{cout << fixed << setprecision(2) << ave << endl;}
};// 打印成绩最高的学生信息
void print_max(const student &s)
{cout << s.no << " " << s.name << " " << s.score << endl;
}int main()
{char name[20]; // 存储班级名称int clasno;	   // 存储班级人数cin >> name >> clasno;	  // 从控制台读取班级名称和人数classes c1(name, clasno); // 创建班级对象,并初始化c1.set();	   // 调用set函数输入多名学生的基本信息c1.Ave();	   // 调用Ave函数计算班级平均分c1.printAve(); // 调用printAve函数打印班级平均分student max_st;max_st = c1.max_student(); // 调用max_student函数获取最高成绩的学生信息print_max(max_st);		   // 调用print_max函数打印最高成绩的学生信息return 0;
}

2. 设计一个学生类

【问题描述】设计一个类,记录学生的姓名、学号、学院、3门课程成绩,类中可以录入学生基本信息,求总成绩,输出学生基本信息及总成绩。输入3名同学的基本信息并按总成绩由高到低排序输出。(假设总成绩都不相同)
【输入形式】学生姓名 学号 所在学院 3门课程成绩(数据用单个空格隔开)
【输出形式】学生姓名 学号 所在学院 3门课程成绩 总成绩(数据用单个空格隔开)

【样例输入】
Doreamon 1 computer 95 96 98
Nobita 2 computer 55 60 62
Shizuka 3 computer 89 90 88

【样例输出】
Doreamon 1 computer 95 96 98 289
Shizuka 3 computer 89 90 88 267
Nobita 2 computer 55 60 62 177

【样例说明】成绩用整数类型。

#include <iostream>using namespace std;// 学生类声明
class Student
{
private:char name[20];				// 学生姓名char dep[10];				// 学生所在学院int num;					// 学生学号int score1, score2, score3; // 三门课的成绩int s;						// 总成绩public:// 设置学生信息void Set(){cin >> name >> num >> dep >> score1 >> score2 >> score3;}// 计算总成绩void sum(){s = score1 + score2 + score3;}// 打印学生信息void print() const{cout << name << " " << num << " " << dep << " " << score1 << " " << score2 << " " << score3 << " " << s << endl;}// 获取总成绩int getTotalScore() const{return s;}
};// 冒泡排序函数,用于对学生数组按总成绩进行排序
void bubbleSort(Student arr[], int size)
{bool flag;						   // 用于判断某轮循环是否发生交换,如果没有发生交换,则数组已经有序for (int i = 0; i < size - 1; i++) // 遍历所有元素{flag = false;						   // 每轮开始前重置flagfor (int j = 0; j < size - i - 1; j++) // 从前往后比较相邻元素{if (arr[j].getTotalScore() < arr[j + 1].getTotalScore()) // 如果前一个学生的总成绩小于后一个{Student temp = arr[j]; // 交换两个学生对象arr[j] = arr[j + 1];arr[j + 1] = temp;flag = true; // 标记发生了交换}}if (!flag) // 如果某轮循环没有发生交换,则数组已经有序,可以提前结束排序{break;}}
}// 封装排序函数,使得外部调用更简洁
void sort(Student arr[], int size)
{bubbleSort(arr, size);
}int main()
{int i = 0;Student s[3]; // 声明一个包含3个学生的数组// 输入每个学生的信息并计算总成绩for (i = 0; i < 3; i++){s[i].Set();s[i].sum();}// 对学生数组按总成绩进行排序sort(s, 3);// 打印排序后的学生信息for (i = 0; i < 3; i++)s[i].print();return 0;
}

今天的内容就分享这么多
求三连!!!
求关注!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣热题100_链表_138_随机链表的复制

文章目录 题目链接解题思路解题代码 题目链接 138. 随机链表的复制 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&a…

数据库同步方案Sqlserver

数据库同步方案探究 随着信息技术的迅猛发展&#xff0c;数据库在各个领域的应用日益广泛。而在分布式系统、云计算、大数据等场景下&#xff0c;数据库同步成为了一个至关重要的问题。数据库同步不仅关乎数据的完整性和一致性&#xff0c;还直接影响到系统的稳定性和性能。因…

乐健体育刷分----AI运动的站姿风车

一.前情提要 1.本文仅作学习参考不得用于其他不当途径&#xff0c;若有问题后果自负 二.操作 1.打开乐健体育 2.点击AI运动&#xff0c;找到站姿风车 3.摄像头对准以下图片&#xff0c;拖动图片或保持不动均可 &#xff08;站姿风车2组及以上效果更佳&#xff09;

完成产品兼容互认,用KubeBlocks可实现OceanBase集群管理

本文转载自云猿生聊技术&#xff08;CloudNativeDataTech&#xff09; 前言 KubeBlocks&#xff08;简称 KB&#xff09;在最新发布的0.7版本中&#xff0c;通过组件扩展&#xff08;Addon&#xff09;的形式新增了对OceanBase的支持功能。这一更新为企业级和非企业级用户提供…

计算机视觉入门:开启图像理解之旅

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

记某客户的一次无缝数据迁移

背景 客户需要将 Elasticsearch 集群无缝迁移到移动云&#xff0c;迁移过程要保证业务的最小停机时间。 实现方式 通过采用成熟的 INFINI 网关来进行数据的双写&#xff0c;在集群的切换恢复过程中来记录数据变更&#xff0c;待全量数据恢复之后再追平后面增量数据&#xff…

数据结构__顺序表和单链表

顺序表的改进 问题&#xff1a; 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了…

[蓝桥杯 2017 省 AB] 分巧克力

文章目录 [蓝桥杯 2017 省 AB] 分巧克力题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解思路代码如下&#xff1a; [蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 K K K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 …

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程

原文链接&#xff1a;基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600473&idx6&sn431e9408a42862d29fe4f4ef7703595b&chksmfa8208becdf581a820d9479d2aa61b88e96612c4ab72b0…

Flutter Engine引擎概念

1.Flutter是Google提供的开源框架。 2.本身由C编写并兼容iOS(底层C)/Android(底层C)平台的FlutterEngine框架负责UI渲染、数据转移、调用DartVM虚拟机。 3.FlutterEngine框架由Skia图形库、Dart运行时、Flutter框架代码组成。Skia是用于图形绘制和文本显示的2D图形引擎库&#…

蓝桥-回文日期

目录 题目链接 ​编辑 ​编辑 什么是回文数&#xff1f;​编辑 代码 100%过 90%暴力 优化写的暴力代码 题目链接 2.回文日期 - 蓝桥云课 (lanqiao.cn) 什么是回文数&#xff1f; 代码 100%过 把那个90%的代码的循环限制条件去掉就行了&#xff0c;题目只是限制了N…

描述如何在Vaadin中创建自定义组件。在Vaadin中,如何实现数据模型与UI组件的绑定?

描述如何在Vaadin中创建自定义组件。 在Vaadin中创建自定义组件是一个相对直接的过程。Vaadin是一个流行的Java Web框架&#xff0c;用于构建单页应用程序&#xff08;SPA&#xff09;和富客户端应用程序。下面是一个基本的步骤指南&#xff0c;描述如何在Vaadin中创建自定义组…

【前沿模型解析】潜在扩散模型 2-1 | 手撕感知图像压缩 基础块ResNet块

文章目录 1 残差结构回顾2 LDM结构中的残差结构设计2.1 组归一化GroupNorm层2.2 激活函数层2.3 卷积层2.4 dropout层 3 代码实现 1 残差结构回顾 残差结构应该是非常重要的基础块之一了&#xff0c;你肯定会在各种各样的网络模型结构里看到残差结构&#xff0c;他是非常强大的…

Vector Laboratories的凝集素--莲藕凝集素(Lotus Tetragonolobus Lectin)

莲藕凝集素&#xff08;lotustetragonolobus lectin&#xff09;是一个密切相关的糖蛋白家族&#xff0c;对含α-linked L-fucose具有相似的特异性。虽然莲藕凝集素的许多结合特性与荆豆凝集素I相似&#xff0c;但这些岩藻糖特异性凝集素之间的结合亲和力和某些寡糖特异性明显不…

学习大数据之JDBC(使用JAVA语句进行SQL操作)(3)

文章目录 DBUtils工具包准备工作DBUtils的介绍QueryRunner空参的QueryRunner的介绍以及使用有参QueryRunner的介绍以及使用 ResultSetHandler结果集BeanHandler<T>BeanListHandler<T>ScalarHanderColumnListHander 事务事务事务_转账分析图实现转账&#xff08;不加…

Cypress自动化测试开发指南!

cypress是基于JavaScript语言为编写语言的自动化测试开发工具&#xff0c;配合使用cucumber测试开发框架&#xff0c;以node.js为服务进程&#xff0c;可以简单的帮助测试人员完成需要人工手点的所有页面人机交互操作&#xff0c;可以模拟键盘和鼠标输入&#xff0c;快捷完成ca…

【XCPC笔记】2023 (ICPC) Jiangxi Provincial Contest——ABCHIJKL 做题记录

赛后gym练习及补题&#xff0c;gym链接&#xff1a;2023 (ICPC) Jiangxi Provincial Contest – Official Contest 补题顺序 L [Zhang Fei Threading Needles - Thick with Fine](https://codeforces.com/gym/104385/problem/L)题面解读参考代码 A [Drill Wood to Make Fire](h…

代码随想录算法训练营Day42|LC416 分割等和子集

一句话总结&#xff1a;背包问题。 原题链接&#xff1a;416 分割等和子集 拿到题先明确这是动态规划的题&#xff0c;具体类型是01背包问题。到了题目解法这里&#xff0c;首先判断数组加和是否为偶数&#xff0c;否则return false。然后就是01背包问题的解题思路了。具体地&…

LeetCode-热题100:118. 杨辉三角

题目描述 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1]]…

The Sandbox:在NFT Paris 2024引领数字文艺复兴

我们的欧洲、中东和非洲&#xff08;EMEA&#xff09;总部位于法国巴黎&#xff0c;我们的创始人也是土生土长的法国人&#xff0c;因此 The Sandbox 一直与 "光之城 "有着紧密的联系。近年来&#xff0c;巴黎日益成为 Web3 创新的中心&#xff0c;NFT 艺术氛围日益浓…