二级C++笔试206.docx
- 文档编号:2312940
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:21
- 大小:25.91KB
二级C++笔试206.docx
《二级C++笔试206.docx》由会员分享,可在线阅读,更多相关《二级C++笔试206.docx(21页珍藏版)》请在冰豆网上搜索。
二级C++笔试206
二级C++笔试-206
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
35,分数:
70.00)
1.有如下程序:
#included<iostream>
usingnamespacestd;
classTestClass
private:
intx,y;
public:
TestClass(inti,intj)
x=i;
y=j;
voidprint()
cout<<"print1"<<endl;
voidprint()const
cout<<"print2"<<endl;
;
intmain()
constTestClassa(1,2);
a.print();
return0;
该程序运行后的输出结果是()。
(分数:
2.00)
A.print1
B.print2 √
C.print1print2
D.程序编译时出错
解析:
[解析]本题定义TestClass型常对象a,然后调用对象a中的成员函数print()。
因为在C++中,如果一个对象被声明为常对象,则不能调用该对象中的非const型成员函数。
所以,这里调用的是对象中的const型成员函数voidprint()const,输出为print2。
2.源程序的文档化不包括()。
(分数:
2.00)
A.符号名的命名要有实际意义
B.正确的文档形式 √
C.良好的视觉组织
D.正确的程序注释
解析:
[解析]源程序的文档化主要包括三点:
①符号名应具有一定实际的含义,便于理解程序功能;②正确的程序注释;③良好的视觉组织,利用空格、空行、缩进等技巧使程序层次清晰。
3.有下列二叉树,对此二叉树中序遍历的结果是()。
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]对二叉树的中序遍历是指:
首先遍历左子树,然后访问根结点,最后遍历右子树。
在遍历左、右子树时,注意依旧按照“左子树—根结点—右子树”的顺序。
4.有如下类声明:
classXA
intx;
public:
XA(intn)x=n;
;
classXB:
publicXA
inty;
public:
XB(inta,intb);
;
在构造函数XB的下列定义中,正确的是()。
(分数:
2.00)
A.XB:
:
XB(inta,intb):
x(a),y(b)
B.XB:
:
XB(inta,intb):
XA(a),y(b) √
C.XB:
:
XB(inta,intb):
x(a),XB(b)
D.XB:
:
XB(inta,intb):
XA(a),XB(b)
解析:
[解析]本题考查派生类中构造函数的定义。
派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。
格式为,派生类名(构造函数形参表)基类构造函数(形参表)。
5.下列叙述正确的是()。
(分数:
2.00)
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 √
D.以上三种描述都不对
解析:
[解析]算法的执行效率与数据的存储结构密切相关。
算法的空间复杂度是指算法执行过程中所需的存储空间。
6.对于拷贝构造函数和赋值操作的关系,正确的是()。
(分数:
2.00)
A.拷贝构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,会调用类的构造函数
C.当调用拷贝构造函数时,类的对象正在被建立并被初始化 √
D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
解析:
[解析]在赋值操作中,将发生对象的拷贝操作,但并不说明两者是完全一样的。
一般情况下,如果给类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。
实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,需要程序员重新定义拷贝构造函数。
7.设计数据库的存储结构属于()。
(分数:
2.00)
A.需求分析
B.概念设计
C.逻辑设计
D.物理设计 √
解析:
[解析]物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题。
物理设计阶段包括:
选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。
8.下面关于C++流的叙述中,正确的是()。
(分数:
2.00)
A.cin是一个输入流对象 √
B.可以用ifstream定义一个输出流对象
C.执行语句序列char*y="PQMN";cout<<y;将输出字符串PQMN的地址
D.执行语句序列charx[80];cin.getline(x,80);时,若输入Happynewyear,则x中的字符串是“Happy”
解析:
[解析]本题考查C++流的概念和I/O的格式化。
cin是istream类的对象,即输入流对象。
ifstream是输入文件流,类不能定义个输出流对象。
getline函数的功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以D选项中的语句序列后x中字符串应该是Happynewyear。
9.下列叙述中正确的是()。
(分数:
2.00)
A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息
B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节
C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 √
D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
解析:
[解析]在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现。
在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。
在程序设计中,模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。
10.继承机制的作用是()。
(分数:
2.00)
A.信息隐藏
B.数据封装
C.定义新类 √
D.数据抽象
解析:
[解析]数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。
11.有如下类声明:
classXA
intx;
public:
XA(intn)x=n;
;
classXB:
publicXA
inty;
public:
XB(inta,intb);
;
在构造函数XB的下列定义中,正确的是()。
(分数:
2.00)
__________________________________________________________________________________________
解析:
[解析]C++中派生类构造函数的一般语法规则为<派生类名>:
:
<派生类名>(<参数表>):
<基类1>(<参数表1>),…,<基类名n>(<参数表n>),<子对象1>(<子对象参数表1>,…<子对象m>(<子对象参数表m>){<派生类新增成的初始化语句>;
12.有如下数组声明:
intnum[10];,下标值引用错误的是()。
(分数:
2.00)
A.num[10] √
B.num[5]
C.num[3]
D.num[0]
解析:
[解析]数组定义中的数字指的是数组的大小,而下标是从0开始的,所以数组的最后一个元素是num[9]。
13.类MyClass的定义如下:
classMyClass
public:
MyClass()value=0;
SetVariable(inti)value=i;
private:
intvalue;
;
则对下列语句序列正确的描述是()。
(分数:
2.00)
A.语句p=&my;是把对象my赋值给指针变量p
B.语句MyClass*p,my;会调用两次类MyClass的构造函数
C.对语句*p.SetVariable(5)的调用是正确的
D.语句p->SetVariable(5)与语句my.SetVariable(5)等价 √
解析:
[解析]选项A,语句p=&my;是把对象my的地址值赋值给指针变量P;选项B,语句:
MyClass*p,my;中由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数:
对成员函数的引用可以通过两种形式:
指针->成员函数(形参表),或者对象名.成语函数名(形参表),故选项C错误,选项D正确。
14.已知在一个类体中包含如下函数原型:
VOLUMEOPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是()。
(分数:
2.00)
A.这是运算符一的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符 √
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
解析:
[解析]本题考核运算符的重载。
题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
15.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()来实现。
(分数:
2.00)
A.调用语句
B.命令
C.中令
D.消息 √
解析:
[解析]在面向对象方法中,对象之间通过消息进行通信。
消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。
16.下面程序的运行结果为()。
#include<iostream.h>
voidmain()
chara='3';
switch(a)
case'3':
cout<<"3";
case'2':
cout<<"2";break;
default:
cout<<"1";
(分数:
2.00)
A.3
B.321
C.31
D.32 √
解析:
[解析]本题主要考查switch语句的使用,在第一个case处,因为满足条件,所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。
17.两个或两个以上模块之间联系的紧密程度称为()。
(分数:
2.00)
A.耦合性 √
B.内聚性
C.复杂性
D.数据传输特性
解析:
[解析]耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
18.下面程序的运行结果是()。
#included<iostream.h>
classbase
protected:
inta;
public:
base()cout<<"0";
;
classbase1:
virtualbase
public:
base1()cout<<"1";
;
classbase2:
virtualbase
public:
base2()cout<<"2";
;
classderived:
publicbase1,publicbase2
public:
derived()cout<<"3";
;
voidmain()
derivedobj;
cout<<endl;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 C+ 笔试 206