《C++程序设计》实验指导书.docx

上传人:1564****060 文档编号:94924852 上传时间:2023-08-12 格式:DOCX 页数:13 大小:25.06KB
返回 下载 相关 举报
《C++程序设计》实验指导书.docx_第1页
第1页 / 共13页
《C++程序设计》实验指导书.docx_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《《C++程序设计》实验指导书.docx》由会员分享,可在线阅读,更多相关《《C++程序设计》实验指导书.docx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C+程序设计试验指导书东北大学软件学院2023 年 9 月试验要求C+程序设计课程试验的目的是为了使学生在课堂学习的同时,通过一系列的试验,使学生加深了解和更好地把握C+程序设计课程教学大纲要求的内容。在C+程序设计的课程试验过程中,要求学生做到:(1) 预习试验指导书有关局部,认真做好试验内容的预备,就试验可能消灭的状况提前作出思考和分析。(2) 认真观看程序调试过程中消灭的各种问题,记录主要问题,作出必要说明和分析。(3) 认真书写试验报告。(4) 遵守机房纪律,听从辅导教师指挥,疼惜试验设备。(5) 试验课程不迟到。如有事不能出席,所缺试验一般不补。(6) 本试验承受的开发环境为Micr

2、osoft Visual C+ 6.0,同学在做试验之前要求生疏该集成开发环境。试验的验收将分为两个局部。第一局部是上机操作,包括检查程序运行和即时提问。其次局部是提交书面的试验报告。试验 1 C+程序设计根底4 学时1. 试验目的1) 学习编写简洁的C+程序,并把握C+程序的根本格式与标准。2) 理解 C程序构造的特点。3) 把握函数的定义和调用方法。4) 练习重载函数的使用。5) 把握指针的使用方法。6) 练习通过动态内存安排实现动态数组,并体会指针在其中的作用。7) 生疏流类库中常用的类及其成员函数的用法。8) 学习标准输人输出及格式把握。9) 学习对文件的应用方法二进制文件、文本文件。

3、10) 学习使用VC +的 debug 调试功能,使用step into 追踪到函数内部。2. 试验类型验证型和设计型。3. 试验根本要求1) 输人并运行所给的参考程序 1,并将程序中的注释局部也输人计算机,体会和理解程序的根本格式标准。2) 编写重载函数Maxl 可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。3) 编写并测试 3X3 矩阵转置函数,使用数组保存 3X3 矩阵。4) 使用动态内存安排生成动态数组来重完成上题,使用指针实现函数的功能。5) 编写程序,用二进制方式读写指定的文件 a.bin,在每一行前加行号,写入另一个二进制文件b.bin 中,从b.bin 中读

4、取数据输出到屏幕。4. 试验根本步骤1) 建立一个把握台应用程序工程baseforml,向其中添加一个源程序文件 sum.cpp。依据所给的程序代码输人到计算机中,检查和调试程序,在确认没有觉察错误之后,选择Build-Build sum.exe编译源程序,再选择Build-Execute sum.exe运行程序,并观看输出结果。假设有问题,则需要重检查程序。说明:在 C+程序中假设使用了系统供给的一些功能如cin 和 cout,就必需在程序的首部首先声明相关的包含这些功能的头文件如iostream.h),否则,系统无法找到实现这些功能的代码。/参考程序 1/sum. cppinclude i

5、nt add(int a,int b); int mainint x,y,sum;coutx;ciny; sumaddx,y;cout“The sum is:“sum”运算符使得像 cin 等输入流对象能够写CPoint类对象,再重载“”操作符的原型为:istream& operator(istream&, CPoint&);重载的“(ostream&, CPoint);思考一下,重载的“”操作符和“”操作符能否作为CPoint 类的成员函数来实现。5. 试验思考题1) 类和构造体的区分是什么?2) 类的成员函数与一般的函数有何区分?3) 构造函数和析构函数的作用是什么?4) 类的访问把握权限

6、有何意义?5) 什么是封装?类是如何进展封装的? 6类的静态成员函数和一般成员函数有什么不同? 7依据自己的理解表达运算符重载的作用?试验 3 继承与多态4 学时1. 试验目的1) 学习定义和使用类的继承关系,定义派生类。2) 生疏不同继承方式下对基类成员的访问把握。3) 学习使用虚函数实现动态多态性。4) 学习利用虚基类解决二义性问题。2. 试验类型设计型。3. 试验根本要求1) 使用试验 2 中的CPoint 类,定义 “空间中点”类如下:class CThreePoint:public CPointprivate:int z; public:CThreePoint; CThreePoin

7、t(int, int, int); int GetZ;void SetZ(int pz);virtual void ShowPoint;请完成该类中各成员函数的定义。并利用 VC 调试工具观看含有继承关系类的构造函数和析构函数的执行状况。分析为什么要把 ShowPoint函数设置为虚函数?有什么作用?请在 main函数中做测试。2) 下面是一个“Shape”基类的定义:enum ColorTypeWhite, Black, Red, Green, Blue, Yellow, Magenta, Cyan;/为图形外形定义Shape 基类class Shapeprotected:ColorType

8、 color;public:Shape(ColorType c); virtual void draw;使用 Shape 类和CPoint 类设计一个可在屏幕上作图的简洁实例,要求是不必真正在屏幕上实现作图,只是有一个示意即可。例如:画一个矩形,不必真正画出矩形,只需输出一句话:“This is a rectangle!”即可。要求可画线段、矩形和圆形。要用到继承,虚函数,多态,数据的封装,构造函数的实现等等各种面对对象程序设计的特性。3) 定义一个车(vehicle)基类,具有 MaxSpeed、Weight 等成员变量,Run、Stop 等成员函数,由此派生出自行车 (bicycle)类、

