c++期末考试选择题整理.docx

上传人:b****1 文档编号:15231802 上传时间:2023-07-02 格式:DOCX 页数:29 大小:27.57KB
下载 相关 举报
c++期末考试选择题整理.docx_第1页
第1页 / 共29页
c++期末考试选择题整理.docx_第2页
第2页 / 共29页
c++期末考试选择题整理.docx_第3页
第3页 / 共29页
c++期末考试选择题整理.docx_第4页
第4页 / 共29页
c++期末考试选择题整理.docx_第5页
第5页 / 共29页
c++期末考试选择题整理.docx_第6页
第6页 / 共29页
c++期末考试选择题整理.docx_第7页
第7页 / 共29页
c++期末考试选择题整理.docx_第8页
第8页 / 共29页
c++期末考试选择题整理.docx_第9页
第9页 / 共29页
c++期末考试选择题整理.docx_第10页
第10页 / 共29页
c++期末考试选择题整理.docx_第11页
第11页 / 共29页
c++期末考试选择题整理.docx_第12页
第12页 / 共29页
c++期末考试选择题整理.docx_第13页
第13页 / 共29页
c++期末考试选择题整理.docx_第14页
第14页 / 共29页
c++期末考试选择题整理.docx_第15页
第15页 / 共29页
c++期末考试选择题整理.docx_第16页
第16页 / 共29页
c++期末考试选择题整理.docx_第17页
第17页 / 共29页
c++期末考试选择题整理.docx_第18页
第18页 / 共29页
c++期末考试选择题整理.docx_第19页
第19页 / 共29页
c++期末考试选择题整理.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++期末考试选择题整理.docx

《c++期末考试选择题整理.docx》由会员分享,可在线阅读,更多相关《c++期末考试选择题整理.docx(29页珍藏版)》请在冰点文库上搜索。

c++期末考试选择题整理.docx

c++期末考试选择题整理

C++程序设计

选择题部分

A

ASCII3

变量的基本要素3

标识符3

const4

c++与c语言的关系4

c向c++的转变4

c与c++的共性4

抽象类5

冲突解决5

成员函数5

拷贝构造函数6

存储字节6

代码运行流程6

多态6

堆运算符7

delete运算符7

动态联编7

for循环8

封装8

返回类型8

构造函数9

函数重载10

继承10

类的概念11

类(函数)模版11

面向对象12

内存分配12

内联函数12

new运算符13

派生类13

static成员14

数组15

实参15

私有数据成员16

输入输出16

this指针16

虚基类17

析构函数17

虚函数18

形参18

友元函数19

运算符重载20

预处理20

指针变量20

指针运算22

注释22

作用域运算符22

ASCII

1、‘A’的ASCII码为65,n为int型,执行n=‘A’+‘6’-‘3’;后,n的值为B。

A)‘D’B)68C)不确定的值D)编译出错

变量的基本要素

1、在C++中,变量的三个基本要素是指:

变量名、变量类型和变量值。

标识符

1、可用作C++语言用户标识符的一组标识符是(B)。

A.voiddefine+WORDB.a3_b3_123YN

C.for-abcCaseD.2aDOsizeof

2、按照标识符的要求,(A)符号不能组成标识符。

A.连接符B.下划线C.大小写字母D.数字字符

3、下列变量名中,(A)是合法的。

ACHINABbyte-sizeCdoubleDA+a

const

1、在C++函数的形参前加const关键字,是为了提高函数的_______C

A.数据封装性B.可理解性C.可维护性D.可重用性

c++与c语言的关系

1、关于C++与C语言的关系的描述中,(D)是错误的。

A.C语言是C++的一个子集;B.C语言与C++是兼容的;

C.C++对C语言进行了一些改进;D.C++和C语言都是面向对象的

c向c++的转变

1、C++对C语言作了很多改进,下列描述中(D )使得C语言发生了质变,从面向过程变成了面向对象。

A、增加了一些新的运算符;B、允许函数重载,并允许设置缺省参数;

