面向对象程序设计试题及答案_第1页
面向对象程序设计试题及答案_第2页
面向对象程序设计试题及答案_第3页
面向对象程序设计试题及答案_第4页
面向对象程序设计试题及答案_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计试卷及答案开发环境为,运行结果有截图,若发现错误欢迎指正 实验一、程序开发环境及简单程序设计。题目、简单程序任务:按提示的操作步骤输入下面的代码,编译连接并执行。源程序代码:""() <<"!"<<"!"<<<<""<<;运行结果:Hollo*We 1c o me to C + +?This i含 mg f irst c + gramPress dny key to continu.e题目、编写程序,从标准输入读入一个数,把它转化为英文单词

2、输出,如输入,这是输 出“ ”。源程序代码:<>J();<<"请输入数字用来转化为英文单词:() >>('');()<<"" ;<<""<<""<<""<<""<<""<<""<<""<<""<<""运行结果:卜青输入

3、数字用来转化为英文里词± 12 34冲78 9 .one tuo three four f iue six seuen eight nine题目、循环结构程序设计任务把一张一元纸币换成一分、二分和五分的硬币,假如每一种至少一枚,文友 多少种换法,编程将各种换法显小出来。源程序代码:<>J() J<<"一角"<<"两角"<<"三角"<<(<)(<)(<)(*)"<<<<<<" "<

4、;<<<" ”<<<<<<"换法的总数为:"<<<<运行结果:87 1 488 2 189 1 391 1 293 1 1换法的总数为;(由于种数太多截图不方便所以只截了最后的部分!Press any key to continue实验二、函数题目、内联函数任务(1)定义内敛函数(),求两个整数中的最大值,然后在()函数中惊醒调用(2)定义内联函数()和一般函数(),使整型参数值加,然后在()函数中 惊醒调用;源程序代码: <>J();();();()<<<

5、<","<<<<"中最大的是:"<<()<<<<<<"加后为:"<<()<<<<<<"加后为:"<<()<<()(>);() ;() ;运行结果:题目、函数参数的传递机制、重载函数(1)编写重载函数()可分别求个整数、个整数、个双精度和双精度数的最 大值。()定义两个名称都为()的函数,第一个函数支持整型数组,第二个函数支 持浮点型数组,求数组元素的和。源程序代

6、码:<>() (>);()(>()();() (>);() (>() )();(* );(<)口;;(* )(;(<);)()(,; ;<<<<","<<<<"的最大值为:"<<()<<<<<<","<<<<","<<<<"的最大值为:"<<()<<<<<<&

7、quot;,"<<<<"的最大值为:"<<()<<<<<<","<<<<","<<"的最大值为:"<<()<<<<"型数组元素的和为:"<<()<<<<"型数组的元素和为:"<<()<<运行结果:题目、带默认参数的函数任务定义函数(),计算立体的体积,要求在主函数中

8、以中不同的形式调用此函数。 源程序代码:<>();();<<()<<<<()<<<<()<<<<()<<<<()<<()注意这里不可以再带默认的参数!<<"以"<<<<","<<<<","<<<<"为棱的长方体的体积为:";*运行结果:3 6a棱棱琰棱k为为为为”长s:6:24:60:90:120实验三

9、、类于对象题目、私有成员的访问任务下面的程序中用标明的语句有错误, 在不删除和增加代码行的情况下,改正 错误的语句,使其正确运行。错误代码及改正方法:<>;() ;<<""<<<<;() <<""<<<<()<<<<;()()();();<<<<将该行代码中访问了的私有属性,改为();;改正后的运行结果:Constructor1ConstructorsDesti'uctorSDestructoi*!Press any

10、 key to continue题目、构造函数、拷贝构造函数 任务(1)调试下列程序源程序代码:<>() ;();() <<""() ;() ;J;();<<""()();();<<"("<<()<<","<<()<<")"J运行结果:Co pi/ -in it ialization Cnstruc tor is called Cops -initidlisation Cnstructor is ca

11、lled p3=<4,9> destructor is called ructor is called destructor is ca1led Press an9 key to continue问题:(1)在该程序中将类的带有两个参数的构造函数进行修改,在函数体内添加下 述语句:<<"."。对程序的输出结果进行分析和说明。运行结果:Construstoi ;() >; 口; <<"构造函数被调用!"<<<<;() <<"请输入"<<<&l

12、t;"字符用来构造字符串。"<<;(<)>>;() <<"字符串的储存的内容如下:"<<( <)<<;<<;() <<"析构函数被调用!"<<<< ; is Called.Copy -initialization Cnstructor i零 called Copy -InItialiaation Cnstructioi' Is Called p3=<4,9> destructor is calle

13、d destructor is called destructor is called Press dny key to continue第一个 是构造时产生的,两个分别构造 和 时产生的。析构、,是产生了三个。(2)对上述程序在主函数中添加下列说明语句:,()调试程序会出现什么现象,为什么?如何解决?结合运行结果分析如何使用不同的构造函数创建把不同 的对象?对程序的输出结果进行分析和说明。会出现对象,无法构造。在类中将构造函数(,);改成带有默认参数的 构造函数,例如:(,);运行结果:IconstrustopisCalled.ICopF -in it ial izat io n Cnstr

14、uctoriscelledfcopy -initialization CnstvuctoriscalledConstvustnrisCalled.ConstructorisCalled.p3=<4,9>dest ri*ct oriscalleddestructoriscalleddestructoriscalledIdest riictoriscalleddestructoriscalled(Press aiiy kgyto continue分析同上。题目、析构函数、和运算符任务定义字符串类,包括私有数据成员(*),构造函数中用为申请空间,析构 函数用释放空间,并验证构造函数和析构

15、函数的调用书顺序。源程序代码:<>(); <<"请分别输入你所要建立的两个字符串的含有字符的个数 "<< >>>>()();()();()();运行结果:请分别输入你所要建立的两个字符串的含有字符的个数I 5 6胞造函数被调用,5储输入5学符用来构造字符串12345请输入6字符用来构造字符串.qv?e rty序符串的储存的内容如下;12345字符串的储存的内容如下:法为函数被调用” 精相函数被调用作Ppess dny key to continue可以看出构造函数和析构函数的调用的顺序相反!注意:特别重视构造函数、

16、拷贝构造函数和析构函数的使用以及调用顺序, 这在整个面向对象程序设计中一直是重点同时也一直是难点。实验四、静态成员与友元题目、静态成员的特性任务(1)调试下列程序,写出输出的结果,并分析输出结果。程序代码:<>(); ();J;()这里的静态函数在类外实现时就无需在家关键字。<<""<<<<<<""<<<<静态的数据成员要在类外进行初始化,并且初始化时无需加关键字限定。()()();()静态函数的调用形式。();运行结果:1-861=8(8611*65s any kev

17、to conti.nue可以看出,的数据成员是不属于任何的对象的而属于整个类。函同样是属于整个 类可以用类名加作用域标识符进行调用, 也可以用对象进行调用,两种形式的调 用效果等价。题目、友元函数任务 分析并调试程序,完成下列问题程序代码:<><>;();() ;() ;();J;();(*);()()();();<<":"<<()<<<<":"<<()<<<<":"<<()<< <<&quo

18、t;:"<<()<<运行结果:Thedistance 1:19.799Thedistance2:1.41421ThedistancesIT hedistance4:21.2132|Press any keyto continue思考:(1)指出所有的构造函数,它们在本程序中分别起什么作用?();();();第一个实现单参和带有一个默认参数构造,第二个实现双参构 造;第三个事拷贝构造函数。(实际上前两个可以合并为一个();).()指出设置默认参数的构造函数。(前面已回答)()指出友元函数。将友元函数放到私有部分,观察结果是否有变化。友元函数为:();放到私有部分

19、是没有变化的。()写出结果并分析结果。(结果已给出)题目、静态成员的应用任务定义一个类,在该类中定义包括一个数据成员()(分数)、两个静态数据成员(总 分)和学生人数;成员函数()用于设置分数、求总分和累加学生人数;静态 成员函数()用于计算总分;静态成员函数()用于计算平均值。在(函数中输 入学生成绩,并调用上述函数求出全班学生的总分和平均分。源程序代码:<>J;();()>>() ;()<<”这个班的学生该课程的总分为:"<<<<()<<"这个班的学生该课程的平均分为:"<<&

20、lt;<J;()口;<<"请输入个学生的成绩(<)();<<”这个学生的成绩为(<)<<()<<<<();();运行结果:的绩课课to 生覆该 学的生生he Asi. 10学的的 输10/es 请这这这pl*continue68 85 67 89 10U85 &7 89 100题目、友元函数的应用任务 声明和两个类,二者都有属性,定义二者的一个友元函数(),计算二者的 重量和0源程序代码:<>()()() <<"请输入你在类中所要设置的值:”;>>()

21、<<""<<<<();()()() <<"请输入你在类所要设置的值:”;>>() <<""<<<<();()<<"二者的重量之和为:"<<<<();()();()();();这里子两个类中属性比较单一,主要是为使用友元函数,如果需要可以添加其 他属性。运行结果:请输入你在Bonk夷所要设置weight的值:4578iSight =45 -78情输入你在Rui”类中所要设置邸曰均卜七的值:78-5

22、8weight =78,98二者的重量之和为:124.76Press any key to continue实验五、继承与派生题目、单继承任务调试下列程序,并对程序进行修改,指出程序中错误的原因程序代码:<>; ();() ;J;();() ;() <<""<<<<() 语句()语句()语句();<<""<<<<<<""<<<<<<""<<()<<<<

23、;""<<()<<运行结果:fl:a=6H:a=6B:h=3A: :a=6B:a=3Press any key to continue问题(1)、将派生类的继承方式改为,会出现那些错误和不正常的现象?为什么?在()函数中直接使用用类的属性将是不可以的,因为继承方式是所以其属性将不可以直接被调用!(2)将派生类的继承方式改为,会出现哪些错误和不正常的现象?为什么?同()支部过集成的方式改为。(3)将派生类的继承方式恢复为后,再将类的数据成员型的变量的访问权限改 为时,会出现哪些错误和不正常的现象?为什么?将会出现在类和函数中是用数 据是不可以的,一维在

24、类中是属性为。(4)派生类的继承方式仍为,再将类中的数据成员型的变量的访问权限该为,会出现哪些错误和不正常的现象?为什么?更改后数据在类中是可以使用,但在函数仍是不可以被使用的,因为继承方式是! 题目、利用继承与派生类来管理学生和教师的档案 任务假设要管理下述基类人员的如下的数据(教师):姓名、性别、年龄、职称、教授课程;(学生):姓名、性别、年龄、学号、专业;():姓名、性别、年龄、学号、专业、导师;源程序代码:<><>()()()()() <<"姓名:"<<<<"性别:"<<&l

25、t;<"年龄:"<< ;()()()()()();<<"职称:"<<<<"教授课程:"<<<< ;()()()()()();<<"学号:"<<<<"专业:"<< ;J()()()()()<<"导师:"<<<<()("张三","男","教授","面向

26、对象程序设计");(“李四","男","",”计算机科学与技术");("李红","女","",”计算机科学与技术”,”张三)();()<<();运行结果:题目、教师干部类定义(人)类,由分别派生(教师)类和(干部)类,再有(教师)类和类采用 多重继承的方式派生出(教师兼干部)类。源程序代码:<><>J()()()()() <<"姓名:"<<<<"性别:"&

27、lt;<<<"年龄:"<< ;J()()()()(); <<"职称:"<<()<<"职称:"<<J()()()()(); <<"职务:"<<() <<"职务:"<<J()()()()()()();()(); <<"工资:"<<<<);()("张三"男","教授)("李

28、四"男","校长)("王五"女"教授","院长)()<<;()<<;();)运行结果:三四五豌E17J 一二 y 空马三n :»» a»a 名名名sS 姓姓姓re:1毂cont inue=45职称:教授职务:院长工资r的的实验六、虚函数与多态 题目、动态联编和静态联编 任务分析并调试下列程序 程序代码:<>;() <<"()"<<<<; ()<<"()"<&

29、lt;<<; ()<<"()"<<<<;()<<"()"<<<<; ()<<"()"<<<<; () <<" ()"<<<<;();*;*;>();>();>();>();>();J 运行结果:Derived:F <float >3.14Derived:f <float>3 .14 Base:s<f1。

30、引*3,14 Derived =:h<float>3.14D«rived :h<floatJ3.14 Pees兮 any key to continue问题:(1)找出以上程序张是使用了重载和覆盖的函数。覆盖的有();和();重载的有()和();()写出程序的输出结果,并解释结果。结果已截图解释省去题目、动态联编和静态联编任务分析并调试下列程序:<>; ();() ;() *;J;();() *;J;() ;() *;J;();() *;J;(*);(<)>();()*;口 ();口 ();口 ();口 ();口 ();();<<

31、""<<<<运行结果:问题(1)指出抽象类;(2)指出纯虚函数,并说明它的作用。()是抽象类,作用是为同类的函数日工 同意的外部接口。()每个类的作用是什么,正程序的作用是什么?读者可以通过读程序就会明 白该程序的作用和每个类的作用,所以就不在这里做过多的解释。题目.图形类的设计任务定义抽象类;()任意图形的面积()任意图形的体积;要求(1)定义派生类(圆)、(矩形),并实现相应的纯虚函数。(2)定义,使得到通过一如下方式统一操作和图形。()();() ();() ();源程序代码:<>();();() ;() *;() ;注意着里即使不

32、用()属性也要对其进行一定函数实现J;();() *;() ;J;() ;() *;() ;J;();() *;() ;J;() *;() ;() ;J;()();() ();() (); ;()();()();()()();<<"圆的面积为:"<<()<<;<<"球的体积为:"<<()<<<<"矩形的面积为:"<<()<<;)运行结果:的的加:为 为为积 翡面 面#®78-5375720:50to continue题

33、目、运算符重载任务 定义一个用来保存时间(时、分、秒),通过重载操作符实现两个时间 的相加。要求 定义一个类,包括个数据成员:(时)、(分)、(秒),另外两个构造函数, 时间相加运算符重载函数输出函数().源程序代码:<><>;(J()>>>;() ;() ;() <<"现在时间为:"('');<<()<<<<":"<<()<<<<":"<<()<<<<;()

34、()();()();();运行结果:现在网间为二型二蹈二例 现在时间为=10=10:10 现在时间为:15:15:15Press any key to continue实验、模板与库题目、函数模板任务 编写一个函数模板实现个数据的最小值,具体要求为:能求不同的数据类 型的最小值,个数据由键盘输入。可以用、等类型的参数,并在函数进行测试。 源程序代码:<>J< >(* )(;(<)(<);)()(;<<"请输入的值:”;>>* ;* ;<<"请输入"<<<<"个

35、整型的数:”;(<)>><<"请输入"<<<<"个双精度的数:";(<)>>< <<<<<"个整型数中最小的是 :"<<()<<< <<<"个双精度数最小的是:"<<()<<)运行结果:题目、类模板22 / 29任务编写一个使用类模板对数组经型排序、查找和求元素的和的程序,并才用 相关的数据进行测试。源程序代码:<><&

36、gt;()()(*) ;VV”请输入“vvvv”个数据"(V) >>口VV”该数组的原始数据是:";(<)«««()(<)(<) (<) ; ;() (<)(); ;();(<) ; ;VV”请输入您想要建立的数组元素的个数;< > 0 <> 0;00;VV”请分别输入您所要查找的整型和双精度数:”>>>>;«() «"您所要查找的整型数在"«()«"位" VV"

37、;查找失败";«() «"您所要查找的双进度数在"«()«"位" VV"查找失败”VV;()«"整型数排序后的顺序为:"(V) «««;()«"双精度数排序后的顺序为:”(v)vv 口 vvvv;«"整型数组的和为:” VV()VV;VV”双精度数组的和为:"«()«; 运行结果:题目、标准模板库的应用任务声明一个整型的数组,使用标准模板库()中查找算法()惊醒数据的

38、查找, 然后排序算法()对数据进行升序和降序排序。源程序代码:<><><><>()(;()();< >();<>(,"");<<"数组的原始数据为:";()();<<"数组值相等的第一个元素为:";<<*()()<<()();<<<<"升序排列后:"()();()()<>();<<<<"降序排列后:”;()();<<

39、运行结果:实验八、的输入、输出流于文件操作题目、格式化输入输出任务以左对齐的方式输出整数,域宽为;打印有符号数和无符号数;将十进制整数以开头的十六进制格式输出;用前导*格式打印;域宽为;源程序代码:<><>();<<()<<<<<<<<<<<<<<<<<<()('*'); <<<<)运行结果:100200200c8 _ 911Press any key to continue题目、文本文件操作任务 编写程序,打开文件,向其中写入行字符,关闭文件。然后以读写方式打 开,输出文件。源程序代码:<><><>()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论