9、汽车(motorcar)类。自行车(bicycle)类有高度(Height) 等属性,汽车(motorcar)类有座位数(SeatNum)等属性。从 bicycle 和 motorcar 派生出摩托车(motorcycle)类,它们都有 Run、Stop 等成员函数。观看虚函数的作用。在继承过程中,留意把 vehicle 设置为虚基类。假设不把vehicle 设置为虚基类,会有什么问题?编程试试看。4. 试验根本步骤1) 编程时重点分析CThreePoint 类的构造函数如何编写,并通过调试运行查看在继承关系中构造函数的执行挨次。2) 可以使用CPoint 类,指明屏幕上特定点的位置,其他的各

10、个类都可以使用它。再使用基类Shape 类,然后在Shpae 类的根底上派生出各种类,如直线类Cline可简洁修改一下试验 2 中的Cline 类,矩形类CRectangle,圆类CCircle。留意要把每个类的特征用最简洁的方式表示出来。3) 编写程序定义一个车(vehicle)基类,有 Run、Stop 等成员函数,由此派生出自行车(bicycle),汽车(motorcar),从bicycle 和 motorcar 派生出摩托车(motorcycle),它们都有Run、Stop 等成员函数。在main ( )函数中定义vehicle,bicycle,motorcar,motorcycle

11、的对象,调用其 Run、Stop函数,观看其执行状况。再分别用vehicle 类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop 定义为虚函数,再试试看。5. 试验思考题1) C+中有哪几种派生方式?每种方式的派生类对基类成员的继承和访问把握属性是什么样的?2) 派生类对象和基类对象是什么样的关系?派生类对象的构造函数和析构函数的执行挨次是怎样的?3) 什么是多态?在C+语言中,是如何实现多态的?4) 虚析构函数的作用是什么?如何发挥作用?5) 引入虚基类后,基类和派生类的构造函数和析构函数的执行挨次要如何变化?试验 4 模板与 STL4 学时1. 试验目的1) 理解什么是

12、通用编程技术。2) 加强对模板相关概念的理解,生疏模板编程的语法。3) 学习编写简洁的函数模板和类模板。4) 理解 STL 中容器、算法、迭代器的等概念,明确它们之间的关系。5) 把握 STL 中 Vector容器的使用方法。6) 练习使用STL 进展编程,加强是通用编程技术的理解。2. 试验类型设计型3. 试验根本要求1) 编写一个函数模板,要求它返回两个值中的最小者。但同时要确保正确处理字符串。2) 以下是一个整数栈类的定义:const int SIZE = 100; class Stackpublic:Stack;Stack;void Push(int n); int Pop;priva

13、te:int stackSIZE; int tos;编写一个栈的类模板包括其成员函数定义,以便为任何类型的对象供给栈构造数据操作。并在应用程序中创立整数栈、字符栈和浮点数栈,供给一些数据进展进栈、退栈和打印操作的测试。3) 编写一程序,让用户自由地从键盘上输入整数,直到输入数字 0 时完毕。把用户输入的数据保存在模板类Vector定义的对象中,并对用户输入的全部数进展排序输出。在向显示器进展输出时,要求用一下 3 种方式实现:a) 仅使用Vector的相关成员函数,不使用迭代器进展输出;b) 使用迭代器自己编程输出;c) 使用 STL 供给的通用算法for_each 进展输出。4) 以下是一个

14、List 类模板的定义: template class List public:List;/构造函数void Add(T&);/在 Link 表头添加结点void Remove(T&);/在 Link 中删除含有特定值的元素T* Find(T&);/查找含有特定值的结点void PrintList;/ 打印输出整个链表List; protected:struct Node Node* pNext; T* pT;Node *pFirst;/链首结点指针;完成对上述List 类模板含有的各成员函数的定义。然后定义一个简洁的Student 类,并利用编写的List 类模板对一个班级的学生进展动态治理

15、。依据自己的力气选做。4. 试验根本步骤1) 函数模板的原型可定义为:template T min(T&, T&),为了同时要确保正确处理字符串,而字符串不能用“”来比较,所以还需要特别定义函数:char* min(char* a, char* b)。另外,要在main 函数中对自己编写的模板进展测试。2) 依据整数栈的定义,可抽象出的栈类模板为:template class Stack public:Stack;Stack;void Push(T& n);T Pop;private:static const int SIZE; T* stack;int tos;这里需要将该模板中的各成员函数

16、进展定义即可。tos 是栈顶位置,Push为压栈操作, Pop为弹栈操作,要在这两个操作中分别考虑栈的长度和栈是否为空。最终,要在 main 函数中对编写的栈类模板进展测试。3) 实现该题目时,首先定义模板类 Vector的一个对象,利用该对象进展对用户输入数据的操作。在进展数据输出时,第一种方式考虑承受类似于数组的随机访问方法,其次种方式利用 Vector的迭代器进展输出,其次种方式则利用 STL 通用算法 for_each 进展实现,也可以才用copy 函数进展实现。4) 要编写出这个程序,要理解Link 类模板中各数据成员的含义。pFirst 代表链表首指针, Node 代表链表的一个结点,pT 为指向该结点对应数据的指针,理解这点格外重要。5. 试验思考题1) 谈谈使用模版进展编程的优点?2) 什么是函数模板和模板函数?两者之间是什么关系?3) 什么是类模板和模板类?两者之间有什么关系?4) STL 中容器、迭代器和算法三者之间的关系?5) STL 中为什么要供给通用算法?它和类模板的成员函数相比,有什么特征?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