二级C++笔试378.docx
《二级C++笔试378.docx》由会员分享,可在线阅读,更多相关《二级C++笔试378.docx(18页珍藏版)》请在冰豆网上搜索。
二级C++笔试378
二级C++笔试-378
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
35,分数:
70.00)
1.下列关于模板的叙述中,错误的是
(分数:
2.00)
A.调用模板函数时,在一定条件下可以省略模板实参
B.可以用int、double这样的类型修饰符来声明模板参数
C.模板声明中的关键字class都可以用关键字typename替代 √
D.模板的形参表中可以有多个参数
解析:
[解析]在有typename的地方可以用class来代替,但是在有class的地方不一定能用typename代替,如:
Templae<class类型参数>class类名{}后面的那个class是不能用typename代替的。
2.当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为
(分数:
2.00)
A.iosbase:
:
in
B.ios_base:
:
binary
C.ios_base:
:
inIios_base:
:
out
D.ios_base:
:
out √
解析:
[解析]对所有的类ifstream,文件的打开方式默认值为:
ios:
:
in;而对于类ofstream,文件打开方式的默认值为ios:
:
out。
3.在软件开发中,需求分析阶段可以使用的工具是
(分数:
2.00)
A.N-S图
B.DFD图 √
C.PAD图
D.程序流程图
解析:
[解析]数据流图简称DFD,它采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
所以DFD图可以用于需求分析阶段。
4.下列运算符函数中,肯定不属于类Value的成员函数的是
(分数:
2.00)
A.Valueoperator+(Value);
B.Valueoperator-(Value,Value); √
C.Valueoperator*(int);
D.Valueoperator/(Value);
解析:
[解析]双目运算符重载为成员函数时,只需要一个形参,另外一个形参为当前对象本身。
5.一个栈的初始状态为空。
现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是
(分数:
2.00)
A.123456ABCDE
B.EDCBA54321 √
C.ABCDEl2345
D.54321EDCBA
解析:
[解析]栈的特点是先进后出,所以全部入栈后再全部出栈所得的序列顺序必然与入栈序列的顺序相反。
6.若已经声明了函数原型“voidfun(inta,doubleb=0.0);”,则下列重载函数声明中正确的是
(分数:
2.00)
A.voidfun(inta=90,doubleb=0.0);
B.intfun(inta,doubleB);
C.v √
D.boolfun(inta,doubleb=0.0);
解析:
[解析]进行函数重载时,要求函数名相同,而函数的参数不同,函数的返回值类型不在参数匹配检查之列。
因此,若两个函数的参数个数和类型都相同,而只有返回值类型不同,则不允许重载。
7.如果表达式a>=b中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为
(分数:
2.00)
A.operator>=( √
B.
C.
D.operator>=(b,
解析:
[解析]双目运算符进行友元函数重载时,在程序中的调用方法有:
aa@bb或者operator@(aa,bB),这两种方法等价;或者显式调用为:
aa.operator@(bB)。
8.数据流图中带有箭头的线段表示的是
(分数:
2.00)
A.控制流
B.事件驱动
C.模块调用
D.数据流 √
解析:
[解析]在数据流图中,矩形表示数据的外部实体,圆角矩形表示变换数据的处理逻辑,双横线表示数据的存储,箭头表示数据流。
9.在一个抽象类中,一定包含
(分数:
2.00)
A.虚函数
B.纯虚函数 √
C.模板函数
D.重载函数
解析:
[解析]一个含有纯虚函数的类被称为抽象类,所以一个抽象类至少含有一个以上的纯虚函数。
10.有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为
(分数:
2.00)
A.笛卡儿积
B.交
C.并
D.自然连接 √
解析:
[解析]自然连接是一种特殊的等值连接。
当关系R和S有相同的属性组,且该属性组的值相等时,这样的连接称为自然连接。
11.下列选项中,与实现运行时多态性无关的是
(分数:
2.00)
A.重载函数 √
B.虚函数
C.指针
D.引用
解析:
[解析]动态联编是指在程序运行时才将源程序经过编译连接成为可执行文件的过程。
动态联编所支持的多态性被称为运行时多态性,简称为动态多态性。
所有的编译都是在运行时完成的,只有重载函数不是,重载函数属于静态联编。
12.有如下程序:
#include<iostreanl>
usingnamespacestd;
classMyClass
public:
MyClass(intx):
val(x)
voidSet(intx)val=x;
voidPrint()eonsteout<<"val="<<val<<'/t';
private:
intval;
;
intmain()
eonstMyClassobjl(10);
MyClassobj2(20);
objl.Print();//语句1
obj2.Print();//语句2
objl.Set(20);//语句3
obj2.Set(30);//语句4
return0;
其主函数中错误的语句是
(分数:
2.00)
A.语句1
B.语句2
C.语句3 √
D.语句4
解析:
[解析]常对象只能调用常成员函数,不能调用非常成员函数,所以C错误。
13.下列叙述中正确的是
(分数:
2.00)
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中元素的个数是由队头指针和队尾指针共同决定的 √
解析:
[解析]循环队列是线性表的一种,所以选项A错误。
循环队列的入队和出队需要由队尾指针和队头指针完成,所以选项B和c错误。
14.在数据管理技术发展的3个阶段中,数据共享最好的是
(分数:
2.00)
A.人工管理阶段
B.文件系统阶段
C.数据库系统阶段 √
D.3个阶段相同
解析:
[解析]人工管理阶段是在计算机出现的初期,主要用于科学计算,没有大容量的存储设备。
处理方式只能是批处理,数据不共享,不同程序问不能交换数据。
文件系统阶段把有关的数据组织成一种文件,这种数据文件可以脱离程序而独立存在,由一个专门的文件管理系统实施统一管理;但是,数据文件仍高度依赖于其对应的程序,不能被多个程序所通用。
数据库系统阶段对所有的数据实行统一规划管理,形成了一个数据中心,构成了一个数据仓库;数据库中的数据能够满足所有用户的不同要求,供不同用户共享;数据共享性显著增强。
15.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是
(分数:
2.00)
A.0(n)
B.O(n2)
C.D(10g2n) √
D.O(nlog2n)
解析:
[解析]二分查找法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2],则找到x,算法终止;如果x<a[n/2],则只要在数组的左半部继续搜索x(假设数组元素是按升序排列的);如果x>a[n/2],则只要在数组的右半部继续搜索x。
每次余下n/2i个元素待比较,当最后剩下一个时,即n/2i=1。
故n=2i;所以i=log2n。
16.下列模板声明中有语法错误的是
(分数:
2.00)
A.template<typenameT>Tfun(Tx)returnx;
B.template<typenameT>Tfun(Tx,intn)returnx术n;
C.template<classT>Tfun(T*P)return*P; √
D.template
解析:
[解析]函数的返回值为T对象,而在模板函数中返回的是指针。
17.下列关于运算符重载的叙述中,错误的是
(分数:
2.00)
A.有的运算符可以作为非成员函数重载
B.所有的运算符都可以通过重载而被赋予新的含义 √
C.不得为重载的运算符函数的参数设置默认值
D.有的运算符只能作为成员函数重载
解析:
[解析]进行运算符重载时,不得给重载函数参数赋默认值。
运算符重载是针对新数据类型的需要对原有运算符进行适当的改造,而不是创建新的运算符,也不能给运算符赋予新的含义。
有的运算符只能重载为成员函数如:
=、()、[]、->。
18.如下程序的输出结果是
#include<iostream>
usingnamespacestd;
classMyClass
public:
MyClass(inti=0)cout<<1;
MyClass(constMyClass&x)cout<<2;
;
intmain()
MyClassobjl
(1),obj2
(2),ohj3(objl);
return0;
(分数:
2.00)
A.112 √
B.111
C.121
D.113
解析:
[解析]MyClassobjl
(1),ohj2
(2),obj3(objl);创建objl和obj2对象时调用第一个构造函数,打印1,创建obj3对象时调用第二个构造函数,打印2。
19.在C++中,编译系统自动为一个类生成默认构造函数的条件是
(分数:
2.00)
A.该类没有定义任何有参构造函数
B.该类没有定义任何无参构造函数
C.该类没有定义任何构造函数 √
D.该类没有定义任何成员函数
解析:
[解析]在C++中,若类没有显式定义构造函数,则系统会自动生成一个默认的构造函数。
20.要利用C++流进行文件操作,必须在程序中包含的头文件是
(分数:
2.00)
A.iostream
B.fstream
C.strstream
D.iomanip √
解析:
[解析]头文件iomapip用于输入/输出的格式控制,头文件iostrearn包含了对输入/输出流进行操作所需的基本信息。
21.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为
(分数:
2.00)
A.派生类、成员对象类、基类
B.成员对象类、基类、派生类
C.基类、成员对象类、派生类 √
D.基类、派生类、成员对象类
解析:
[解析]在生成派生类对象时,如果派生类中含有对象成员,则先执行基类的构造函数,然后执行对象成员的构造函数,最后执行派生类的构造函数。
析构函数的调用顺序与构造函数的顺序则相反。
22.在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译,这说明
(分数:
2.00)
A