ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:165.19KB ,
资源ID:5592377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5592377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++面向对象程序设计实验指导书谭浩强.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++面向对象程序设计实验指导书谭浩强.docx

1、C+面向对象程序设计实验指导书谭浩强C+面向对象程序设计实验指导书江西理工大学电气工程与自动化学院2015年9月绪论 10.1 写本书的目的 10.2 本书的结构安排 10.3 如何使用本书 2实验一 C+程序的运行环境和运行C+程序的方法 31.1 实验目的 31.2实验内容和步骤 3实验二 C+对C 的扩充 52.1 实验目的 52.2 实验内容 52.2.1 程序阅读 52.2.2 程序设计 72.3 思考题 7实验三 类和对象(一) 83.1 实验目的 83.2 实验内容 83.2.1程序阅读 83.2.2 程序设计 104.3思考题 10实验四 类和对象(二) 114.1 实验目的

2、114.2 实验内容 114.2.1程序阅读 114.2.2 程序设计 124.3思考题 13实验五 运算符重载 145.1 实验目的 145.2 实验内容 145.2.1程序阅读 145.2.2 程序设计 165.3思考题 17实验六 派生与继承 186.1 实验目的 186.2 实验内容 186.2.1程序阅读 186.2.2 程序设计 20实验七 派生与继承多重派生 217.1 实验目的 217.2 实验内容 217.2.1程序阅读 217.2.2 程序设计 247.3思考题 24实验八 C+程序、Windows程序和MFC程序 258.1 实验目的 258.2 实验内容 258.2.1

3、 实验描述 258.2.2 实验步骤 268.2.3 实验结果分析 328.3思考题 34实验九 简单单文档MFC程序设计 359.1 实验目的 359.2 实验内容 359.2.1 实验描述 359.2.2 实验步骤 369.2.3 实验结果 419.3思考题 42实验十 简单对话框程序设计 4310.1 实验目的 4310.2 实验内容 4310.2.1 实验描述 4310.2.2 实验步骤 4310.2.3 实验结果 5010.3思考题 50实验十一 简单数据库程序设计 5211.1 实验目的 5211.2 实验内容 5211.2.1 实验描述 5211.2.2 实验步骤 5311.2.

4、3 实验结果 6011.3思考题 61总结 62参考书目 63绪论0.1 目的 面向对象程序设计语言是现今最流行的编程语言之一,C+语言是作为最早最流行的面向对象编程语言之一而发展起来的。学好C+语言不仅可以从面向过程的程序设计思想过渡到面向对象的程序设计思想,而且可以为以后学习其它的面向对象语言打下坚实的基础,使得学习其它的面向对象编程语言变得轻松、容易。 实验作为学习C+语言不可缺少的一个环节不仅可以加深学生对C+面向对象思想的理解,同时可以提高学生的动手编程能力,培养学生良好的编码习惯。目前关于C+语言的理论教材比较多,但是适合学生练习的实验指导书却比较少,这严重影响了学生对C+这门课程

5、的学习。大多数情况下,学生学习C+语言之前都刚刚学习过C语言程序设计这门课程,从编程环境到编程语言同时转换过来需要一定的时间和合理的指引,同时在学习C+理论知识的过程中,学生很少也很难把C+程序设计和现在社会上比较流行的基于VC6.0的MFC程序设计联系起来,所以很难让学生在学习C+语言的同时,提升学生基于VC6.0的MFC程序设计的能力。编写本书的目的就是从以上几点来考虑的,首先要把学生从以前的编程环境中脱离出来,然后循序渐进地介绍新的编程环境的新知识点,同时把C+的语法结构融入到基于VC6.0的MFC程序设计中去,从而实现学生轻松掌握C+这门程序设计语言和习惯编程环境以及理解C+语法和MF

6、C之间的关系的目的,从而提高学生的程序设计能力和学生程序设计的成就感。0.2 结构安排 实验课程的安排离不开理论课程的学习,本书的编排以知识点为核心,理论教材蓝本为C+面向对象程序设计教程(第2版)陈维兴 林小茶编着,清华大学出版社出版。通过为不同的知识点设计相应的实验程序,来达到学生练习和理解C+语言面向对象的思想的目的,同时本书还设计了一些程序设计课后练习题,设计本部分有三个目的:一个是有些课堂练习中没有办法练习到的知识点将在这部分体现,指导老师可以根据需要来增删课堂的讲解内容;另一个是为一部分有能力有兴趣深入学习C+程序设计的同学提供一些练习题,从而提升这部分学生的程序设计能力;第三就是

7、避免有些学生在做实验的过程中盲目按照指导书中的步骤一步一步地不加思考地写程序,学生要回答这些问题,就必须看懂这些程序中隐含的知识点,从而达到理论知识和实践知识更好地结合。 对于课堂练习,本书共安排了11个实验,共24个学时,实验安排如下: 实验一 C+程序的运行环境和运行C+程序的方法 (2学时) 实验二 C+对C 的扩充 (2学时) 实验三 类和对象(一) (2学时) 实验四 类和对象(二) (2学时) 实验五 实验五 运算符重载 (2学时) 实验六 派生与继承 (2学时) 实验七 派生与继承多重派生 (2学时) 实验八 实验八 C+程序、Windows程序和MFC程序 (2学时) 实验九

8、简单单文档MFC程序设计 (2学时) 实验十 简单对话框程序设计 (2学时) 实验十一 简单数据库程序设计 (4学时)0.3 如何使用本书面向对象程序设计语言出现的目的就是为了设计大型的软件系统,但是教学过程中很难让学生在课堂上实现一个大型的(甚至是成型)的系统,所以作为教师应该引导学生在实现一个简单的功能性的程序的同时让学生思考,思考如何把这个地方的技术实现到一个复杂的应用系统中去;另外教师要充分利用本书中第二部分的练习,引导学生去思考如何利用C+的相关技术从头到尾设计一个具有实用价值的应用程序。作为学生如果只是简单地按照本书中提供的步骤一步一步完成某一个程序,而不去思考为什么要这样做的话,

9、那么学生能学到的知识也仅仅是C+的语法而已,并不能真正理解C+面向对象的思想,最终不能设计出好的程序来。所以学生不仅要全部实现本书中的课堂练习,得出正确的结果,而且在完成了程序后还要思考本程序为什么要这样设计,如果换成其它的程序设计语言会怎么实现,只有这样才能够真正理解C+的精髓,从而掌握C+。另外学生在学习最后四个实验的时候一定不要忘记前面C+语法知识,能否合理地将C+的三大特性运用到MFC的程序设计中是提高程序运行效率,存储效率和程序封装性一个最有效的手段。实验一 C+程序的运行环境和运行C+程序的方法1.1 实验目的(1)了解所用的计算机系统的基本操作方法, 学会独立使用该系统。(2)了

10、解在该系统上如何编辑、编译、连接和运行一个C+程序e(3)通过运行简单的C+程序, 初步了解C+源程序的结构和特点。应学会在一种以上的编译环境下运行C+程序,建议学习并掌握Visual C+ 6.0的使用方法。1.2实验内容和步骤(1) 检查所用的计算机系统是否已安装了C+编译系统, 并确定它所在的子目录。(2) 在Visual C+环境下编译和运行C +程序。在第一次上机时, 按以下步骤建立和运行C+程序: 先进入V i sual C+ 6 . 0 环境。 按照上机指导第9章介绍的方法, 在自己指定的子目录建立一个名为test. cpp 的新文件(此时尚未向文件输入内容) 。 从键盘输入以下

11、程序(第l 章第4题) int main();int a,b;c=a+b;cout” a+b=”a+b; 选择Build Compile test.cpp 命令, 对此源程序进行编译。观察和分析编译信息。 根据编译信息指出的错误,修改程序。再进行编译,如果还有错, 再重复此过程,直到编译不出错为止。 选择BuildBuild test.exe 命令,对程序进行连接, 如果不出销, 就会生成可执行程序test.exe。 选择Build- Execute test. exe 命令, 执行可执行程序test. exe。观察屏幕的变化。在输出窗口应显示程序运行结果。 分析结果是否正确, 如果不正确或认

12、为输出格式不理想,可以修改程序,然后重新执行以上至步骤。此外,还可利用已有的源程序建立一个新程序。由于刚才已建立了一个名为test. cpp的源程序, 可以以它为基础建立一个新程序。这样更方便些。按以下步骤: 通过“资源管理器”或“我的电脑”找到已有源程序test. cpp。 双击test. cpp 图标, 进入Visual C +集成环境, 打开test. cpp 。 在test. cpp 基础上将源程序修改为以下内容(第l 章第5 题) ,#include using namespace std;int main( )int a,b;c=add(a,b)cout”a+b=”cendl;re

13、turn 0;int add(int x,int y);z =x+y;return(z);选择File-Save as 命令,用新的文件名other.cpp 保存。此时, other.cpp 与tesl. cpp在同一子目录下。对新文件other. cpp 进行编译、连接和运行。步骤同前。(3) 请思考以下问题,并上机进行试验。将本实验中第2 个程序作以下改动:(a) 将程序第1,2 行改为下面一行#include (b) 将第3 行int main ()改为void main()( c ) 删去main 函数中的retum 0;再运行此程序。并对此作分析,得到必要的结论。(4) 输入两个整数

14、,将它们由大到小的顺序输出(本题是 C +面向对象程序设计第l章习题第8题) 。使用指针方法。使用变量的引用。比较这两种方法的特点和使用方法。实验二 C+对C 的扩充2.1 实验目的1进一步了解和熟悉VC+6.0开发环境,学会在VC+6.0环境下调试程序;2熟悉C+中简单的标准输入输出函数的实用;3理解const修饰符的作用,并学会应用const修饰符;4理解内置(内联)函数的优缺点并学会使用内置函数;5理解和使用函数重载以及带默认参数的函数;6使用new和delete进行动态内存管理;7理解和使用引用。2.2 实验内容2.2.1 程序阅读1理解下面的程序,并在VC+6.0下运行查看结果,回答

15、程序后面的问题。#include using namespace std;int max_def(int x, int y) return (xy?x:y);int max_def(int x, int y, int z) int temp = 0; return (temp=(xy?x:y)z?temp:z;double max_def(double x, double y) return (xy?x:y);int main() int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 =

16、max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);- coutx1=x1endl; coutx2=x2endl; coutd1=d1endl; coutd2=d2endl;- return 1;问题一:上述程序的输出结果是什么?答:问题二:哪些情况可以参与函数的重载?答:问题三:处调用的是哪个函数?答:问题四:处的输出结果为什么是d2=12,而不是d2=12.3?答:2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;int main()

17、 int *p1 = new int; - int *p2 = new int(0); - char *p3 = new char64; -return 1;问题一:、处动态申请内存分别代表什么不一样的意思?答:问题二:该程序存在什么隐患?改正该程序使隐患消除。答:3理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;void swap(int a, int b) int temp = a; a = b; b = temp;void swap(int *a, int *b) int temp = *a; *a = *b;

18、 *b = temp;int main() int i = 5; int j = 10; coutBefore swap: i=i,j=jendl; swap(i,j); - coutAfter the first swap: i=i,j=jendl; swap(&i,&j); - coutAfter the second swap: i=i,j=jendl; return 1;问题一:上述程序的输出结果是什么?答:问题二:处函数调用后并不能实现两个数的交换,而处却可以,为什么?答:问题三:处调用的是哪个重载函数?答:2.2.2 程序设计1使用函数重载的方法定义两个重名函数,分别求出整形数平面

