admin 管理员组

文章数量: 887032


2023年12月22日发(作者:原码、反码、补码)

C++程序设计实验指导书

实验一 C++程序的运行环境和运行(2学时)

实验名称:C++程序的运行环境和运行

实验目的:

1、熟悉C与C++的编程区别;

2、熟悉C++的函数重载。

实验要求:

求两个数的平方和。要求如下:

1、有int,float和long型的数据各3个;

2、重载SumSqure函数求两个相同类型变量的平方和。

实验步骤:

1、 添加头文件#include 和名字空间using namespace std。

若要使用cin和cout标准输入输出流,则必须添加上述两个内容。

2、 构建重载SumSqure函数。

SumSqure函数的功能是对输入的两个同类型形参a,b求其平方和,并将结果返回。对于输入和返回的不同类型int,float,long,其函数内部实现代码是一样的,所以可利用函数的重载写出三个SumSqure函数。

3、 main函数中的赋值。

定义int,float,long三种类型的数据,分别调用SumSqure函数,测试其结果。

4、 调用SumSqure函数。

注意SumSqure函数重载的调用,根据SumSqure函数的定义可知:实参必须是同一种类型的变量才能调用不同的SumSqure,针对不同类型求平方和。

1

实验二 类与对象(一)(4学时)

实验名称:类与对象(一)

实验目的:

1、掌握类的设计;

2、掌握对象的创建;

3、实现一个简单的成员函数设计。

实验要求:

求3个长方体的体积,编写一个基于对象的程序,数据成员包括lenth,width,height。要求用成员函数实现以下功能:

1、由键盘分别输入3个长方体的长、宽、高;

2、计算长方体的体积;

3、输出3个长方体的体积。

实验步骤:

1、 建立三个文件,分别存储长方体类的声明头文件,长方体类的定义文件和main函数测试文件。

注意:类的头文件和类的定义实现文件的命名要一致!

2、 头文件信息:

头文件长方体类的声明中,类成员变量有:lenth,width,height;类成员函数有:VolumeCalculation(), InputData()。注意:不用声明构造函数与析构函数。

3、 长方体类定义文件:

在定义文件中,需编写上面两个函数——VolumeCalculation和InputData的实现主体。InputData的作用是对某个对象的lenth,width,height 三个类成员变量赋值,VolumeCalculation作用是用来返回lenth*width*height的值,求出长方体的体积。

注意:不用在定义里写构造函数和析构函数。

4、 main函数中的成员函数的调用:

在main函数中用长方体类定义三个对象,分别对三个对象调用InputData和VolumeCalculation输入原始数据——长,宽,高,然后再输出体积。

2

实验三 类和对象(二)(6学时)

实验名称:类和对象(二)

实验目的:

1、掌握类的封装技术;

2、掌握累的声明与类的实现分离技术;

3、掌握对象的动态建立和释放;

4、掌握静态成员变量和成员函数的应用。

实验要求:

1、构造一个类CalculateFun,公有部分包含构造、析构函数、外部接口函数void AllByOne()、和静态成员函数static void ShowSequence()。私有部分包含:void InsideCalculation()、void

SetData()、int x、int y和静态成员变量static int snCount。

2、构造函数CalculateFun()初始化x和y的值,InsideCalculation和SetData函数仅供AllByOne函数调用,而外部main函数中对于Calculation的任意对象仅仅调用AllByOne就可以实现从键盘上输入x、y的值,求出(x+2)*(y+3)的结果并显示出来。其中SetData用于键盘输入x和y的值,InsideCalculation用于计算(x+2)*(y+3)并显示结果。

3、建立void ObjectOperating(CalculateFun *pObject)普通函数,功能是对形参中的对象指针调用其接口函数AllByOne(),并且调用静态成员函数ShowSequence来显示是第几次调用对象。

4、main函数中建立一个含三个元素的对象指针数组pArr,分别对其三个元素new出三个对象,并调用ObjectOperating函数。完了后用delete释放new出的内存。

实验步骤:

1、 建立三个文件,分别存储CalculateFun类的的声明头文件、其定义实现文件和main函数测试文件。

2、 头文件信息:头文件类的声明中,按照实验要求1来添加各成员变量和成员函数。

3、 类定义实现文件:通过对成员函数等编写具体实现内容,完成类的构造。

4、 main函数文件:参照实验说明4。

3

实验四 运算符重载(4学时)

实验名称:运算符重载

实验目的:

1、 掌握普通运算符重载常用方法及应用;

2、 掌握输入输出流运算符重载的方法。

实验要求:

1、 编写矩阵类,定义矩阵类Matrix中的private类型的int型成员变量matrixArray[2][3];

2、 定义类成员函数InputData,对变量matrixArray进行以此赋值;

3、 利用operator + 实现两个矩阵类对象的加法。

4、 重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。

实验步骤:

1、 建立三个文件:

三个文件分别存储Matrix类的声明头文件、Matrix类的定义实现文件和main函数测试文件。注意:类的头文件和类的定义实现文件的命名要一致!

2、 头文件信息:

Matrix类头文件中需要定义private型的int型成员变量matrixArray。

声明public类型的一个默认构造,一个Display成员函数,显示矩阵的各个元素,和InputData对matrixArray进行数据的输入。

