void disptime();//显示时间函数 private:
int hours,minutes,seconds; };
3、写一个程序,定义抽象类Container: class Container {
protected: double radius; public:
Container(double r);//抽象类Container的构造函数 virtual double surface_area()=0;//纯虚函数surface_area virtual double volume()=0;//纯虚函数volume };
【要求】
建立3个继承Container的派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体),让每一个派生类都包含虚函数surface_area()和volume(),分别用来球体、圆柱体和正方体的表面积和体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
4、设计一个点类Point,其结构如下:
(1) Point类表示二维平面点的集合,数据成员由点的坐标值表示,类型为int; (2) 三个重载构造函数:
a) 一个是无参数的构造函数;
b) 一个是带坐标值参数的构造函数,实现对数据成员的初始化; c) 一个是copy构造函数,实现用一个对象初始化本对象; (3) 两个重载成员函数:
a) void offert(int , int ); 实现点的偏移,参数是偏移量;
b) void offert(Point &); 实现点的偏移,参数Point类对象是偏移量;
共21 页,第 16页
(4) 6个运算符重载函数:
a) bool operator = = (Point &);判断两个点对象是否相等; b) void operator + =(Point &);将两个点对象相加; c) void operator ++();将当前对象自增1(前缀); d) void operator ++(int );将当前对象自增1(后缀);
e) friend Point& operator + (Point &, Point &);将两个点对象相加; f) friend Point &operator ? (Point &, Point &);将两个点对象相减; (5) 两个成员函数提供实例对象对私有数据的访问:
a) int GetX(); b) int GetY();
(6)公有成员函数void Display();输出对象的数据成员;
共21 页,第 17页
实验五 模板与异常处理
一、实验目的
1、正确理解模板的概念。
2、掌握函数模板与类模板的声明和使用方法。 3、学习简单的异常处理方法。 二、实验内容
1、已知下列主函数: int main() {
cout< 声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。 2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。 3、编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。 4、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。 共21 页,第 18页 实验六 C++的流类库与输入输出 一、实验目的 1、掌握C++格式化的输入输出方法。 2、掌握重载运算符“<<”和“>>”的方法。 3、掌握磁盘文件的输入输出方法。 二、实验内容 1、下面给出的程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。 源程序: #include cout< cout< cout< 共21 页,第 19页 for(j=1;j<=i;j++) cout< 2、编写一程序,将从键盘读入的一个整数、一个双精度数据和一个字符串写到磁盘文件date.dat中。 3、将“a”至“z”的26个英文字母写入文件,而后从该文件中读出并显示出来。 4、编写一个程序,将两个文本文件连接成一个文件,然后将此文件中所有小写字母转换成大写字母,并打印出来。 5、MFC文件操作 建立工程类型为mfc appwizard(exe)的Dialog-based MFC文件操作工程,设计界面如下。 利用类向导,根据示例编辑框的ID,添加数据成员 m_File。利用类向导,根 据“打开”按钮对应的ID,添加消息映射OnOpen,在OnOpen函数中添加如下代码。 void CMFCFileExampleDlg::OnOpen() { CFile file; file.Open(_T(\),CFile::modeRead); int length = file.GetLength(); 共21 页,第 20页 } char* data = new char[length + 1]; file.Read(data,length); data[length] = '\\0'; m_File = data; file.Close(); delete[]data; UpdateData(false); 利用类向导,根据“保存”按钮对应的ID,添加消息映射OnSave,在OnSave成员函数中添加如下代码。 void CMFCFileExampleDlg::OnSave() { } UpdateData(true); CFile file(_T(\),CFile::modeWrite|CFile::modeCreate); int length = m_File.GetLength(); char* data = new char[length + 1]; for(int i = 0; i < length; i++) data[i] = m_File[i]; data[length] = '\\0'; file.Write(data,length); file.Close(); delete[]data; UpdateData(false); 共21 页,第 21页