全国计算机等级考试二级C++Word下载.docx
《全国计算机等级考试二级C++Word下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级C++Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。
5.结构化程序所要求的基本结构不包括
A.顺序结构
B.GOTO跳转
C.选择(分支)结构
D.重复(循环)结构
结构化程序设计的三种基本控制结构为:
顺序结构、选择结构和重复结构。
6.下面描述中错误的是
A.系统总体结构图支持软件系统的详细设计
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具
7.负责数据库中查询操作的数据库语言是
A.数据定义语言
B.数据管理语言
C.数据操纵语言
D.数据控制语言
C
数据操纵语言负责数据的操纵,包括查询及增、删、改等操作。
8.一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程间的联系是
A.1∶1联系
B.1∶m联系
C.m∶1联系
D.m∶n联系
9.有三个关系R、S和T如下:
A.自然连接
B.交
C.除
D.并
10.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
A.-369
B.369
C.0.369
D.整数集合{1,2,3,4,5}
A项为有符号型,C项为实型常量,D项为整数集合,只有B项符合,故本题选B。
11.为了提高函数调用的实际运行速度,可以将较简单的函数定义为
A.内联函数
B.重载函数
C.递归函数
D.函数模板
12.若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为
A.a
B.AA.a
C.a()
D.AA:
:
a()
13.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是
A.任何
B.公有或保护
C.保护或私有
D.私有
派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员,基类中的私有成员在派生类中是隐藏的,不可访问。
14.若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是
A.Data+(Data);
B.Dataoperator+(Data);
C.Data+operator(Data);
D.operator+(Data,Data);
运算符函数的函数名由运算符前加关键字operator构成,且“+”是一个二元运算符,作为成员函数重载时形参表中只有一个参数。
故可排除A、B、D项,本题答案为B。
15.下列关于函数模板的描述中,正确的是
A.函数模板是一个实例函数
B.使用函数模板定义的函数没有返回类型
C.函数模板的类型参数与函数的参数相同
D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数
函数模板是一系列相关函数的模型或样板;
使用函数模板定义的函数可以带有返回类型;
函数模板的类型参数为虚拟类型参数,与函数的参数不同。
故A、B、C项错误。
定义好函数模板后,编译系统将依据每一次对函数模板调用时实际所使用的的数据类型生成适当的调用代码,并生成相应的函数版本,故D项正确。
16.C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是
A.cout
B.cin
C.cerr
D.cset
C++流的4个预定义的流对象为:
cin标准输入,cout标准输出,cerr标准出错信息输出,clog带缓冲的标准出错信息输出。
17.Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是
A.cpp
B.exe
C.obj
D.lik
在VC6集成开发环境中,编译命令将一个以cpp为扩展名的C++源程序文件转换成一个以obj为扩展名的目标文件。
18.字符串"
a+b=12\n\t"
的长度为
A.12
B.10
C.8
D.6
19.有如下程序:
#include<
iostream>
usingnamespacestd;
intmain(){
intf,f1=0,f2=1;
for(inti=3;
i<
=6;
i++){
f=f1+f2;
f1=f2;
f2=f;
}
cout<
<
f<
endl;
return0;
运行时的输出结果是
A.2
B.3
C.5
D.8
20.有如下程序:
inta[6]={23,15,64,33,40,58};
ints1,s2;
s1=s2=a[0];
for(int*p=a+1;
p<
a+6;
p++){
if(s1>
*p)s1=*p;
if(s2<
*p)s2=*p;
s1+s2<
A.23
B.58
C.64
D.79
程序实现的功能为输出数组a中最小值和最大值的和。
for循环结束后,变量s1中存放最小值15,变量s2中存放最大值64,输出s1+s2的值为79。
21.有如下程序:
voidf1(int&
x,int&
y){intz=x;
x=y;
y=z;
voidf2(intx,inty){intz=x;
intx=10,y=26;
f1(x,y);
f2(x,y);
y<
A.10
B.16
C.26
D.36
函数f1的参数传递方式采用传引用方式,调用函数f1后,实参变量x、y的值被交换。
此时,x=26,y=10。
函数f2的参数传递方式采用传值方式,调用函数f2后,不会改变实参变量x、y的值。
故程序输出y的值为10。
22.有如下程序:
classXA{
inta;
public:
staticintb;
XA(intaa):
a(aa){b++;
~XA(){}
intget(){returna;
};
intXA:
b=0;
XAd1
(2),d2(3);
d1.get()+d2.get()+XA:
b<
A.5
B.6
C.7
主程序中创建了两个XA类的对象d1、d2,并将它们的数据成员a分别初始化为2和3。
在创建了两个对象后静态数据成员b=2。
程序输出三个变量的和2+3+2=7。
23.有如下程序:
classPoint{
intx,y;
Point(intx1=0,inty1=0):
x(x1),y(y1){}
intget(){returnx+y;
classCircle{
Pointcenter;
intradius;
Circle(intcx,intcy,intr):
center(cx,cy),radius(r){}
intget(){returncenter.get()+radius;
Circlec(3,4,5);
c.get()<
B.7
C.9
D.12
主函数中语句“cout<
”调用Circle类成员函数get(),返回x+y+radius的值,即3+4+5=12。
24.若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是
A.operatorlong()const;
B.operatorlong(BigNumber);
C.longoperatorlong()const;
D.longoperatorlong(BigNumber);
25.有如下函数模板定义:
template<
typenameT1,typenameT2>
T1FUN(T2n){returnn*5.0;
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为
A.FUN(9)
B.FUN<
9>
C.FUN<
double>
(9)
D.FUN<
(double)
26.下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是
A.cout<
internal<
12345;
B.cout<
left<
C.cout<
right<
D.cout<
setw(6)<
D选项中setw(6)设置输出宽度为6,而A、B、C项均按实际宽度输出,效果相同,故本题选D。
27.下列关于析构函数的描述中,错误的是
A.析构函数可以重载
B.析构函数由系统自动调用
C.每个对象的析构函数只被调用一次
D.每个类都有析构函数
析构函数没有参数,所以不能重载,A项说法错误。
B、C、D项说法正确。
28.下列关于构造函数的描述中,错误的是
A.构造函数名与类名相同
B.构造函数可以有返回值
C.构造函数可以重载
D.每个类都有构造函数
构造函数不指定返回类型,它隐含有返回值,由系统内部使用。
本题答案为B。
29.若PAT是一个类,则程序运行时,语句"
PAT(*ad.[3];
"
调用PAT的构造函数的次数是
A.0
B.1
C.2
D.3
语句“PAT(*ad)[3];
”定义了一个指向对象数组的指针,并未创建对象,故不调用构造函数。
30.下列描述中,错误的是
A.公有继承时基类中的公有成员在派生类中仍是公有成员
B.公有继承时基类中的保护成员在派生类中仍是保护成员
C.保护继承时基类中的公有成员在派生类中仍是公有成员
D.保护继承时基类中的保护成员在派生类中仍是保护成员
保护继承时基类中的公有成员在派生类中改变为保护成员。
31.生成派生类对象时,派生类构造函数调用基类构造函数的条件是
A.无需任何条件
B.基类中显式定义了构造函数
C.派生类中显式定义了构造函数
D.派生类构造函数明确调用了基类构造函数
32.下列关于派生类和基类的描述中,正确的是
A.派生类成员函数只能访问基类的公有成员
B.派生类成员函数只能访问基类的公有和保护成员
C.派生类成员函数可以访问基类的所有成员
D.派生类对基类的默认继承方式是公有继承
基类中的私有成员在派生类中是隐藏的,只能在基类内部访问,A、C项错误,B项正确。
派生类对基类的默认继承方式是私有继承,D项错误。
33.有如下类模板定义:
template<
typenameT>
classBigNumber{
longn;
BigNumber(Ti):
n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber(n+
B.n);
已知b1、b2是BigNumber的两个对象,则下列表达式中错误的是
A.b1+b2
B.b1+3
C.3+b1
D.3+3
BigNumber类中重载的“+”运算符的左边只能是BigNumber类型,C项错误。
34.下列关于文件流的描述中,正确的是
A.文件流只能完成针对磁盘文件的输入输出
B.建立一个文件流对象时,必须同时打开一个文件
C.若输入流要打开的文件不存在,将建立一个新文件
D.若输出流要打开的文件不存在,将建立一个新文件
35.有如下程序:
classPair{
intm,n;
Pair(intj,intk):
m(j),n(k){}
intget(){returnm;
intget()const{returnm+n;
intmain(){
Paira(3,5);
constPairb(3,5);
a.get()<
B.get();
A.33
B.38
C.83
D.88
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
1.有序线性表能进行二分查找的前提是该线性表必须是【1______】存储的。
【1】顺序
【解析】二分查找只适用于顺序存储的有序线性表。
2.一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2______】。
【2】DEBFCA
3.对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3______】测试。
【3】单元
【解析】单元测试是对软件设计的最小单位——模块(程序单元)进行正确性检验的测试。
单元测试的目的是发现各模块内部可能存在的各种错误。
4.实体完整性约束要求关系数据库中元组的【4______】属性值不能为空。
【4】主键
【解析】实体完整性约束要求关系的主键中属性值不能为空值,因为主键是惟一决定元组的,如为空值则其惟一性就成为不可能的了。
5.在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5______】是关系A的外码。
【5】D
【解析】如果表A中的某属性集是某表B的键,则称该属性集为A的外键或外码。
6.若有定义语句“intx=10,y=20,z=20;
”,则表达式x>
z&
&
y==z的值为【6______】。
【6】0
7.有如下语句序列:
intx=-10;
while(++x){}
运行时while循环体的执行次数为【7______】。
【7】9
8.有如下语句序列:
intarr[2][2]={{9,8},{7,6}};
int*p=arr[0]+1;
*p<
运行时的输出结果是【8______】。
【8】8
9.函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。
intfun(char*str){
intnum=0;
while(*str){
num*=10;
num+=【9______】;
str++;
returnnum;
10.若要将函数“voidFriFun();
”声明为类MyClass的友元函数,则应在类MyClass的定义中
加入语句【10______】。
【10】friendvoidFriFun();
11.下列程序的输出结果为012,请根据注释将横线处的缺失部分补充完整。
classTest{
Test(inta){data=a;
~Test(){}
voidprint(){cout<
data;
private:
intdata;
Testt[3]={【11______】};
∥对有3个元素的Test类对象数组t初始化
for(inti=0;
3;
i++)t[i].print();
【11】0,1,2
12.请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。
classBase{
Base"
;
classDerived:
【12______】Base{};
Derivedd;
D.print();
【12】public
13.___
【13】Base(a)
14.___
【14】Fractionf(-num,den);
15.函数Min的功能是返回具有n个元素的数组array中的最小值。
请将横线处的缺失部分补充完整,使得程序的输出结果为1.24。
TMin(T*array,intn){
Tmin=array[0];
for(inti=1;
n;
i++)
if(array[i]<
min)min=array[i];
returnmin;
doublearr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};
【15______】;
【15】Min(arr,8)__
9月的答案