19、间两点间距离和双精度平面间两点间距离,如果没有输入第二点的坐标则默认为圆点(0,0)。2设计一个函数:exchange(float x, float y, float z),当调用exchange(a,b,c)时,将a的内容赋值给b,b的内容赋值给c,c的内容赋值给a,要求采用引用的方式来实现。2.3 思考题1自己设计一个程序,测试const的三种用法:指向常量的指针,常指针,指向常量的常指针。2编写一个函数,实现两个字符串变量的交换,要求参数用引用。实验三 类和对象(一)3.1 实验目的1类的定义;2类对象的使用;3类成员变量的定义和使用;4类成员函数的定义和使用;5理解类的作用域;6理解类

20、的声明;7理解类中private和public权限的声明依据。3.2 实验内容1理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;class CDate void Set(int m, int d, int y ) month = m ; day = d ; year = y ; int IsLeapYear() return (year%4 = 0 & year%100 != 0)|(year%400 = 0); public: void Print() coutmonth/day/yearendl; private

21、: int month; int day; int year;void main() CDate a; - a.Set(10,15,2007) ; a.Print();问题一:以上程序编译能通过吗,为什么,应该如何改正?答:问题二:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限?答:问题三:处语句的意思是什么?答:2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;int month;/全局变量 int day; int year;void Set(int m,int d,int y) -a :m

22、onth=m; - :day=d; :year=y;class CDatepublic: void Set(int m,int d,int y) -b :Set(m,d,y); - void Print() coutmonth/day/yearendl; private: int month; /成员变量 int day; int year;void main() CDate a; a.Set(10,15,2007) ; a.Print();问题一:处是在给成员变量赋值,还是在给全局变量赋值,如果去掉域作用符:,程序是否还能正确运行?答:问题二:处调用的哪个函数,如果去掉域作用符:,程序是否还

23、能正确运行?答:问题三:该程序的输出结果是什么,试解释该输出结果。答:3.2.2 程序设计1需要求3 个长方柱的体积,请编一个基于对象的程序。数据成员包括length(长)、width (宽) 、height (高)。要求用成员函数实现以下功能 由键盘分别输入3 个长方柱的长、宽、高: 计算长方柱的体积: 输出3 个长方柱的体积。编程序,上机调试并运行。本题是C+面向对象程序设计第2 章第6 题。4.3思考题1试设计一个复数类,该类有实部和虚部两个成员数据,成员数据采用私有访问权限,同时该类有两个共有成员函数,分别用来设置成员数据和输出成员数据,在主函数中分别采用对象方式,指针方式和引用方式来

24、调用该类的公有函数设置和输出成员数据。实验四 类和对象(二)4.1 实验目的1理解掌握this指针的作用和用法;2理解掌握构造函数的定义和作用;3掌握构造函数的使用;4理解掌握拷贝构造函数的定义和使用;5理解掌握构造函数的重载;6理解掌握析构函数的定义和使用。4.2 实验内容1理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;class CPointpublic: void Set(int x,int y); void Print();private: int x; int y;void CPoint:Set(int

25、x,int y) x = x; y = y;void CPoint:Print() coutx=x,y=yendl;void main() CPoint pt; pt.Set(10,20); pt.Print();问题一:以上程序编译能通过吗,试解释该程序?答:问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正?答:2理解下面的程序,并在VC+6.0下运行查看结果,回答程序后面的问题。#include using namespace std;class CPersonpublic: void Print();private: CPerson();private: int

26、 age; char *name;CPerson:CPerson()void CPerson:Print() coutname=name,age=ageendl;void main() CPerson ps(23,张三); ps.Print();问题一:以上程序存在三处大错误,在不改变主函数内容的前提下,试改正该程序。答:4.2.2 程序设计1设计实现一个CPoint类,满足以下要求: a 该类包含两个整型成员变量x(横坐标)和y(纵坐标),以及一个输出函数Print()用来输出横坐标和纵坐标,要求不可以在类的外部直接访问成员变量; b可以采用没有参数的构造函数初始化对象,此时的成员变量采用默认值0; c可以采用直接输入参数的方式来初始化该类的成员变量; d可以采用其它的CPoint对象来初始化该类的成员变量; e设计一个主函数来测试以上功能。4.3思考题1设计一个CStudent(学生)类,并使CStudent类具有以下特点: a该类具有学生姓名、学号、

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1