}
protected:
intmonth,day,year。
}。
2、编写一个学生和教师的数据输入和显示程序。
学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。
要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。
3、给出下面的基类:
classarea
{
protected:
doubleheight。
doublewidth。
public:
area(doubleh,doublew>
{
height=h。
width=w。
}
virtualdoublegetarea(>=0。
}。
【要求】
<1)建立基类area的俩个派生类rectangle与isosceles,让每一个派生类都包含一个函数getarea(>,分别用来返回矩形与三角形的面积。
用构造函数对height与width进行初始化。
<2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
<3)要求通过使用基类指针访问虚函数的方法<即运行时的多态性)分别求出矩形和三角形面积。
实验四多态性
一、实验目的
1、掌握运算符重载的基本方法。
2、掌握友元运算符函数和成员运算符函数的使用方法及两者之间的不同。
3、学习虚函数的定义与使用方法。
4、了解静态多态性和动态多态性。
5、学习使用虚函数和继承实现动态多态性。
二、实验内容
1、编写一个程序,要求:
<1)生明一个类Complex<复数类),定义类Complex的两个对象c1和c2,对象c1通过构造函数直接指定复数的实部和虚部<类私有数据成员为double类型:
real和imag)为2.5及3.7,对象c2通过构造函数直接指定复数的实部和虚部为4.2及6.5;
<2)定义友元运算符+,—的重载函数,以c1、c2对象为参数,调用函数时能返回两个复数对象相加、相减操作;
<3)定义成员函数print,调用该函数时,以格式“real+imagi”输出当前对象的实部和虚部,例如:
对象的实部和虚部分别是4.2和6.5,则调用print函数输出格式为:
4.2+6.5i;
<4)编写主程序,计算出复数对象c1和c2相加、相减结果,并将其结果输出。
2、编写一个程序,用于进行集合的和、并和交运算。
例如输入整数集合{9,5,4,3,6,7}和{2,4,6,9},计算出他们进行集合的并、差和交运算后的结果。
【提示】
<1)可以用一下表达式实现整数集合的基本运算:
s1+s2两个整数集合的并运算
s1-s2两个整数集合的差运算
s1*s2两个整数集合的交运算
<2)参考以下Set类的框架,用于完成集合基本运算所需的各项功能。
classSet
{
public:
Set(>。
voidinput(intd>。
//向集合中添加一个元素
intlength(>。
//返回集合中的元素个数
intgetd(inti>。
//返回集合中位置i的元素
voiddisplay(>。
//显示集合的所有元素
Setoperator+(Sets1>。
//成员运算符重载函数,实现集合的并运算
Setoperator-(Sets1>。
//成员运算符重载函数,实现集合的差运算
Setoperator*(Sets1>。
//成员运算符重载函数,实现集合的交运算
Setoperator=(Sets1>。
//成员运算符重载函数,实现集合的赋值运算
protected:
intlen。
//统计结合中元素的个数;
ints[MAX]。
//存放集合中的元素
}。
3、下面提供一个体会继承中的多态性和虚函数在多态性中的作用的题目。
请根据提示进行实验。
定义类BaseFly,其中Fly(>函数输出特定内容。
例如:
classBaseFly
{
public:
voidFly(>(cout<<"\n-----CIassBaseFly:
:
Fly(>-----\n";}
};
<1)定义类BirdFly、DragonFly和PlaneFly,都继承自BaseFly,重载Fly(>函数,使得各类中的Fly(>函数分别输出不同的内容。
classBirdFly:
publicBaseFly
{
public:
voidFly(>{cout<<"\n-----classBirdFly:
:
Fly(>-----\n";}
};
classDragonFly:
publicBaseFly
{
public:
voldFly(>{cout<<"\n-----ClassDragonFly:
:
Fly(>-----\n";>
>;
classPlaneFly:
publicBaseFly
{
public:
voidFly(>{cout<<"\n-----ClassPlaneFly:
:
Fly(>-----\n";}
};
<2)在main(>函数中,用“new”关键字分配出以上四个类的实例,调用各个实例的Fly(>函数测试多态性。
请参考以下代码:
intmain(>
{
cout<<"\n测试继承中的多态性(Virtual?
Ornot?
>:
\n';
BaseFly*pBase;
BirdFly*pBird=newBirdFly;
pBasc=pBird;
cout<<"\nBirdFly->\n"。
pBase->Fly(>;
DragonFly*pDragon=newDragonFly;
pBase=pDragon;
cout<<"\nDragonFly->\n"。
pBase->Fly(>;
PlaneFly*pPlane=newPlaneFly。
pBase=pPlane;
cout<<"\nPlaneFly->\n"。
pBase->Fly(>。
return0,
}
<3)将BaseFly:
:
Fly(>声明为virtual,在main(>中定义BaseFly的指针:
*pBase,依次分别指向UirdFly、DragonFly和P1aneFly,并调用各类的Fly(>函数,体会虚函数作用。
BaseFly*pBase=newBaseFly;
BirdFly*pBird=newBirdFly;
pBase=pBird;
4、写一个程序,定义抽象类Container:
classContainer
{
protected:
doubleradius。
public:
Container(doubler>。
//抽象类Container的构造函数
virtualdoublesurface_area(>=0。
//纯虚函数surface_area
virtualdoublevolume(>=0。
//纯虚函数volume
}。
【要求】
建立3个继承Container的派生类:
Sphere<球体)、Cylinder<圆柱体)、Cube<正方体),让每一个派生类都包含虚函数surface_area(>和volume(>,分别用来球体、圆柱体和正方体的表面积和体积。
要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
实验五模板与异常处理
一、实验目的
1、正确理解模板的概念。
2、掌握函数模板与类模板的声明和使用方法。
3、学习简单的异常处理方法。
二、实验内容
1、已知下列主函数:
intmain(>
{
cout<<cout<<cout<<return0。
}
声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。
2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。
3、编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。
4、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。
【提示】
设计一个类模板
template
classArray
{
……
}。
具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别是int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
5、编写一个程序,求输入数的平方根。
设置异常处理,对输入负数的情况给出提示。
实验六C++的流类库与输入输出
一、实验目的
1、掌握C++格式化的输入输出方法。
2、掌握重载运算符“<<”和“>>”的方法。
3、掌握磁盘文件的输入输出方法。
二、实验内容
1、下面给出的程序用于打印九九乘法表,但程序中存在错误。
请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。
源程序:
#include
#include
intmain(>
{
inti,j。
cout<<"*"。
for(i=1。
i<=9。
i++>
{
cout<
}
cout<for(i=1。
i<=9。
i++>
{
cout<
for(j=1。
j<=i。
j++>
cout<
}
return0。
}
2、定义类Complex用来表示复数类,当创建复数对象时,如果没有给出初始值,则默认该复数为0,以友元形式重载运算符“<<”,“>>”,以实现用户对复数类对象的输入输出,并重载运算符“+”,以实现复数对象和普通整数变量的加法运算。
ostream&operator<<(ostream&out,Complex&p>。
istream&operator>>(istream&in,Complex&p>。
3、编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。
实验报告要求
每人针对每个实验上交一份实验报告,不接受不完整的实验报告,或者说明与程序或结果不符合的实验报告。
实验报告主要包括四方面内容:
⑴实验内容
实验题目与要求。
(2>程序清单
实验实现的源程序,要求符合代码行首缩进、单句代码换行、标识符命名合理,并包括必要的注释。
(3>运行结果
原始数据,程序运行结果截图及说明。
(4>实验总结
调试过程及调试中遇到的问题及解决办法。
调试程序的收获心得与体会,分析不足之处。