| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> C++第四次上机实验(构造函数与析构函数) -> 正文阅读 |
|
[数据结构与算法]C++第四次上机实验(构造函数与析构函数) |
实验内容: ? ? ? ? 创建一个Score类,完成一下功能:
首先是定义一个Score类,其中包括构造函数,析构函数与一些其他一般的成员函数,构造函数的作用主要是用来对对象进行初始化。例如在此次上机中 Score x;这是对对象初始化,这时x没有给出后面的参数,就为默认的学生数目2人。可以在类中定义了两个构造函数,第1个构造函数没有参数,在函数体中对私有的数据成员赋以固定的值。第2构造函数有3个参数,在函数体中分别把参数值赋给数据成员。这两个构造函数同名,是两个重载的构造函数。类的代码定义如下:
类中分为了公有成员和私有成员,公有成员除了构造函数和析构函数之外,还在类内声明了输入学生信息,显示学生信息,显示课程的平均函数,显示成绩的排序这些函数。而输入的信息存放在私有成员中,外部无法直接访问,只能通过成员函数进行访问。 在类中声明的函数,可在类外进行定义,但需要加上作用域运算符(::),在类外定义的函数如下所示。
通过使用函数,能够完成显示每门课的平均成绩,与每位同学的平均分和对每门成绩进行排序并由高到低显示。主函数如下
程序执行如下图所示: 排序方法:1、冒泡排序? 最简单的一种排序算法。假设长度为n的数组arr,要按照从小到大排序。则冒泡排序的具体过程可以描述为:首先从数组的第一个元素开始到数组最后一个元素为止,对数组中相邻的两个元素进行比较,如果位于数组左端的元素大于数组右端的元素,则交换这两个元素在数组中的位置,此时数组最右端的元素即为该数组中所有元素的最大值。接着对该数组剩下的n-1个元素进行冒泡排序,直到整个数组有序排列。
2、选择排序 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。
3、快速排序 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。快速排序又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。
实验总结:本次实验难度有一些,在实验之前需要确定程序实现的功能,并组织好需要使用几个函数来完成这些功能。对数据的处理也要思考好将数据放入哪,并以什么形式进行存放。在这些都清楚的情况下,对程序进行编写,会变得快捷一些,不会因为自己之前还没有想好该怎么做而导致写程序的时候逻辑不顺,该有的数据没有。在实现功能的时候,如若碰到许多方法,可以选择较为简便的进行使用。 本次实验所遇困难:1、在编写程序时,科目A,科目B,科目C的成绩放入不同的成绩数组,这样导致了后面对成绩进行排序与求平均值造成了程序有些冗余,因此之后对数据的存放需要做到的是,一样类型的数据,最好存入在相同的单元中,如一个二维的数组。 2、对类的定义可以放在头文件中进行定义。但头文件中如果只有一个类的定义与包含的头文件,编译时会有报错的情况出现。如下图所示: 而在头文件中,有命名空间 using namespace std; 即能够正常的运行程序。效果如下图所示: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:50:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |