面向对象的程序设计第1阶段练习题答案 江南大学2022年秋机考_第1页
面向对象的程序设计第1阶段练习题答案 江南大学2022年秋机考_第2页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第17页/共NUMPAGES\*ARABIC17页江南大学网络教育第一阶段练习题答案,答案在最后一页。考试科目:《面向对象的程序设计》第章至第章(总分100分)__________学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题(共9题,总分值9分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。)1.友元类的声明方法是()。(1分)A.friendclass<类名>;B.youyuanclass<类名>;C.classfriend<类名>;D.friendsclass<类名>;2.在类定义的外部,可以被任意函数访问的成员有()。(1分)A.所有类成员B.private或protected的类成员C.public的类成员D.public或private的类成员3.在面向对象程序设计中,类通过()与外界发生关系。(1分)A.对象B.类C.消息D.接口4.下面选项中,()不是类的成员函数。(1分)A.构造函数B.析构函数C.友元函数D.拷贝构造函数5.对new运算符的下列描述中,()是错误的。(1分)A.它可以动态创建对象和对象数组B.用它创建对象数组时必须指定初始值C.用它创建对象时要调用构造函数D.用它创建的对象数组可以使用运算符delete来一次释放6.关于C++与C语言的关系的描述中,()是错误的。(1分)A.C语言是C++的一个子集B.C语言与C++是兼容的C.C++对C语言进行了一些改进D.C++和C语言都是面向对象的7.面向对象程序设计着重于()的设计。(1分)A.对象B.类C.算法D.数据8.关于this指针的说法正确的是()。(1分)A.this指针必须显式说明B.当创建一个对象后,this指针就指向该对象C.成员函数拥有this指针D.静态成员函数拥有this指针。9.在整型指针变量p2、p3的定义中,错误的是()(1分)A.intp1,*p2,p3;B.int*p2,p1,*p3;C.intp1,*p2=&p1,*p3;D.int*p2,p1,*p3=&p1;二多选题(共2题,总分值2分,下列选项中至少有2个或2个以上选项符合题目要求,请在答题卡上正确填涂。)10.下面对析构函数的正确描述是()。(1分)A.系统可以提供默认的析构函数B.析构函数必须由用户定义C.析构函数没有参数D.析构函数可以设置默认参数11.下面说法正确的是()。(1分)A.对象是计算机内存中的一块区域,它可以存放代码和数据B.对象实际是功能相对独立的一段程序C.各个对象间的数据可以共享是对象的一大优点D.在面向对象的程序中,对象之间只能通过消息相互通信三判断题(共8题,总分值8分正确的填涂“A”,错误的填涂“B”。)12.C++程序中,不得使用没有定义或说明的变量。(1分)(

)13.函数可设置默认参数,但不允许将一个函数的所有参数都设置为默认参数。(1分)(

)14.函数可以没有参数,也可以没有返回值。(1分)(

)15.面向对象程序设计中的消息应该包含“如何做”的信息。(1分)(

)16.引用被创建时可以用任意变量进行初始化。(1分)(

)17.类的设计和类的继承机制实现了软件模块的可重用性。(1分)(

)18.在高级程序设计语言中,一般用类来实现对象,类是具有相同属性和行为的一组对象的集合,它是创建对象的模板。(1分)(

)19.学习C++语言是学习面向对象的程序设计方法的唯一途径。(1分)(

)四名词解释题(共4题,总分值12分)20.引用(3分)21.消息(3分)22.封装(3分)23.重载函数(3分)五填空题(共13题,总分值13分)24.C++程序的内存格局通常分为4个区:_________________、_________________、_________________和_________________。(1分)25.目前有_________________和_________________两种重要的程序设计方法。(1分)26.对于任意一个类,析构函数的个数最多为_________________个。(1分)27.C++有_________________和_________________两种参数传递机制。(1分)28.使用C++风格的输入输出,在程序中必须包含头文件“_________________”。(1分)29.在结构化程序设计方法中,程序可表示为_________________;而面向对象的程序设计方法,程序可表示为_________________。(1分)30.静态数据成员和静态成员函数可由_________________的函数访问。(1分)31._________________是预定义的标准输出流对象,_________________是输出操作符,也称插入运算符。(1分)32.面向对象程序设计方法具有_________________、_________________、_________________和_________________等特点。(1分)33.创建一个类的对象时,系统自动调用_________________;撤销对象时,系统自动调用_________________。(1分)34.在程序运行时,通过为对象分配内存来创建对象。在创建对象时,使用类作为_________________,故称对象为类的_________________。(1分)35.设MClass是一个类,dd是它的一个对象,pp是指向dd的指针,cc是dd的引用,则对成员的访问,对象dd可以通过_________________进行,指针pp可以通过_________________进行,引用cc可以通过_________________进行。(1分)36.友元的正确使用能提高程序的_________________,但破坏了类的封装性和数据的隐蔽性。(1分)六简答题(共8题,总分值31分)37.类的实例化是指创建类的对象还是定义类?(3分)38.函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗?(4分)39.什么叫做拷贝构造函数?拷贝构造函数何时被调用?(4分)40.什么是结构化程序设计方法?它有哪些优点和缺点?(4分)41.比较值调用和引用调用的相同点与不同点。(4分)42.结构化程序设计方法与面向对象程序设计方法在对待数据结构和算法关系上有什么不同?(4分)43.名字空间的用途是什么?(4分)44.类与对象有什么关系?(4分)七综合题(共5题,总分值25分)45.将例3.10中的Whole类如下修改,其他部分不变,写出输出结果。classWhole{public:Whole(inti);//Whole的有参构造函数Whole(){};//Whole的无参构造函数~Whole();//Whole的析构函数private:Partp1;//子对象1Partp2;//子对象2Partp3;//子对象3};Whole::Whole(inti):p2(i),p1(){cout<<"ConstructorofWhole"<<endl;}Whole∷~Whole(){cout<<"DestructorofWhole"<<endl;}(5分)46.#include<iostream>usingnamespacestd;classTest{private:intnum;public:Test();//默认构造函数Test(intn);//带一个参数构造函数};Test∷Test(){cout<<"Initdefa"<<endl;num=0;}Test∷Test(intn){cout<<"Init"<<""<<n<<endl;num=n;}intmain(){Testx[2];//语句1Testy(15);//语句2return0;}(5分)47.#include<iostream>usingnamespacestd;intmain(){intnum=50;int&ref=num;ref=ref+10;cout<<"num="<<num<<endl;num=num+40;cout<<"ref="<<ref<<endl;return0;}(5分)48.写出一个完整的C++程序,使用系统函数pow(x,y)计算xy的值,注意包含头文件cmath。(5分)49.声明一个Circle类,有数据成员radius(半径)、成员函数area(),计算圆的面积,构造一个Circle的对象进行测试。(5分)

一单选题(共9题,总分值9分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。)1.本题正确的答案选项为:A解析过程:2.本题正确的答案选项为:C解析过程:类是一种用户自定义的数据类型,类中成员均具有一种访问权限。公有成员定义了类的外部接口。私有成员是被隐藏的数据,只有该类的成员函数或友元函数才可以引用它。保护成员具有公有成员和私有成员的双重性质,可以被该类或派生类的成员函数或友元函数引用。可见在类定义的外部,可以被任意函数访问的成员是public的类成员。3.本题正确的答案选项为:D解析过程:4.本题正确的答案选项为:C解析过程:5.本题正确的答案选项为:B解析过程:使用运算符new创建对象数组的格式如下:new<类型说明符>[<算术表达式>]其中,<算术表达式>给出数组的大小,后面不能再跟构造函数参数,所以用它创建对象数组时不能指定初始值。6.本题正确的答案选项为:D解析过程:C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。7.本题正确的答案选项为:B解析过程:8.本题正确的答案选项为:B解析过程:this指针是由C++编译器自动产生且较常用的一个隐含对象指针,它不能被显式声明。当创建一个对象时,this指针就初始化指向该对象。但只有非静态成员函数才拥有this指针,并通过该指针来处理对象。9.本题正确的答案选项为:A解析过程:指针定义的具体格式如下所示:<类型>*<指针名1>,*<指针名2>,……;二多选题(共2题,总分值2分,下列选项中至少有2个或2个以上选项符合题目要求,请在答题卡上正确填涂。)10.本题正确的答案选项为:A,C解析过程:析构函数的作用是在对象消失时执行一项清理任务。如果一个类中没有定义析构函数,系统将自动生成一个默认析构函数。析构函数没有参数,当然不可能设置默认参数。11.本题正确的答案选项为:A,D解析过程:对象是计算机内存中的一块区域。在对象中,不但存有数据,而且存有代码,使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系,但它们之间只能通过消息进行通信。三判断题(共8题,总分值8分正确的填涂“A”,错误的填涂“B”。)12.本题正确的答案选项为:T解析过程:13.本题正确的答案选项为:F解析过程:函数可设置默认参数,且允许将一个函数的所有参数都设置为默认参数。14.本题正确的答案选项为:T解析过程:15.本题正确的答案选项为:F解析过程:消息是面向对象程序设计用来描述对象之间通信的机制。向对象“发送消息”只需告诉对象做什么,对象根据这个消息决定如何做。16.本题正确的答案选项为:F解析过程:17.本题正确的答案选项为:T解析过程:18.本题正确的答案选项为:T解析过程:19.本题正确的答案选项为:F解析过程:程序设计方法是独立于具体程序设计语言的一种技术,学习C++语言是学习面向对象程序设计方法的重要途径之一。四名词解释题(共4题,总分值12分)20.本题正确的答案选项为:所谓引用就是给对象取一个别名,使用该别名可以存取该对象。换句话说是使新对象和原对象共用一个地址。解析过程:21.本题正确的答案选项为:消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。解析过程:22.本题正确的答案选项为:面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。解析过程:23.本题正确的答案选项为:重载函数指在同一个作用域内名字相同而参数不同的函数。重载函数通常用来对具有相似行为而数据类型或数据个数不同的操作提供一个通用的名称。解析过程:五填空题(共13题,总分值13分)24.本题正确的答案选项为:数据区,代码区,栈区,堆区解析过程:25.本题正确的答案选项为:面向过程的结构化程序设计方法,面向对象的程序设计方法解析过程:26.本题正确的答案选项为:1解析过程:27.本题正确的答案选项为:值传递,引用传递解析过程:28.本题正确的答案选项为:iostream解析过程:29.本题正确的答案选项为:程序=数据结构+算法,程序=对象+消息解析过程:30.本题正确的答案选项为:任意访问权限许可解析过程:31.本题正确的答案选项为:cout,<<解析过程:32.本题正确的答案选项为:抽象性,封装性,继承性,多态性解析过程:33.本题正确的答案选项为:构造函数,析构函数解析过程:34.本题正确的答案选项为:样板,实例解析过程:35.本题正确的答案选项为:.,->,.解析过程:36.本题正确的答案选项为:效率解析过程:六简答题(共8题,总分值31分)37.本题正确的答案选项为:指创建类的对象。解析过程:38.本题正确的答案选项为:不必一致。所有的参数是根据位置和类型而不是名字来区分的。解析过程:39.本题正确的答案选项为:拷贝构造函数是一种特殊的构造函数,它的作用是用一个已经存在的对象去初始化另一个对象。为了保证所引用的对象不被修改,通常把引用参数声明为const参数。在以下3种情况下,拷贝构造函数都会被自动调用:◆当用类的一个对象去初始化该类的另一个对象时;◆当函数的形参是类的对象,进行形参和实参结合时;◆当函数的返回值是类的对象,函数执行完成返回调用者时。解析过程:40.本题正确的答案选项为:结构化程序设计方法着眼于系统要实现的功能,从系统的输入输出出发,分析系统要做哪些事情,进而考虑如何做这些事情,自顶向下地对系统的功能进行分解,来建立系统的功能结构和相应的程序模块结构,有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。随着程序规模与复杂性的增长,这种面向过程的结构化程序设计方法存在明显的不足之处。首先是数据安全性问题。由于数据被每个模块所共用,因此是不安全的,一旦出错,很难查明原因。其次是可维护性及可重用性差。它把数据结构和算法分离为相互独立的实体,一旦数据结构需要改变时,常常要涉及整个程序,修改工作量极大并容易产生新的错误。每一种相对于老问题的新方法都要带来额外的开销。另外,图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。解析过程:41.本题正确的答案选项为:在值调用机制中,作为实参的表达式的值被复制到由对应的形参名所标识的一个对象中,作为形参的初始值。函数体对形参的访问、修改都是在这个标识对象上操作的,与实参无关,即数据的传递是单向的。使用引用作函数的形参时,调用函数的实参要用变量名。实参传递给形参,相当于在被调用函数中使用了实参的别名。于是,在被调用函数中对形参的操作实质是对实参的直接操作,即数据的传递是双向的。解析过程:42.本题正确的答案选项为:结构化程序设计方法中,把数据结构和算法分离为相互独立的实体;而在面向对象程序设计中,数据结构和算法封装在一起,结合成一个独立的单位,即对象,并尽可能隐蔽对象的内部细节。对象的私有属性只能由这个对象的行为来读取和修改,与外部的联系通过公有行为充当外部接口。解析过程:43.本题正确的答案选项为:名字空间用来防止命名的冲突。解析过程:44.本题正确的答案选项为:类是一种用户自己定义的数据类型,和其他数据类型不同的是,组成这种类型的不仅可以有数据,而且可以有对数据进行操作的函数。程序员可以使用这个新类型在程序中声明新的变量,具有类类型的变量称为对象。创建对象时,类被用做样板,对象称为类的实例。解析过程:七综合题(共5题,总分值25分)45.本题正确的答案选项为:【输出结果】DefaultconstructorofPartConstructorofPart,3DefaultconstructorofPartConstructorofWholeDestructorofWholeDestructorofPart,0DestructorofPart,3DestructorofPart,0解析过程:程序的Whole类中出现了类Part的3个对象p1、p2和p3,作为该类的数据成员,则p1、p2和p3被称为子对象。当建立Whole类的对象w时,子对象p1、p2和p3被建立,相应的构造函数被执行。由于p1在Whole类中先说明,所以先执行它所使用的构造函数,即类Part的默认构造函数,接着p2执行它所使用的有参构造函数,紧接着初始化p3,由于Whole类构造函数的成员初始化列表中没有子对象p3进行初始化的选项,所以执行类Part的默认构造函数,当所有子对象被构造完之后,对象w的构造函数才被执行,从而得到前4行输出结果,而后4行是执行相应析构函数的输出结果。46.本题正确的答案选项为:【输出结果】InitdefaInitdefaInit15解析过程:①程序声明了2个对象x和y,类中有2个构造函数。②程序首先执行语句1,创建对象x,调用默认构造函数。由于对象x是对象数组,每个数组元素被创建时都要调用构造函数,所以默认构造函数被调用了2次,输出第1、2行结果。程序接着执行语句2,创建对象y,调用带一个参数的构造函数,输出第3行结果。47.本

温馨提示

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

评论

0/150

提交评论