C、规定函数说明必须用原型;D、引进了类和对象的概念;

c与c++的共性

1、下列特性中,C与C++共有的是(D)

A、继承B、封装C、多态性D、函数定义不能嵌套

2、对于C/C++语言的函数,下列叙述中正确的是(A)。

A、函数的定义不能嵌套,但函数调用可以嵌套

B、函数的定义可以嵌套,但函数调用不能嵌套

C、函数的定义和调用都不能嵌套

D、函数的定义和调用都可以嵌套

3、关于C++与C语言关系的描述中,(D)是错误的。

A、C语言是C++语言的一个子集B、C语言与C++语言是兼容的

C、C++语言对C语言进行了一些改进D、C++语言和C语言都是面向对象的

抽象类

1、下列描述中,(D)是抽象类的特性。

A、可以说明虚函数;B、可以进行构造函数重载;

C、可以定义友元函数;D、不能说明其对象。

2、关于纯虚函数和抽象类的描述中,(C)是错误的。

A、纯虚函数是一种特殊的虚函数,它没有具体的实现;

B、抽象类是指具有纯虚函数的类;

C、一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类;

D、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。

冲突解决

1、C++中解决命名冲突的机制是:

D

(A)虚基类(B)虚函数(C)函数重载(D)名字空间

成员函数

1、下列不是描述类的成员函数的是(C)

A、构造函数B、析构函数C、友元函数D、拷贝构造函数

2、关于成员函数特征的下述描述中,(A)是错误的。

A、成员函数一定是内联函数;(注:

可以是内联函数,也可以是外联函数)

B、成员函数可以重载;

C、成员函数可以设臵参数的缺省值;

D、成员函数可以是静态的。

3、下面关于类的成员函数描述不正确的是:

A

(A)静态成员函数内可以直接访问类的非静态成员数据

(B)静态成员函数内可以直接访问类的静态成员数据

(C)非静态成员函数可以直接访问类的非静态成员数据

(D)非静态成员函数可以直接访问类的静态成员数据(全局成员)

拷贝构造函数

1、通常,拷贝构造函数的参数是(C)

A.某个对象名B.某个对象的成员名

C.某个对象的引用名D.某个对象的指针名

2、假定AB为一个类,则(C)为该类的拷贝构造函数的原型说明。

A.AB(ABx);B.AB(intx);C.AB(AB&x);D.voidAB(AB&x);

3、类MyA的拷贝初始化构造函数是()

A.MyA()

B.MyA(MyA*)

C.MyA(MyA&)

D.MyA(MyA)

答案:

C

解析:

复制即拷贝构造函数使用对象的引用作形参,防止临时产生一个对象,A无参构造函

数,B是指针作为形参,D项是对象,所以选择C项。

存储字节

1、存储以下数据,占用存储字节最多的是(D)。

A.0B.‘0’C.“0”D.0.0

代码运行流程

1、C++程序从上机到得到结果的几个操作步骤依次是(B)。

A.编译、编辑、连接、运行B.编辑、编译、连接、运行

C.编译、运行、编辑、连接D.编辑、运行、编辑、连接

多态

1、实现运行时的多态性用(D)

A、重载函数B、构造函数C、析构函数D、虚函数

2、所谓多态性是指()

A.不同的对象调用不同名称的函数

B.不同的对象调用相同名称的函数

C.一个对象调用不同名称的函数

D.一个对象调用不同名称的对象

答案:

B

解析:

多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数

的不同调用不同的同名函数;动态多态性是指不同对象调用同名函数时,由于对象不同调用不同

的同名函数。

多态性肯定具有相同的函数名,所以选择B项。

3、有关多态性说法不正确的是()

A.C++语言的多态性分为编译时的多态性和运行时的多态性

B.编译时的多态性可通过函数重载实现

C.运行时的多态性可通过模板和虚函数实现

D.实现运行时多态性的机制称为动态多态性

答案:

C

解析:

多态性分为静态的和动态的。

静态通过函数的重载来实现,动态是通过基类指针或

基类引用和虚函数来实现的。

所以错误的是C项。

堆运算符

1、关于堆运算符的下列描述中,(C)是错误的。

A、使用堆运算符可以动态建立或删除对象;

B、new运算符创建对象时要调用构造函数;

C、可以在使用new[]创建数组时,为每个数组元素指定初始值;

D、delete运算符可以作用于空指针;

delete运算符

1、关于delete运算符的下列描述中,(C)是错的。

A、它必须用于new返回的指针;

B、它也适用于空指针;

C、对一个指针可以使用多次该运算符;

D、指针名前只用一对方括号符,不管所删除数组的维数。

动态联编

1、关于动态联编的下列描述中,(D)是错误的。

A、动态联编是以虚函数为基础的;

B、动态联编是在运行时确定所调用的函数代码的;

C、动态联编调用函数操作是指向对象的指针或对象引用;

D、动态联编是在编译时确定操作函数的

for循环

1、对for(表达式1;;表达式3)可理解为B。

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

封装

1、关于封装,下列说法中不正确的是(D)。

A.通过封装,对象的全部属性和操作结合在一起,形成一个整体

B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)

C.通过封装,每个对象都成为相对独立的实体

D.通过封装,对象的属性都是不可见的

2、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(A)。

A.类B.对象C.函数体D.数据块

3、在C++中实现封装是借助于(B)

A、枚举B、类C、数组D、函数

返回类型

1、决定C++语言中函数的返回值类型的是()

A.return语句中的表达式类型

B.调用该函数时系统随机产生的类型

C.调用该函数时的主调用函数类型

D.在定义该函数时所指定的数据类型

答案:

D

构造函数

1、下列关于构造函数的论述中,不正确的是_______C

A.构造函数的函数名与类名相同B.构造函数可以设置默认参数

C.构造函数的返回类型缺省为int型D.构造函数可以重载

2、下面有关构造函数的描述中,正确的是(B)。

A.构造函数可以带有返回值B.构造函数的名字与类名完全相同

C.构造函数必须带有参数D.构造函数必须定义,不能缺省

3、构造函数是在(B)时被执行的。

A.程序编译B.创建对象C.创建类D.程序装入内存

4、假定AB为一个类,则执行ABx;语句时将自动调用该类的(B)

A、有参构造函数B、无参构造函数C、拷贝构造函数D、赋值重载函数

5、构造函数不具备的特征的是(D)

A、构造函数的函数名与类名相同B、构造函数可以重载

C、构造函数可以设臵默认参数D、构造函数必须指定类型说明

6、具有转换函数功能的构造函数,应该是(B)。

A、不带参数的构造函数;B、带有一个参数的构造函数;

C、带有两个以上参数的构造函数;D、缺省构造函数。

7、假定AB为一个类,则执行“ABa

(2),b[3],*p[4];”语句时调用该类构造函数的次数

为()

A.3

B.4

C.5

D.9

答案:

B

解析:

a

(2)调用1次带参数的构造函数,b[3]调用3次无参数的构造函数,指针没有给它

分配空间,没有调用构造函数。

所以共调用构造函数的次数为4。

8、假定一个类的构造函数为“A(inti=4,intj=0){a=i;b=j;}”,则执行“Ax

(1);”语

句后,x.a和x.b的值分别为()

A.1和0

B.1和4

C.4和0

D.4和1

答案:

A

解析:

带默认的构造函数,对应实参没有值时就采用形参值。

调用构造函数时,i=1,不采

用默认值,而只有一个参数,j采用默认值0即j=0,因此a=1,b=0,选择A项。

函数重载

1、函数重载的目的是________B

A.实现共享B.使用方便,提高可读性C.提高速度D.减少空间

2、不能作为函数重载判断的依据的是(B)

A.返回类型B.constC.参数个数D.参数类型

3、系统在调用重载函数时,往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是(D)