声明成员函数运算符操作Matrix operator + (Matrix &mat)或友元函数Matrix

operator + (Matrix &mat1, Matrix &mat2)。

将流重载符都声明为用友元函数,friend istream& operator>>(istream &in,Matrix &m)和friend ostream& operator<<(ostream&,Matrix&);

3、 类定义文件:

构造函数可在函数体内部将matrixArray进行初始化为0(用两个for循环依次对每个元素赋值为0。

InputData函数依次输入每个元素的值。

Display函数显示矩阵的每个元素,在屏幕上的打印效果为2行3列。

operator +函数实现两个矩阵的每个元素值的相加。

两个流重载运算符分别实现矩阵的输入和输出。

4、 main函数:

定义两个Matrix类的对象,并依次调用InputData进行赋值,然后再调用operator+函数,对两个对象进行相加,再将相加后的结果用Display函数显示出来,数据的输入和输出要调用流重载运算符所在的友元函数。

4

实验五 继承与派生(6学时)

实验名称:派生与继承

实验目的:

1、 掌握类的继承、派生构造函数设计;

2、 掌握protected类型的用法。

实验要求:

先定义一个基类Person,Person里有5个protected类型的成员,分别是:string name(姓名)、int age(年龄)、char sex(性别)、string address(地址)、telephone(电话)。

然后分别定义Teacher(教师)类和Cadre(干部)类,分别用这两个类虚继承Person类,把其作为虚基类。再采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类,注意Teacher_Cadre构造函数初始化的问题。要求:

(1)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher_Cadre类中还包含数据成员wages(工资)。

(2)对Teacher和Cadre类的声明中都添加display函数,其函数定义里要输出各自类里所有成员数据(包括继承的Person里的数据)。

(3)在类体中声明成员函数,在类外定义成员函数。

(4)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,并用cout语句输出该类自己定义的变量wage。

实验步骤:

1、 建立三个文件:

三个文件分别存储Person、Teacher、Cadre和Teacher_Cadre类的声明头文件、其定义文件和main函数测试文件。注意:类的头文件和类的定义实现文件的命名要一致!

2、 头文件信息:

头文件声明中要把Teacher、Cadre和Teacher_Cadre三个类的声明全写上。Teacher、Cadre类声明中要含有void display()函数用以显示Teacher和Cadre类里的所有成员变量,Teacher_Cadre中也声明一个void show()函数,功能见下一步。

3、 类定义文件:

Teacher类中display函数中将其类的所有成员变量都输出。在Teacher_Cadre中成员函数首先利用Teacher类中的show函数首先调用Teacher类中的display函数输出所有Teacher类中的成员变量,然后再输出Teacher_Cadre类中的wages变量。

4、 main函数:

main函数里只需定义一个Teacher_Cadre类的对象,并对其初始化,然后调用show函数,看看显示的是什么情况。想想其调用原理。

5

实验六 多态性与虚函数(6学时)

实验名称:多态性与虚函数

实验目的:

掌握类的多重继承方法。

实验要求:

写一个程序,定义抽象基类Shape,由它派生出5个派生类:Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。用虚函数分别计算几种图形面积,并求他们的和。要求用基类指针数组,使它的每一个元素指向一个派生类对象。

实验步骤:

1、建立一个各种累声明的头文件和一个定义实现文件:

将Shape、Circle、Square、Rectangle、Trapezoid、Triangle类的声明和实现分别写在一个头文件和一个定义文件里。

2、在Shape类中,要含有纯虚函数virtual double Area() const = 0;在其它的类中要公有继承该函数并在定义文件中写出各自的面积公式。定义各个类中求面积所需的成员变量(都是protected类型)

3、main函数:除了纯虚函数Shape外,分别定义各类的对象,并且定义包含5个元素的Shape类指针数组pt,取每个类定义出的对象的首地址分别赋给pt的每一个元素,在对pt的每个元素调用Area函数求出各自的面积,并将各自求出面积的总和相加得到总面积并输出。

6

实验七 输入输出流(4学时)

实验名称:输入输出流

实验目的:

掌握文件的输入输出流对文件的读写操作。

实验要求:

建立两个磁盘文件和,编程序实现以下工作:

1、从键盘输入10个整数,分别存放在两个磁盘文件中(每个文件中放5个整数);

2、从读入5个数,然后存放到文件原有数据的后面;

3、从中读入10个整数,对它们按从小到大的顺序存放到(不保留原来的数据)。

实验步骤:

1、 在磁盘里建立两个文件和,若两个文件都在C盘,则在程序里引用其名称时需这样写:”C:”和”C:”。

2、 创建函数fun1,分别定义两个流文件对象,并检查是否能成功对其打开。输入5个数存放到文件中,并且再输入5个数存放到文件中。然后关闭两个文件。

3、 创建函数fun2,其功能是读取文件中的5个数,并存放到文件原有数据的后面。

4、 创建函数fun3,其功能是从文件中读取10个整数,利用起泡法对10个数进行排序,并将排序后的10个数输出。

5、 main函数:

依次调用fun1、fun2、fun3函数即可。

7


本文标签: 函数 文件 成员 定义