2022年面向对象程序设计实验指导书 .docx

上传人:Q****o 文档编号:37701362 上传时间:2022-09-01 格式:DOCX 页数:22 大小:51.09KB
返回 下载 相关 举报
2022年面向对象程序设计实验指导书 .docx_第1页
第1页 / 共22页
2022年面向对象程序设计实验指导书 .docx_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《2022年面向对象程序设计实验指导书 .docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计实验指导书 .docx(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精品_精品资料_试验 1 类和对象1.1 试验目的和要求(1) 懂得类和对象的概念,把握声明类和定义对象的方法.(2) 把握构造函数和析构函数的实现方法.(3) 初步把握使用类和对象编制C+ 程序.(4) 把握对象数组、对象指针和string 类的使用方法.(5) 把握使用对象、对象指针和对象引用作为函数参数的方法.(6) 把握类对象作为成员的使用方法.(7) 把握静态数据成员和静态成员函数的使用方法.(8) 懂得友元的概念和把握友元的使用方法.1.2 试验内容和步骤1. 输入以下程序/test4-1.cpp #include using namespace std.class Coordin

2、ate public:Coordinateint x1,int y1 x=x1 .y=y1 .CoordinateCoordinate &p .Coordinate cout ” Destructor is callededn”. int getxreturn x . int getyreturn y . private:int x,y . .Coordinate:CoordinateCoordinate &p x=p.x .y=p.y.cout ”copy-initialization Constructou is calledn”.int main Coordinate p13,4 .Co

3、ordinate p2p1 .可编辑资料 - - - 欢迎下载精品_精品资料_Coordinate p3=p2 .cout ”p3= “p3.getx ” ,”p3.gety ”n ”.return0 .(1) 写出程序的运行结果.(2) 将 Coordinate 类中带有两个参数的构造函数进行修改,在函数体内增加下述语句:cout ”Constructor is called.n ”.写出程序的运行结果,并说明输出结果.( 3)按以下要求进行调试: 在主函数体内,添加以下语句: Coordinate p4 .Coordinata p52 .调试程序时会显现什么错误?为什么?如何对已有的构造函

4、数进行适当修改?( 4)经过以上第( 2)步和第( 3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数.2. 设计一个4*4 魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和.例如一下魔方:313525921191517131123727291各行、各列以及对角线值的和都是64.【提示】求 4*4 魔方的一般步骤如下:( 1)设置初始魔方的起始值和相邻元素之间的差值.例如上述魔方的初始魔方的起始值( first )和相邻元素之间的差值step分别为:first=1 step=22设置初始魔方元素的值.例如上述魔方的初始魔方为: 13579111315171

5、9212325272931(3)生成最终魔方.方法如下:求最大元素值与最小元素值的和sum,该实例的 sum 是: 1+31=32用 32 减去初始魔方全部对角线上元素的值,然后将结果放在原先的位置,这样就可求得最终魔方.本例最终魔方如下:313525921191517131123可编辑资料 - - - 欢迎下载精品_精品资料_727291此题的魔方类magic 的参考框架如下:class magic public:void getdata .void setfirstmagic .void generatemagic .void printmagic .private:int m44 .in

6、t step.int first .int sum . .3. 设计一个用来表示直角坐标系的Location 类,在主程序中创建类Location 的两个对象A 和 B,要求 A 的坐标点在第 3 象限, B 的坐标在第 2 象限,分别采纳成员函数和友元函数运算给定两个坐标点之间的距离,要求按如下格式输出结果:Ax1,y1,Bx2,y2Distance1=d1 Distance1=d2其中: x1、x2、y1 、y2 为指定的坐标值,d1 和 d2 为两个坐标点之间的距离.【提示】类 Location 的参考框架如下:class Location public:Locationdouble,d

7、ouble .double Getx double Getydouble distanceLocation & .friend double distance Location &,Location &.private: double x,y . .4. 声明一个 Student 类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(同学人数).仍包括一个成员函数account 用于设置分数、累计同学成果之和、累计同学人数,一个静态成员函数sum 用于返回同学的成果之和, 另一个静态成员函数average()用于求全班成果的平均值.在mai

8、n 函数中,输入 某班同学的成果,并调用上述函数求出全班同学的成果之和和平均分.5. 使用 C+ 的 string 类,将 5 个字符串按逆转后的次序显示出来.例如,逆转前的5 个字符串是:GermanyJapanAmericaBritainFrance按逆转后的次序输出字符串是:FranceBritainAmericaJapanGermany可编辑资料 - - - 欢迎下载精品_精品资料_试验 2 派生类与继承2.1 试验目的和要求(1) 把握派生类的声明方法和派生类构造函数的定义方法.(2) 把握不同继承方式下,基类成员在派生类中的拜访属性.(3) 把握在继承方式下,构造函数与析构函数的执

9、行次序与构造规章.(4) 学习虚基类在解决二义性问题中的作用.2.2 试验内容与步骤1. 输入以下程序./test4_1.cpp #include using namespace std.class Basepublic:void setxint ix=i . Int getxreturn x . public:int x . .class Derived:public Base public:void setyint iy=i . int getyreturn y . void showcout ”Base:x=”xendl .public:inty . .int mainDerived b

10、b .bb,setx16 .bb.sety25 .bb.show .cout ”Base:x=”bb.xendl . cout ”Derived:y= ”bb.yendl . cout ”Base:x= ”bb.getxendl .可编辑资料 - - - 欢迎下载精品_精品资料_cout ”Derived:y= ”bb.getyendl .return 0.(1) 写出程序的运行结果.(2) 按以下要求,对程序进行修改后再调试,指出调试中出错的缘由.将基类 Base中数据成员 x 的拜访权限改为 private 时,会显现哪些错误?为什么?将基类 Base中数据成员 x 的拜访权限改为 pro

11、tected 时,会显现哪些错误?为什么?在源程序的基础上,将派生类Derived 的继承方式改为private 时,会显现哪些错误?为什么?在源程序的基础上,将派生类Derived 的继承方式改为protected 时,会显现哪些错误?为什么?2. 编写一个同学和老师的数据输入和显示程序.同学数据有编号、姓名、性别、年龄、系别和成果,老师数据有编号、姓名、性别、年龄、职称和部门.要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为同学类Student 和老师类Teacher的基类.供参考的类结构如下:class Person. .class Student:public

12、Person. .class Teacher:public Person. .3. 按要求阅读、编辑、编译、调试和运行以下程序.(1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果./test4_3_1.cpp #include #includeusing namespace std.class MyArray public:MyArrayint leng.MyArray.void Input .void Displaystring.protected:int*alist .int length . .MyArray:MyArrayint lengifleng=0cout ”er

13、ror length ”. exit1 .可编辑资料 - - - 欢迎下载精品_精品资料_alist=new int leng .length=leng .ifalist=NULLcout ”assign failure ”. exit1 .cout ”MyArray 类对象已创建. ”endl .MyArray:MyArraydelete alist .cout ”MyArray 类对象被撤销. ”endl .void MyArray:Displaystring strint i .int *p=alist .coutstrlength ”个整数:“. fori=0 .ilength .i+

14、,p+ cout*p ”.coutendl .void MyArray:Inputcout ”请键盘输入 ”length ”个整数 :”. int i .int *p =alist .fori=0 .i*p .int mainMyArray a5 .a.Input .a.Display “显示已输入的 ”.return 0.(2) 声明一个类 SortArray 继承类 MyArray, 在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能.【提示】在第( 1)步的基础上可增加下面的参考框架: class SortArray : public MyArray public:void S

15、ort .SortArrayint leng:MyArraylengcout ”SortArray 类对象已创建. ”endl .virtual SortArray .可编辑资料 - - - 欢迎下载精品_精品资料_ .SortArray:SortArraycout ”SortArray 类对象被撤销. ”endl .void SortArray:Sort/请自行编写 Sort 函数的代码,将输入的整数从小到大排序./并将主函数修改为: int mainSortArray a5 .s.Input .s.Display “显示排序以前的 ”.s.Sort.s.Display “显示排序以后的 ”

16、.return 0.声明一个类ReArray 继承类 MyArray, 在该类中定义一个函数,具有将输入的整数进行倒置的功能.【提示】在第( 1)步的基础上可增加下面的参考框架: Class ReArray:public MyArrayPublic:Void reverse.ReArrayint leng .Virtual ReArray . .请读者自行编写构造函数、析构函数和倒置函数ReArray, 以及修改主函数.(3) 声明一个类 AverArray 继承类 MyArray, 在该类中定义一个函数,具有求输入的整数平均值的功能.【提示】在第( 1)步的基础上增加下面的参考框架: cla

17、ss AverArray:public MyArrayPublic:AverArrayint leng .AverArray .Double Aver . .请读者自行编写构造函数、析构函数和求平均值函数Aver (求解整数的平均值),以及修改主函数.2声明一个NewArray类,同时继承了类SortArray,ReArray和 AverArray, 使得类NewArray的对象同时具有排序、倒置和求平均值的功能.在继承的过程中声明MyArray 为虚基类,体会虚基类在解决二义性问题中的作用.可编辑资料 - - - 欢迎下载精品_精品资料_试验 3 多态性3.1 试验目的和要求(1) 明白多态

18、性的概念.(2) 把握运算符重载的基本方法.(3) 把握虚函数的定义和使用方法.(4) 把握纯虚函数和抽象类的概念和用法.3.2 试验内容与步骤1. 分析并调试以下程序,写出程序的输出结果,并说明输出结果./test5_1.cpp #include using namespace std.class Bpublic:virtual void f1 double xcout ”B:f1double ”xendl .void f2double xcout ”B:f2double ”2*xendl .void f3double xcout ”B:f3double ”3*xendl .class D:

19、public B public:virtual void f1double xcout ”D:f1double ”xendl .void f2double xcout ”D:f2double ”2*xendl .void f3double xcout ”D:f3double ”3*xf11.23 .可编辑资料 - - - 欢迎下载精品_精品资料_pb-f11.23 .pb-f21.23 .pb-f31.23 .pb-f33.14 .return 0.2. 编写一个程序,其中设计一个时间类Time, 用来储存时、分、秒等私有数据成员,通过重载操作符“ +”实现两个时间的相加.要求将小时范畴限制在

20、大于等于0,分钟范畴限制在 059 ,秒钟范畴限制在059 秒.【提示】时间类 Time public:Timeint h=0,int m=0,int s=0.Time operator+Time& .void disptimestring .private:int hourse.int minutes .int seconds. .3. 给出下面的抽象基类container.class containerprotected:double radius .public:containerdouble radius1 .virtual double surface_area=0 .virtual

21、 double volume=0 . .要求建立 3 个继承 container 的派生类 cube、sphere与 cylinder ,让每一个派生类都包含虚函数 surface_area和 volume ,分别用来运算正方体、球体和圆柱体的表面积及体积.要求写出主程序,应用C+ 的多态性,分别运算边长为6.0 的正方体、半径为5.0 的球体,以及半径为5.0 和高为 6.0 的圆柱体的表面积和体积.4. 编写一个程序,用于进行集合的并、差和交运算.例如输入整数集合95 4 3 6 7和2 4 6 9 ,运算出它们进行集合的并、差和交运算后的结果.【提示】i. 可用以下表达式实现整数集合的基

22、本运算:s1+s2 两个整数集合的并运算s1-s2 两个整数集合的差运算s1*s2两个整数集合的交运算ii. 参考以下 Set 类的框架,用于完成集合基本运算所需的各项功能.class setpublic: set:set.可编辑资料 - - - 欢迎下载精品_精品资料_void set:inputint d .int set:length .int set:getdint i .void set:disp .set set:operator+set s1.set set:operator-set s1.set set:operator*set s1.set set:operator=set

23、s1.protected: int len .int sMAX. .可编辑资料 - - - 欢迎下载精品_精品资料_试验 4 模板与反常处理4.1 试验目的和要求( 1)正确懂得模板的概念.( 2)把握函数模板和类模板的声明和使用方法.( 3)学习简洁的反常处理方法.4.2 试验内容和步骤1. 分析并调试以下程序,写出运行结果并分析缘由.( 1)/test6_1_1.cpp #include using namespace std.template T max T x,T y return xy. x:y .int maxint a,int breturn ab. a:b .double ma

24、x double a,double breturn ab. a:b .int main cout ”max3,7 is “max 3,7endl .return 0 . 2/test6_1_2.cpp #include using namespace std.int maxint a,int breturn ab. a:b .double max double a,double breturn ab. a:b .int main cout ”max3,7 is “max 3,7endl . return 0 .2. 编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小可编辑

25、资料 - - - 欢迎下载精品_精品资料_元素的函数设计成函数模板.3. 编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和.【提示】设计一个类模板template class Array. .具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int 型和double 型的两个模板类,分别对整型数组与双精度数组完成所要求的操作.4. 编写一个程序,求输入数的平方根.设置反常处理,对输入负数的情形给出提示.试验 5 C+ 的流类库与输入输出5.1 试验目的和要求( 1)把握 C+ 格式化的输入输出方法.( 2)把握重载运算符“ ”的方法.( 3)把握磁盘文件的输入输出

26、方法.5.2 试验内容和步骤1. 下面给出的 test7_1_1.cpp程序用于打印九九乘法表,但程序中存在错误.请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表.*12345678911224336944812165510152025661218243036771421283542498816243240485664991827364554637281/test7_1_1.cpp #include #include using namespace std.int mainint i,j.cout ” * ”.fori=1.i=9 . i+可编辑资料 - - - 欢迎下载精品_精品资

27、料_couti ”.coutendl. fori=1.i=9 .i+ couti.forj=1. j=i .j+ Couti*j.return 0.2. 下面的程序用于统计文件xyz.txt中的字符个数,请填空完成程序./test7_2_1.cpp #include #includeusing namespace std.int main char ch.int i=0.ifstream file.file.open“ xyz.txt” ,ios:in.if cout” xyz.txt cannot open” endl .abort.While .file.eofi+.cout ”文件字符个

28、数: ”iendl .return 0.3. 重载运算符“ ”,使其能够输入一件商品的信息和输出这件商品的信息.商品的信息由编号、商品名和价格.假如商品类Merchandise 的框架如下:class merchandise public:Merchandiss .Merchandiss .friend istream& operatoristream& in,Merchandiss& s.friend ostream&operatormer .coutmer .return 0.4. 编写一个程序,将两个文本文件连接成一个文件,然后将此文件中全部小写字母转换成大写字母,并打印出来.可编辑资料 - - - 欢迎下载

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

当前位置:首页 > 技术资料 > 技术总结

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com