A、参数个数B、参数的类型C、函数名称D、函数的类型

4、下列对重载函数的描述中,(A)是错误的。

A、重载函数中不允许使用缺省参数;//注:

可以使用,但要求不存在二义性。

B、重载函数中编译系统根据参数表进行选择;

C、不要使用重载函数来描述毫无相干的函数;

D、构造函数重载将会给初始化带来多种方式。

5、下列有关重载函数的说法中正确的是()

A.重载函数必须具有不同的返回值类型

B.重载函数参数个数必须相同

C.重载函数必须有不同的形参列表

D.重载函数名可以不同

答案:

C

解析:

函数的重载必须函数名相同而形参类型或个数不同,与返回值无关。

继承

1、在C++中继承方式有几中(C)

A.1B.2C.3D.4

2、继承的情况下,基类成员在派生类中的访问权限(A)

A、受限制B、保持不变C、受保护D、不受保护

3、C++类体系中,不能被派生类继承的有(B)

A、转换函数B、构造函数C、虚函数D、静态成员函数

4、在C++中,数据封装要解决的问题是(D)

A、数据规范化排列B、数据高速转换

C、避免数据丢失D、切断了不同模块之间的数据的非法使用

5、继承机制的作用是(C)

A、信息隐藏B、数据封装C、定义新类D、数据抽象

6、关于多继承二义性的描述中,(C)是错的。

A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性;

B、解决二义性的最常用的方法是对成员名的限定法;

C、基类和派生类中同时出现的同名函数,也存在二义性问题;

D、一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。

类的概念

1、在下列关于类概念的各描述中,A是错误的。

A)类就是C语言中的结构体类型;

B)类是具有共同行为的若干对象的统一描述体;

C)类是创建对象的样板;

D)类是抽象数据类型的实现。

2、类是逻辑上相关的函数与数据的封装。

特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。

3、下面有关类说法不正确的是(C)

A、一个类可以有多个构造函数B、一个类只有一个析构函数

C、析构函数需要指定参数D、在一个类中可以说明具有类类型的数据成员

类(函数)模版

1、类模板的使用实际上是将类模板实例化成一个具体的(A)

A、类B、对象C、函数D、模板类

2、实现两个相同类型数加法的函数模板的声明是()

A.add(Tx,Ty)

B.Tadd(x,y)

C.Tadd(Tx,y)

D.Tadd(Tx,Ty)

答案:

D

解析:

实现两个相同类型数加法结果应该和操作数具有相同类型。

进行加法运算后结果也

是和参数具有相同类型,需要返回值。

A无返回值时要用void,B形参无类型,C形参y没有类型

,所以选择D项。

面向对象

1、______不是属于面向对象程序设计的特性B

A.抽象性B.数据相关性C.多态性D.继承性

内存分配

1、动态内存分配的主要目的是_______B

A.使程序按动态联编方式运行B.正确合理的使用内存

C.提高程序的运行速度D.提高程序的可维护性

内联函数

1、一个函数功能不太复杂,但要求被频繁调用,选用(A)

A、内联函数B、重载函数C、递归函数D、嵌套函数

2、在(C)情况下适宜采用inline定义内联函数。

A、函数体含有循环语句B、函数体含有递归语句

C、函数代码少、频繁调用D、函数代码多、不常调用

3、一个函数功能不太复杂,但要求被频繁调用,则应把它定义为()

A.内联函数

B.重载函数

C.递归函数

D.嵌套函数

答案:

A

解析:

内联函数特征代码少,频繁调用,执行效率高。

重载函数解决统一接口的问题;递

归是子程序调用,程序调用要耗费很多空间和时间,循环/迭代都比递归有效率得多,递归只是

从形式上,逻辑比较简洁。

嵌套函数即反复调用,速度较慢。

所以选择A项。

new运算符

1、关于new运算符的下列描述中,(D)是错误的。

A、它可以用来动态创建对象和对象数组;

B、使用它创建的对象或对象数组可以使用运算符delete删除;

C、使用它创建对象时要调用构造函数;

D、使用它创建对象数组时必须指定初始值;

派生类

1、使用派生类的主要原因是(A)

A.提高代码的可重用性B.提高程序的运行效率

C.加强类的封装性D.实现数据的隐藏

2、假设已经定义好了类student,现在要定义类derived,它是从student私有派生的,则定义类derived的正确写法是(D)

A.classderived:

studentprivate{//………….}

B.classderived:

studentpublic{//………….}

C.classderived:

publicstudent{//………….}

D.classderived:

privatestudent{//………….}

3、派生类的对象对它的基类成员中(A)是可以访问的。

A.公有继承的公有成员;B.公有继承的私有成员;

C.公有继承的保护成员;D.私有继承的公有成员。

4、可以用p.a的形式访问派生类对象p的基类成员a,其中a是(D)

A、私有继承的公有成员B、公有继承的私有成员

C、公有继承的保护成员D、公有继承的公有成员

5、在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是(C)

A、派生类的对象可以赋给基类的对象B、派生类的对象可以初始化基类的引用

C、派生类的对象可以直接访问基类中的成员D、派生类的对象的地址可以赋给指向基类的指针

6、下列对派生类的描述中,(D)是错的。

A、一个派生类可以作另一个派生类的基类;

B、派生类至少有一个基类;

C、派生类的成员除了它自己的成员外,还包含了它的基类的成员;

D、派生类中继承的基类成员的访问权限到派生类保持不变。

7、对基类和派生类的关系描述中,(B)是错的。

A、派生类是基类的具体化;B、派生类是基类的子集;

C、派生类是基类定义的延续;D、派生类是基类的组合。

8、派生类的构造函数的成员初始化列中,不能包含(C)。

A、基类的构造函数;//用于基类子对象的构造(初始化)

B、派生类中子对象的初始化;

C、基类的子对象初始化;//基类子对象的初始化,可以!

D、派生类中一般数据成员的初始化。

static成员

1、下列静态数据成员特性中,D是错误的。

A)说明静态数据成员时前边要加修饰符static;

B)静态数据成员要在类体外进行初始化;

C)引用静态数据成员时,要在静态数据成员名前加<类名>和作用域分辨符;

D)静态数据成员不是所有对象共有的。

2、下面有关静态成员函数的描述中,正确的是(B)

A.在静态成员函数中可以使用this指针

B.在建立对象前,就可以为静态数据成员赋值

C.静态成员函数在类外定义是,要用static前缀

D.静态成员函数只能在类外定义、

3、下面对静态数据成员的描述中,正确的是(C)

A类的不同对象有不同的静态数据成员值

B类的每个对象都有自己的静态数据成员

C静态数据成员是类的所有对象共享的数据

D静态数据成员不能通过类的对象调用、

4、静态成员函数不能说明为(C)

A、整型函数B、浮点函数C、虚函数D、字符型函数

5、静态成员函数没有(B)

A、返回值B、this指针C、指针参数D、返回类型

6、静态成员函数仅能访问(D)。

A、静态的数据成员B、非静态的成员函数C、非静态的数据成员D、以上都不对

数组

1、下列关于对象数组的描述中,(D)是错的。

A、对象数组的下标是从0开始的;B、对象数组的数组名是一个常量指针:

C、对象数组的每个元素是同一个类的对象;D、对象数组只能赋初值,而不能被赋值。

2、下列定义中,(B)是定义指向数组的指针p。

A、int*p[5];//指针数组B、int(*p)[5];//行数组指针

C、(int*)p[5];D、int*p[];//指针数组

实参

1、下面哪种定义方式是正确的,并且使得p可以作为函数voidf(A*constpp);的实参:

A

(A)A*p=newA;(B)Aa;A*p=a;

(C)constA*p=newA;(D)Aa;constA*p=a;

2、使用地址作为实参传给形参,下列说法正确的是()

A.实参是形参的备份

B.实参与形参无联系

