计算机等级二级C++考试精选试题及答案.docx
《计算机等级二级C++考试精选试题及答案.docx》由会员分享,可在线阅读,更多相关《计算机等级二级C++考试精选试题及答案.docx(19页珍藏版)》请在冰豆网上搜索。
![计算机等级二级C++考试精选试题及答案.docx](https://file1.bdocx.com/fileroot1/2023-5/29/7089a5b5-5bab-404d-bd42-37fa9a08cae2/7089a5b5-5bab-404d-bd42-37fa9a08cae21.gif)
计算机等级二级C++考试精选试题及答案
2014年计算机等级二级C++考试精选试题及答案
以下内容是2014年计算机等级二级C++考试精选试题及答案,供2014各考生备考练习,如需更多考试资讯,敬请关注考试宝典,祝考试顺利!
1.下列叙述中正确的是( C )。
A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)
C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)
D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)
2.算法的时间复杂度是指( D )。
A.算法的执行时间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的基本运算次数
3.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是( B )。
A.编辑软件
B.操作系统
C.教务管理系统
D.浏览器
4.软件(程序)调试的任务是( A )。
A.诊断和改正程序中的错误
B.尽可能多地发现程序中的错误
C.发现并改正程序中的所有错误
D.确定程序中错误的性质
5.数据流程图(DFD)是( C )。
A.软件概要设计的工具
B.软件详细设计的工具
C.结构化方法的需求分析工具
D.面向对象方法的需求分析工具
6.软件生命周期可分为定义阶段、开发阶段和维护阶段。
详细设计属于( B )。
A.定义阶段
B.开发阶段
C.维护阶段
D.上述3个阶段
7.数据库管理系统中负责数据模式定义的语有是( A )。
A.数据定义语言
B.数据管理语言
C.数据操纵语言
D.数据控制语言
8.在学生管理的关系数据库中,存取一个学生信息的数据单位是( D )。
A.文件
B.数据库
C.字段
D.记录
9.数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( C )。
A.需求分析阶段
B.逻辑设计阶段
C.概念设计阶段
D.物理设计阶段
10.有两个关系R和T如下所示:
R
T
A
B
C
A
B
C
a
1
2
c
3
2
b
2
2
d
3
2
c
3
2
d
3
2
则由关系R得到关系T的操作是( A )。
A.选择
B.投影
C.交
D.并
11.两个或两个以上模块之间关联的紧密程度称为( A )。
A.耦合度
B.内聚度
C.复杂度
D.数据传输特性
12.下列描述中正确的是( C )。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件丁二程只是解决软件开发中的技术问题
13.关系模型允许定义3类数据约束,下列不属于数据约束的是( C )。
A.实体完整性约束
B.参照完整性约束
C.属性完整性约束
D.用户自定义完整性约束
14.下列描述中正确的是( D )。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据与相关文档的集合
15.用树型结构表示实体之间联系的模型是( C )。
A.关系模型
B.网状模型
C.层次模型
D.以上三个都是
16.下列关于函数的描述中,错误的是( D )。
A.函数可以没有返回值
B.函数可以没有参数
C.函数可以是一个类的成员
D.函数不能被定义为模板
17.若MyClass是一个类名,其有如下语句序列:
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&c4=c1;
上面的语句序列所定义的类对象的个数是( B )。
A.1
B.2
C.3
D.4
18.下列关于继承方式的描述中,错误的是( D )。
A.如果不显式地指定继承方式,默认的继承方式是私有(private)
B.采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C.采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D.采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
19.将前缀运算符“一一”重载为非成员函数,下列原型中,能正确用于类中说明的是( C )。
A.Deer&operator一一{int};
B.Decroperator一一(Decr&,int);
C.friendDeer&cperator一一(Deer&);
D.friendDeeroperacor一一(Deer&,int);
20.若MyTemp是一个具有虚拟类型参数的类模板,且有如下语句序列:
MyTempp2;
MyTempp3[2];
编译系统在处理上面的话句序列时,所生成的模板MyTemp的实例的个数是( B )。
A.1
B.2
C.3
D.4
21.在C++中,cin是一个( B )。
A.类
B.对象
C.模板
D.函数
22.在下列字符中,不允许作为C++标识符的是( D )。
A.b
B.B
C._
D.2
23.下列叙述中,错误的是( D )。
A.false是一个逻辑型常量
B.“b”’是一个字符型常量
C.365是一个int常量
D.3.1415926是一个double常量
24.若x和y是程序中的两个整型变量,则下列if语句中正确的是( A )。
A.if(x==O)y=1;elsey=2;
B.if(x==0)theny=1elsey=2
C.if(x==O)y=1elsey=2;
D.ifx==0y=1elsey=2;
25.要定义整型数组x,使之包括初值为0的3个元素,下列语句中错误的是( D )。
A.intx[3]={0,0,0};
B.intx[]={0};
C.staticintx[3]={0);
D.intx[]={0,0,0};
26.关于函数中的<返回类型>,下列表述中错误的是( B )。
A.<返回类型>中有可能包含关键字int
B.<返回类型>中有可能包含自定义标识符
C.<返回类型>中有可能包含字符*
D.<返回类型>中可能包含[]
27.要定义一个引用变量P,使之引用类MyClass的一个对象,正确的定义语句是( D )。
A.MyClassp=MyClass;
B.MyClassp=newMyClass;
C.MyClass&p=newMyClass;
D.MyClassa,&p=a;
28.有如下两个类定义:
classXX{
private:
doublexl;
protected:
doublex2;
public:
doublex3;
};
claseYY:
protectedXX{
private:
doubleyl;
protected:
doubley2;
public:
doubley3;
};
在类YY中保护成员变量的个数是( C )。
A.1
B.2
C.3
D.4
29.下列关于运算符重载的描述中,错误的是( A )。
A.可以通过运算符重载在C++中创建新的运算符
B.赋值运算符只能重载为成员函数
C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象
D.重载类型转换运算符时不需要声明返回类型
30.下列关于类模板的描述中,错误的是( D )。
A.类模板的成员函数都是模板函数
B.可以为类模板参数设置默认值
C.类模板描述了一组类
D.类模板中只允许有一个类型参数
31.下列控制格式输入输出的操作符中,能够设置浮点数精度的是( A )。
A.setprecision
B.setw
C.setfill
D.showpoint
32.下列程序段中包含4个函数,其中具有隐含this指针的是( B )。
intfunl( );
classTest{
public:
intfun2( );
friendintfun3( );
staticintfun4( );
};
A.funl
B.fun2
C.fun3
D.fun4
33.有如下程序:
#include
usingnamespacestd;
classTest(
public:
Test( ){}
Test(constTest8Lt){cout<<1;}
};
Testfun(Test&u){Testt=U;returnt;}
intmain( ){Testx,y;x=fun(y);return0;}
运行这个程序的输出结果是( C )。
A.无输出
B.1
C.1l
D.111
34.有如下程序:
#include
usingnamespacestd;
classA{
public:
A(inti=O):
rl(i){}
voidprint( ){cout<<’E’
voidprint(intx){cout<<’P’<-’;}
private:
intr1;
};
intmain( ){
Aal:
constAa2(4);
a1.print
(2);
a2.print( );
return0;
}
运行时的输出结果是( D )。
A.P8一E4
B.P8一C16一
C.P0一E4一
D.P0一C16—
35.下列代码段声明了3个类:
classPerson{);
classStudent:
publicPerson{};
classUndergraduate:
Student{);
下列关于这些类之间关系的描述中,错误的是( B )。
A.类Person是类Undergraduate的基类
B.类Undergraduate从类Student公有继承
C.类Student是类Person的派生类
D.类Undergraduate是类Person的派生类
36.有如下程序:
#include
Usingnamespacestd;
classBase{
public:
Base(intx=O):
valB(x){cout<~Base( ){cout
intvalB:
};
classDerived:
publicBase{
public:
Derived(intX=0,inty=0):
Base(x),valD(y)(cout<~Derived( ){cout
intvalD;
};
intmain( ){
Derivedobj12(2,3);
return0;
}
运行时的输出结果是( A )。
A.2332
B.2323
C.3232
D.3223
37.下面是类Shape的定义:
classShape{
public:
virtualvoidDraw( )=0;
}
下列关于Shape类的描述中,正确的是( B )。
A.类Shape是虚基类
B.类Shape是抽象类
C.类Shape中的Draw函数声明有误
D.语句“ShapeS;”能够建立Shape的一个对象S
38.将运算符“+”重载为非成员函数,下列原型声明中,错误的是( C )。
A.MyClockoperator+(MyClock,long);
B.MyClockoperator+(MyClock,MyCloek);
C.MyCloekoperator+(long,long);
D.MyClockoperator+(long,MyCloek):
39.打开文件时可单独或组合使用下列文件打开模式:
①ios_base:
:
aop
②ios_base:
:
binary
③ios_base:
:
④ios_base:
:
out
若要以二进制读方式打开一个文件,需使用的文件打开模式为( D )。
A.①③
B.①④
C.②③
D.②④
40.有如下程序:
#include
usingnamespacestd;
classB{
public:
B(intxx):
x(xx){++count;x+=10;}
virtualvoidshow( )const
{cout
staticintcount;
private:
intx;
};
classD:
publicB{
public:
D(intxx,intyy):
B(XX),y(yy){++count;y+=
100;)
virtualvoidshow( )const
{cout
inty;
};
intB:
:
count==0;
intmain( ){
B*ptr=newD(10,20);
ptr->show( );
deleteptr;
return0;
}
运行时的输出结果是( B )。
A.1_120
B.2_120
C.1_20
D.2_20
参考答案
1.C。
【解析】二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最拓情况只需比较log2n次。
2.D。
【解析】算法的时间复杂度是指算法需要消耗的时间资源。
一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n)),因此,问题的规模n越大,算法执行的时间增长率与f(n)的增长率正相关,称做渐进时间复杂度(AsymptoticTimeCom-plexity)。
简单来说就是算法在执行过程中所需要的基本运算次数。
3.B。
【解析】编辑软件和浏览器属于工具软件,教务系统是应用软件。
4.A。
【解析】调试的目的是发现错误或导致程序失效的错误原因,并修改程序以修正错误。
调试是测试之后的活动。
5.C。
【解析】数据流程图是一种结构化分析描述模型,用来对系统的功能需求进行建模。
6.B。
【解析】开发阶段在开发初期分为需求分析、总体设计、详细设计3个阶段,在开发后期分为编码、测试两个子阶段。
7.A。
【解析】数据模式是由数据定义语言(DataDefini-tionLanguage,DDL)来描述、定义的,体现、反映了数据库系统的整体观。
8.D。
【解析】一个数据库由一个文僻戏文件集合组成。
这些文件中的信患可分解成一个个记录。
9.C。
【解析】E—R图为安体一联系图,提供了袭示实体型、属性和联系的方法,用来描述现实世界的概念模型。
10.A。
【解析】选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行。
11.A。
【解析】耦合是指模块之间的关联程度,内聚是指模块内部各部分的聚合程度。
12.C。
【解析】软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法来开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程的目标是生产具有正确性、可用性及开销合宜的产品,它的主要思想是强调在软件开发过程中需要应用工程化原则。
13.C。
【解析】关系模型允许定义3类数据约束,即实体完整性约束、参照完整性约束和用户自定义完整性约束。
其中前两种完整性约束由关系数据库系统支持,用户自定义完整性约束则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。
14.D。
【解析】软件是程序、数据与翱关文档的集合,它是一个逻辑实体。
软件的开发要受计算机系统的限制,例如硬件系统的限制、软件操作系统的限制等。
15.C。
【解析】层次模型是数据库系统中最早出现的数据模型,它用树型结构来袭示各类实体及实体间的联系。
在现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构很不直接,网状模型则用来表示非树型结构。
关系模型是目前最重要的一种数据模型,它建立在严格的数学概念基础上。
关系模型由关系数据结构、关系操作系统和关系完整性约束3部分组成。
16.D。
【解析】函数可以被定义为模板;“template<模板形参表><返回值类型><函数名>(模板函数形参表){//函数定义体},”其中<摸板形参表>是由一个或多个<模板形参>组成,每个<模板形参>可以有这几种形式:
typename.(参数名>,class<(参数名>,<类型修饰><参数名>;前两种是等价的typename和Class可以互换,它们的参数为虚拟类型参数;最后一种参数是常规参数。
17.B。
【解析】首先定义对象的格式:
(存储类型)<类名><对象名1>(<对象名2>,…,<对象名n>);第一句定义了对象c1和指针对象c2,而MyClass*c3=newMyClass是Java里的定义方式,MyClass&c4=c1这种定义方式也是不对的。
18.D。
【解析】采用私有继承方式对。
基类中私有成员在派生类中是不可访问的成员。
19.C。
【解析】把“--”运算符重载为非成员(友元)函数格式:
“friend<返回类型>operator--()”是前缀的格式;friend<返回类型>operator--(int)是后缀的格式。
当然也可以有参数如题中C选项所示。
20.B。
【解析】类横板是一系列相关类的模板或样板,成员函数的源代码形式相同,不同的是所针对的类型不一样,如题中的一个double类型,一个long类型;类模板中数据类型本身是它的参数,它是类的生成器。
21.B。
【解析】C++提供了一套输入、输出流类的对象,它们是cin、cout和eerr,对应C语言中的3个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。
cin与>>一起完成输入操作,cout、eerr与<<一起完成输出与标准错误输出。
22.D。
【解析】在C++中,标识符只能以字母、数字和下画线组成,并且首字母不能为数字。
所以D选项错误。
23.D。
0【解析]double型数据一般占8个字节,D选项超出了范围。
24.A。
【解析】if…else语句的格式“if(<条件>)<语句1>else<语句2>”注意语句结束要以分号结尾,对照题中选项可知A正确。
25.D。
【解析】选项D中整型数组x的第一个元素是NULL,不是0,故选D。
26.B。
【解析】<返回类型>又称函数类型,表示一个
函数所计算(或运行)的结果值类型,这里的类型可以是预定义类型(如int)、复合类型(如double*)、用户定义类型(如枚举类),若返回值只做更新(或设置)等操作,则该函数返回类型为void类型,函数类型和内置数组不能作为返回类型,但类类型和容器类型可以被直接返回。
27.D。
【解析】选项A错误不存在这样的定义方式;选项B定义了一个M:
yClass类的对象P;选项C是Java里的定义方式。
28.C。
【解析】派生类从基类保护继承classYY:
pr0-teetedXX时,基类的公有成员在派生类中变为保护成员,基类的保护成员在派生类中仍然是保护成员;本题中YY本身有一个保护成员y2,再加上基类XX的x2和x3,故选C。
29.A。
【解析】运算符的重载是针对C++中原有运算符进行的,不能通过重载创造新的运算符。
30.D。
【解析】类模板是一系列相关类的模板,类成员组成相同,成员函数的源代码形式相同,所不同的是所针对的类型。
类模板的成员函数都是模板函数,在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板实参。
但可以为类模板的参数设置默认值。
由此可知应选D。
31.A。
【解析】setprecision(int)是设置浮点数的精度,setw(intn)是设置输入输出宽度,setfill(charc)设置填充字符,showpoint即使小数部分为0,也输出以及其后的无效数据0。
32.B。
【解析】this指针是成员函数所属对象的指针,是指向类对象的地址,是一个隐含的指针,隐含于每个类的非静态成员函数中。
funl是外部函数,fun3是友元函数,fun4是静态成员函数,故选B。
33.C。
【解析】本题调用了fun函数。
34.D。
【解析】略。
35.B。
【解析】类Undergraduate从类Student私有继承,继承方式缺省则默认是private。
36.A。
【解析】本题使用析构函数。
37.B。
【解析】抽象类是类中至少有一个纯虚函数,抽象类是用来被继承的,即是用来生成派生类,它本身不能生成实例。
38.C。
【解析】非成员函数一般都是友元函数,相比成员函数第一个操作数是对象本身以thiS指针的形式隐含在参数列表中,非成员函数调用必须显式的列出参数;选项C
中没有MyClock类型,故选C。
39.D。
【解析】ios_base:
:
binary是作为二进制文件打开,ios_base:
:
out是为输出而打开,故选D。
40.B。
【解析】本题考查了类的继承。
继承有3种方式,public公有、private私有和protected保护,本题都涉及了。
本题中类D公有继承类B。
在类B中又定义了虚函数,并且有保护类静态类型count及私有变量x。
主函数中调用类D,类D又继承了类B,经过系统及调用,本题最终结果为2_120。