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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

11级C++综合习题含答案.docx

1、11级C+综合习题含答案一、 单项选择题1. 函数重载是指(A )。A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同2. 下列对引用的陈述中不正确的是(C )。 A. 每一个引用都是其所引用对象的别名,因此必须初始化B. 形式上针对引用的操作实际上作用于它所引用的对象C. 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D. 不需要单独为引用分配存储空间3. 关于封装,下列说法中不

2、正确的是(A )。A. 通过封装,对象的全部属性和操作结合在一起,形成一个整体B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C. 通过封装,每个对象都成为相对独立的实体D. 通过封装,对象的属性都是不可见的4. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C )。 A. px(a) B. pxa C. px-a D. px.a5. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A )。 A. int AA:a() B. int AA:a() C. AA:a()

3、D. AA:int a()6. 类的构造函数是在定义该类的一个(C )时被自动调用执行的。 A. 成员函数 B. 数据成员 C. 对象 D. 友元函数7.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C ) A.派生类的对象可以赋给基类的对象 B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类中的成员 D.派生类的对象的地址可以赋给指向基类的指针8.对于类定义 class A public: virtual void func1( ) void func2( ) ; class B:public A public: void func1( )coutc

4、lass B func 1end1; virtual void func2( )coutclass B func 2end1; ;下面正确的叙述是( C ) A、 A:func2( )和B:func1( )都是虚函数 、A:func2( )和B:func1( )都不是虚函数、 B:func1( )是虚函数,而A:func2( )不是虚函数 、B:func1( )不是虚函数,而A:func2( )是虚函数 9. 对于int *pa5;的描述,( D )是正确的。A、 pa是一个指向数组的指针,所指向的数组是5个int型元素;B、 pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;C

5、、 pa5表示某个数组的第5个元素的值;D、 pa是一个具有5个元素的指针数组,每个元素是一个int型指针;10. 下述静态数据成员的特征中,(D )是错误的。A、 说明静态数据成员时前边要加修饰符static;B、 静态数据成员要在类体外进行初始化;C、 引用静态数据成员时,要在静态数据成员名前加和作用域运算符;D、 静态数据成员不是所有对象所共用的。11. 以下关于函数模板叙述正确的是(C )。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型12. 下列

6、(B )的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值13. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(A )。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板14. 面向对象方法的多态性是指(C )。 A. 一个类可以派生出多个特殊类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的15. 在类作用域中能够直接使用该类的(D )成员名进行访问。 A. 私有 B.

7、公用 C. 保护 D. 任何 16. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(D )。 A. AB() B. AB(): a(0) C. AB(int aa=0) a=aa; D. AB(int aa) 17. 对于任一个类,用户所能定义的构造函数的个数至多为(D )。 A. 0 B. 1 C. 2 D. 任意个18. 对类对象成员的初始化是通过构造函数中给出的(D )实现的。 A. 函数体 B. 初始化表 C. 参数表 D. 初始化表或函数体19. 被非静态成员函数访问的类的数据成员(A )。 A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静

8、态数据成员 C. 只能是类的非静态数据成员 D. 只能是类的静态数据成员20. 引入友元的主要目的是为了(C )。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性21下面有关重载函数的描述中,正确的是( C )。A)重载函数必须具有不同的返回值类型 B)重载函数形参个数必须不同C)重载函数必须具有不同的形参表 D)重载函数名可以不同22假定MyCIass为一个类,那么下列的函数说明中,( D )为该类的析构函数。A)voidMyClass(); B)MyClass(int n);C)MyClass( ); D)MyClass( );23( A

9、)是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。 A)模板 B)类 C)对象 D)函数24下面关于静态成员函数的途术中错语的是( B )。A) 静态成员函数可以有返回值 B) this指针可以指向静态成员函数C) 静态成员函数可以具有指针参数 D) 静态成员函数可有具有返回值类型25定义类模板时要使用关键字( D )。A)private B) public C)delete D)template26下列是重载乘法运算符的函数原型声明,其中错误的是( A )。A)MyClass operator*(double,double); B)MyClass operator

10、*(double,MyClass);C)MyClass operator*(MyClass,double); D)MyClass operator*(MyClass,MyClass);27以下( C )成员函数表示纯虚函数。A)virtual int fun(int) B)void fun(int)=0 C)virtual void fun()=0 D)virtual void fun(int) 28关于纯虚函数,下列表述中正确的是( A )。A)纯虚函数的声明总是以=0结束 B)含有纯虚函数的类可以定义对象C)含有纯虚函数的类是抽象类 D)上面都是错误的 29( C )解决二义性问题。A)能