C.形参是实参的备份

D.实参与形参是同一对象

答案:

D

解析:

地址作为实参,表示实参与形参代表同一个对象。

如果实参是数值,形参也是普通

变量,此时形参是实参的备份。

所以选择D项。

私有数据成员

1、下面关于访问类A的私有数据成员的说法,错误的是:

C

(A)类A的友元函数可以访问类A的私有成员。

(B)类A的友元类中的非静态成员函数可以访问类A的私有成员。

(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。

(D)类A中的非静态成员函数可以访问类A的私有成员。

输入输出

1、在C++中,使用流进行输入输出,其中用于屏幕输入()

A.cin

B.cerr

C.cout

D.clog

答案:

A

解析:

(1)标准输入流cin:

istream类的对象。

(2)标准输出流cout:

ostream类的对象。

(3)非缓冲型标准出错流cerr:

ostream类的对象。

(4)缓冲型标准出错流clog:

ostream类的对象

this指针

1、下列关于this指针的说法,哪个是正确的:

D

(A)this指针一定指向常量型数据(B)this指向的数据不可更改

(C)静态成员函数中也可以访问this指针(D)this指针本身可直接作为成员函数的返回值

2、关于this指针使用说法正确的是()

A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

B.保证基类私有成员在子类中可以被访问。

C.保证基类保护成员在子类中可以被访问。

D.保证基类公有成员在子类中可以被访问。

答案:

A

解析:

this指针是隐藏的,可以使用该指针来访问调用对象中的数据。

基类的成员在派生

类中能否访问,与继承方式有关,与this没有关系。

所以选择A项。

3、this指针存在的目的是()

A.保证基类私有成员在子类中可以被访问

B.保证基类保护成员在子类中可以被访问

C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码

D.保证基类公有成员在子类中可以被访问

答案:

C

解析:

C++要求函数在被调用之前,应当让编译器知道该函数的原型,以便编译器利用函数

原型提供的信息去检查调用的合法性,强制参数转换成为适当类型,保证参数的正确传递。

对于

标准库函数,其声明在头文件中,可以用#include宏命令包含这些原型文件;对于用户自定义函

数,先定义、后调用的函数可以不用声明,但后定义、先调用的函数必须声明。

一般为增加程序

的可理解性,常将主函数放在程序开头,这样需要在主函数前对其所调用的函数一一进行声明

,以消除函数所在位置的影响。

所以选择C项。

虚基类

1、设置虚基类的目的是________D

A.简化程序B.使程序按动态联编方式运行

C.提高程序运行效率D.消除二义性

析构函数

1、对于任意一个类,析构函数的个数最多为(B)

A、0B、1C、2D、3

2、(D)是析构函数的特征。

A、析构函数可以有一个或多个参数;

B、析构函数名与类名不同;

C、析构函数的定义只能在类体内;

D、一个类中只能定义一个析构函数;

3、类的析构函数的作用是(D)

A、一般成员函数B、类的初始化C、对象的初始化D、删除对象

4、类的析构函数是在(C)调用的。

A、类创建时B、创建对象时C、删除对象时D、不自动调用

5、定义析构函数时,应该注意(C)。

A、其名与类名完全相同B、返回类型是void类型

C、无形参,也不可重载D、函数体中必须有delete语句

虚函数

1、通过(A)调用虚函数时,采用动态束定。

A、对象指针B、对象名C、成员名限定D、派生类名

2、如果一个类至少有一个纯虚函数,那么就称该类为(A)

A抽象类B虚基类C派生类D以上都不对

3、在派生类中重新定义虚函数时必须在(A)方面与基类保持一致。

A、参数类型B、参数名字C、操作内容D、赋值

4、关于虚函数的描述中,(C)是正确的。

A、虚函数是一个static类型的成员函数

B、虚函数是一个非成员函数

C、基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D、派生类的虚函数与基类的虚函数具有不同的参数个数和类型

5、若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则:

C

(A)类A不

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2