11、使用作用域分辨操作符 B) 只能使用虚基类C) 使用作用域分辨操作符或虚基类 D) 上面都不能30实现编译时的多态性要使用( A )。A)重载函数 B)析构函数 C)构造函数 D)虚函数31、C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是(B) A、面向过程B、面向对象C、安全性D、复用性 32、考虑函数原型void test(int a,intb=7,char=*),下面的函数调用中,属于不合法调用的是(C) A、test(5); B、test(5,8); C、test(6,#) D、test(0,0.*);33、下面有关重载函数的说法中正确的是

12、(C) A、重载函数必须具有不同的返回值类型;B、重载函数形参个数必须不同; C、重载函数必须有不同的形参列表 D、重载函数名可以不同;34、下列关于构造函数的描述中,错误的是(D) A、构造函数可以设置默认参数;B、构造函数在定义类对象时自动执行 C、构造函数可以是内联函数;D、构造函数不可以重载35. 关于对象概念的描述中,(A )是错误的。A、 对象就是C语言中的结构变量; B、 对象代表着正在创建的系统中的一个实体; C、 对象是一个状态和操作(或方法)的封装体; D、 对象之间的信息传递是通过消息进行的;36. 对于int *pa5;的描述,(D)是正确的。A、 pa是一个指向数组的

13、指针,所指向的数组是5个int型元素;B、 pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;C、 pa5表示某个数组的第5个元素的值;D、 pa是一个具有5个元素的指针数组,每个元素是一个int型指针;37. 下述静态数据成员的特征中,(D )是错误的。A、 说明静态数据成员时前边要加修饰符static;B、 静态数据成员要在类体外进行初始化;C、 引用静态数据成员时,要在静态数据成员名前加和作用域运算符;D、 静态数据成员不是所有对象所共用的。38. (A )是析构函数的特征。A、 一个类中只能定义一个析构函数; B、 析构函数与类名不同;C、 析构函数的定义只能在类体内;

14、D、 析构函数可以有一个或多个参数。39. 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,(C )是正确的。A、 A1.p=5; B、 A1-p=5;C、 A1.*p=5; D、 *A1.p=5;40. 派生类的对象对它的基类成员中(C )是可以访问的。A、 公有继承的公有成员; B、 公有继承的私有成员;C、 公有继承的保护成员;D、 私有继承的公有成员。41.下列表示引用的方法中,正确的是(A)。(A) int m=10; int &x=m; (B) int m=10; int &y=10; (C) int m=10; int &z; (D) int m

15、=10; ifloat &t=&m;42.下列标识符中,( C )是文件作用域。(A) 函数形参 (B)语句标号(C) 外部静态标识符 (D)自动类标识符43.在程序中,函数声明语句正确位置是(D )(A) 随便任何位置(B) 不包含在另一函数中的任何位置。(C) 该函数使用前的任何位置(D)该函数使用前的任何位置,但不包含在另一函数中44.下面有关函数重载的程序段正确的是(A ) 。(A)int fun(int x, int y); int fun(float x, float y);(B) int fun(int x, int y); int fun(int a, int b);(C) f

16、loat fun(int x, int y); int fun(int x, int y);( D) int main(); void main();45.返回类型就是函数返回结果值的数据类型。返回类型可以是(C )(A) 除数组和类以外的任意数据类型(B) 除数组和结构类型以外的任意数据类型(C) 除数组类型以外的任意数据类型(D) 除指针和引用类型以外的任意数据类型46.下面关于带默认形式参数值的函数声明正确的是(C )。(A) int fun(int a=1, int b, int c); (B) int fun(int a=1, int b=2, int c);(C) int fun(

17、int a, int b=2, int c=3); (D) int fun(int a=1, int b, int c=3);47.引入内联函数的主要目的是(B )(A) 缩短程序代码,少占用内存空间(B) 既可以保证程序的可读性,又能提高程序的运行效率(C) 占用内存空间少,执行速度快(D) 使程序的结构比较清晰48.有关构造函数的说法不正确的是(D )(A) 构造函数名字和类的名字一样(B) 构造函数说明类变量时自动执行(C) 构造函数无任何函数类型(D)构造函数有且仅有一个49.通常拷贝初始化构造函数的参数是(C )。(A) 某个对象名 (B) 某个对象的成员名(C) 某个对象的引用名

18、(D) 某个对象的指针名50.当保护继承时,基类的(B )在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。(A) 任何成员 (B)公有成员和保护成员(C) 保护成员和私有成员 (D)私有成员51.当将一个类S定义为另一个类A的友元类时,类S的所有成员函数(A )。(A) 可以直接访问类A的所有成员 (B)只能访问类A的公有成员(C) 不能访问类A的私有成员 (D)具有类S中非继承的成员函数相同的访问权限52.设置虚基类的目的是(B)(A) 简化程序(B) 消除二义性。(C) 提高运行效率(D)减少目标代码53.派生类的对象对它的基类成员中(A )是可以访问的。(A)公有继承的公有

19、成员 (B)公有继承的私有成员(C)公有继承的保护成员 (D)私有继承的公有成员54.关于纯虚函数和抽象类的描述中,下面描述错误的是(C )。(A)纯虚函数是一种特殊的函数,它没有具体的实现(B)抽象类是指具有纯虚函数的类(C)一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类(D)抽象类只能作为基类使用,其纯虚函数的实现由派生类给出55. ( C)是一个在基类中说明的虚函数,它在该类中没有定义,但要求任何派生类都必须定义自己的版本。(A)虚析构函数 (B)虚构造函数(C)纯虚函数 (D)静态成员函数二、填空题1 当一个成员函数被调用时,该成员函数的( 函数指针 ) 指向调用它的对象。2

20、 在公有继承的情况下,基类数据成员在派生类中的访问权限 ( 不变 ) 。3 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 ( 共享 ) 。4 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 ( 析构函数没有参数 ) 、 析构函数可以定义为虚函数 。5 C+中没有输入输出语句,输入输出是通过输入输出库实现的, 写出一条打印整型变量n的输出语句:( coutn);6 面向对象的程序设计有四大特征,它们是抽象、封装、( 继承 )、( 多态 )。7动态联编要满足两个条件,它们是 ( 被调用的成员函数是虚函数 )

21、、 ( 用指针或引用调用虚函数 ) 。8 在C+类中,有一种不能定义对象的类,这样的类只能被继承,称之为 ( 抽象类 ) ,定义该类至少具有一个( 纯虚函数 ) 。9 在C+类中,const关键字可以修饰对象和成员函数,const对象不能( 赋值) ,const成员函数不能 (修改成员数据 ) 。10 举出C+中两种代码复用的方式: (继承) 、 (复用 ) 。11对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用 ( 基类)的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。12声明类模板应使用关键字( template )。13重载的关系运算符和逻

22、辑运算符的返回类型应当是( bool型 )。14在面向对象方法中,类的实例称为( 对象 )。15在类的对象被释放时,( 析构函数 )函数会被自动调用。16 当一个成员函数被调用时,该成员函数的( 函数指针) 指向调用它的对象。17 在公有继承的情况下,基类数据成员在派生类中的访问权限 ( 不变 ) 。18 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 ( 共享) 。19 构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个、 ( 析构函数没有参数 ) 、 析构函数可以定义为虚函数 。20 C+中没有输入输出语句

23、,输入输出是通过输入输出库实现的, 写出一条打印整型变量n的输出语句:( coutn );三、综合题1编程题:设计一个立方体类Box,它能计算并输出立方体的体积和表面积。2 :()下面程序的打印结果是_1251121_. #incude int f(int); int main() int i; for(i=0;i5;i+) coutF(I)0;i- -) k + = i; return k; (2)在用class定义一个类时,数据成员和成员函数的默认访问权限是 _private_. (3)含有纯虚函数的类称为_抽象类_. (4)已知intDBL(int n)return n + n;和lon

24、gDBL(long n)return n+n; 是一个函数模板的两个实例,则该函数模板的定义_ templateT DBL(T n)return n+n;_. (5)在下面程序的横线处填上适当的语句,使该程序执行结果为10. #include class MyClass public: MyClass(int a)x = a; _MyClass(int x)this.x=x;int GetNum()return x;_ /取x值 private int x; ; int main() MyClass my(10); coutMY.GETNUM()ENDL; return 0; 3编程实现抽象类

25、Employee,派生类Manger和HourlyWorker,Employee有数据成员姓名name和工号ID,Manger有数据成员sal,代表经理的月工资,HourlyWorker有wage和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名name和工号ID。(18分)4设计一个程序。定义一个圆类,有数据成员半径radis(半径),计算圆的面积和周长,写出主函数测试你编写的类。(12分)5定义一个处理日期的类TDate,它有3个私有数据成员:Month,Day,Y

26、ear和若干个公有成员函数,并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期;定义一个非静态成员函数设置日期;可使用不同的构造函数来创建不同的对象。6 回答下面问题。下面列出了由三个文件main.cpp、MyClass.h和MyClass.cpp组成的一个程序。文件main.cpp中实现了主函数;文件MyClass.h中定义了类MyClass;文件MyClass.cpp中实现了类MyClass的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。要求: a.将成员变量定义为私有的;b.不要增加题中没有用到的类成员。 /*/文件main.cpp#include #include MyClass.hvoid main()MyClass obj(3.3); cout obj.GetMember() endl; obj.SetMember(5.6);cout obj.GetMember() endl; /*/

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

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