二级C++175.docx
《二级C++175.docx》由会员分享,可在线阅读,更多相关《二级C++175.docx(20页珍藏版)》请在冰豆网上搜索。
二级C++175
二级C++-175
(总分:
100.00,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
100.00)
1.下列叙述中正确的是______。
(分数:
2.50)
A.循环队列是队列的一种链式存储结构
B.循环队列是一种逻辑结构
C.循环队列是队列的一种顺序存储结构 √
D.循环队列是非线性结构
解析:
[解析]顺序存储就是指用一组连续的存储单元依次存储,链式存储内存中地址小是挨着的,循环队列增设了头指针和尾指针,实现空间的最大利用。
2.下列叙述中正确的是______。
(分数:
2.50)
A.栈是一种先进先出的线性表
B.队列是一种后进先出的线性表
C.栈与队列都是非线性结构
D.以上三种说法都不对 √
解析:
[解析]栈是允许在同一端进行插入和删除操作的特殊线性表。
允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。
插入一般称为进栈,删除则称为退栈。
饯也称为后进先出表。
3.一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为______。
(分数:
2.50)
A.16 √
B.10
C.6
D.4
解析:
[解析]二叉树中,度为0的结点(即叶子结点)比度为二的结点多1个,而度为0、1、2的结点相加等于总结点数25,所以度为1的结点数为25-5-(5-1)=16。
4.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是______。
(分数:
2.50)
A.外模式
B.内模式 √
C.概念模式
D.逻辑模式
解析:
[解析]内模式出了数据库物理存储结构与物理存取方法。
它处于最底层,反映了数据在计算机物理结构中的实际存储形式。
5.在满足实体完整性约束的条件下______。
(分数:
2.50)
A.一个关系中应该有一个或多个候选关键字 √
B.一个关系中只能有一个候选关键字
C.一个关系中必须有多个候选关键字
D.一个关系中可以没有候选关键字
解析:
[解析]一个关系对应脱实世界中一个实体集。
现实世界中的实体是可以相互区分、识别的,也即它们应具有某种唯一性标识。
在关系模式中,以主关键字作为唯一性标识,而主关键字中的属性(称为主属性)不能取空值,否则,表明关系模式中存在着不可标识的实体(因空值是“不确定/”的),这与现实世界的实际情况相矛盾,这样的实体就不是一个完整实体。
按实体完整性规则要求,主属性不得取空值,如主关键字是多个属性的组合,则所有主属性均不得取空值。
6.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是______。
(分数:
2.50)
A.自然连接
B..并
C..交
D..差 √
解析:
[解析]①并:
没有两个关系R和S,它们具有相同的结构。
R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。
记为T=R∪S。
②差:
R和S的差是由属于R但不属于S的元组组成的集合,运算符为一。
记为T=R-S。
③交:
R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。
记为T=R∩S。
R∩S=R(R-S)。
综上所述,答案选D。
7.软件生命周期的活动中不包括______。
(分数:
2.50)
A.市场调研 √
B.需求分析
C.软件测试
D.软件维护
解析:
[解析]软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级剑废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
8.下面不属于需求分析阶段任务的是______。
(分数:
2.50)
A.确定软件系统的功能需求
B.确定软件系统的性能需求
C.需求规格说明书评审
D.制订软件集成测试计划 √
解析:
[解析]需求分析:
开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:
(1)问题识别:
双方确定对问题的综合需求,这些需求包括功能需求、性能需求、环境需求、用户界面需求。
(2)分析与综合,导出软件的逻辑模型。
(3)编写文档:
包括编写”需求规格说明书”、”初步用户使用手册”、”确认测试计划”、”修改完善软件开发计划”。
9.在黑盒测试方法中,设计测试用例的主要根据是______。
(分数:
2.50)
A.程序内部逻辑
B.程序外部功能 √
C.程序数据结构
D.程序流程图
解析:
[解析]因为黑盒测试是对代码不可见的,所以和代码相关的内部逻辑、数据结构、程序流程都是不能选的。
10.在软件设计中不使用的工具是______。
(分数:
2.50)
A.系统结构图
B.PAD图
C.数据流图(DFD图) √
D.程序流程图
解析:
[解析]系统结构图:
是对软什系统结构的总体设计的图形显示。
在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在慨要设计阶段用到的。
PAD图PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,是在详细设计阶段用到的。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是存可行性研究阶段用到的,所以存设计阶段不用这个。
故答案选C。
11.下列叙述中,不属于结构化分析方法的是______。
(分数:
2.50)
A.面向数据流的结构化分析方法
B.面向数据结构的Jackson方法
C.面向数据结构的结构化数据系统开发方法
D.面向对象的分析方法 √
解析:
[解析]常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。
其中结构化分析方法又包括面向数据流的结构化分析方法(StructuredAnalysis,SA)、面向数据结构的Jackson方法(JacksonSystemDevelopmentmethod,JSD)和面向数据结构的结构化数据系统开发方法(DataStructuredSystemDevelopmemtmethod,DSSD)。
12.检查软件产品是否符合需求定义的过程称为______。
(分数:
2.50)
A.确认测试 √
B.集成测试
C.验证测试
D.验收测试
解析:
[解析]确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。
13.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
下列图符名标识的图符不属于数据流图合法图符的是______。
(分数:
2.50)
A.控制流 √
B.加工
C.数据存储
D.源和潭
解析:
[解析]数据流图中◇的主要图形元素有加工、数据流、存储文件和源。
14.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是______。
(分数:
2.50)
A.数据库系统 √
B.文件系统
C.人工管理
D.数据项管理
解析:
[解析]数据管理发展至今已经历了三个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
15.数据库系统的核心是______。
(分数:
2.50)
A.数据库
B.数据库管理系统 √
C.数据模型
D.软件工具
解析:
[解析]数据库管理系统是数据库系统的核心。
16.若一个函数的原型为“int*Xfun1(intx.int&y,charz);”,则该函数的返回值类型为______。
(分数:
2.50)
A.int* √
B.int
C.int&
D.char
解析:
[解析]函数的结果被称为返回值,返回值的类型被称为函数返回类型。
函数返回类型可以是预定义类型(如int或double)、复合类型(如int&或double*)、用户定义类型(如枚举类或void后者意指函数不返回值)。
17.若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。
如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为______。
(分数:
2.50)
A.AA.getA()
B.getA() √
C.a
D.AA:
:
a
解析:
[解析]C++静态成员和静态成员函数的使用:
静态成员的调用格式:
类名:
:
静态数据成员名、对象名.静态数据成员名、对象指针->静态数据成员、对象引用.静态数据成员。
静态成员函数的调用格式:
类名:
:
静态成员函数名、对象名.静态成员函数名、对象指针->静态成员函数名、对象引用.静态数据成员。
静态成员函数没有this指针,因它不与特定对象相联系,调用时使用“类名:
:
静态成员函数名”格式。
18.当派生类继承一个基类时,默认的继承方式为______。
(分数:
2.50)
A.public
B.protected
C.private √
D.不确定
解析:
[解析]不管在单继承还是在多重继承的定义格式中,访问方式即继承方式,可以为public、private或protected,如果省略,则默认为private方式。
故答案选C。
19.若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是______。
(分数:
2.50)
A.XVoperator*(XV,XV);
B.XV*(XV);
C.operator*(XV);
D.XVoperator*(XV); √
解析:
[解析]运算符重载形式有两种:
一种是重载为类的成员函数;另一种是重载为类的友员函数。
具体格式:
函数类型operator运算符(参数表)
{
函数体:
}
20.在定义函数模板或类模板时,开头的保留字是______。
(分数:
2.50)
A.typename
B.template √
C.class
D.typedef
解析:
[解析]template是一个声叫模板的天键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个,每个形参前都要加class<类型形参表>可以包含基本数据类型可以包含类类型。
故答案选A。
21.若需要向一个二进制文件尾部添加数据,则该文件的打开方式为______。
(分数:
2.50)
A.ios_base:
:
app
B.ios_base:
:
binary|ios_base:
:
out √
C.ios_base:
:
out
D.ios_base:
:
binary|ios_base:
:
app
解析:
[解析]打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:
ios:
:
app:
以追加的方式打开文件;ios:
:
atc:
文件打开后定位到文件尾,ios:
app就包含有此属性;ios:
:
binary:
以二进制方式打开文件,默认的方式是文本方式。
两利一方式的区别见前文;ios:
:
in:
文件以输入方式打开;ios:
:
out:
文件以输出方式打开;ios:
:
nocreate:
不建立文件,所以文件不存在时打开失败;ios:
:
noreplace:
不覆盖文件,所以打开文件时如果文件存在失败;ios:
:
trunc:
如果文件存存,把文件长度设为0;可以用“或”把以上属性连接起来,如ios:
:
out|ios:
:
binary。
22.在开发一个C++程序的整个过程中,第3个步骤为______。
(分数:
2.50)
A.链接 √
B.运行
C.编辑
D.编译
解析:
[解析]在开发一个C++程序的整个过程中,经过以下几个步骤:
编辑→编洋→链接→运行。
故答案为A。
23.若有定义“intx=4,y=5;”,则表达式“y>x++?
x--:
y++”的值为______。
(分数:
2.50)
A.3
B.4
C.5 √
D.6
解析:
[解析]“条件表达式”是C++中可以产生“真”和“假”结果的任何表达式,如果条件表达式的结果为“真”,则执行表达式1,否则执行表达式2。
24.有如下程序:
#include<iostream>
usingnamespacestd;
intmain(){
inti,s=0;
for(i=1;s<20;i+=2)s+=i*i;
cout<<i<<endl;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.3
B.5
C.7
D.9 √
解析:
[解析]for语句执行过程如下:
①先求解表达式1;②求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下而第③步。
若为假(值为0),则结束循环,转到第⑤步;③求解表达式3;④转回上而第②步骤继续执行;⑤循环结束,执行for语句下面的一个语句?
25.若字符指针p所指向的字符串为”abcdefg”,在执行语句char*ap=newchar[strlen(p)+1];之后,ap指向的字符数组的元素个数为______。
(分数:
2.50)
A.9
B.8 √
C.7
D.6
解析:
[解析]“char*ap=newchar[strlen(str)+1];”语句的意思是“动态分配一个长度为strlen(str)+1的字符数组空间,并把数组首地址赋给指针变量char*ap”,而strlen(str)是头文件“abcdefg”中计算字符串长度的函数。
26.有如下程序:
#include<iostream>
usingnamespacestd;
voidf1(int&x){x++;}
voidf2(intx){++x;}
intmain(){
intx=10,y=12;
f1(x);
f2(y);
cout<<x+y<<endl;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.22
B.23 √
C.24
D.25
解析:
[解析]该题考查的是虚函数的调用。
27.有如下程序:
#include<iostream>
usingnamespacestd;
classXA{
inta;
public:
staticintb;
XA(intaa):
a(aa){b++;}
intgetA(){returna;}
};
intXA:
:
b=0;
intmain(){
XAd1(4),d2(5);
cout<<d1.getA()+d2.getA()+XA:
:
b+d1.b<<endl;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.9
B.11
C.13 √
D.15
解析:
[解析]该题考查的是构造函数的问题。
28.有如下程序:
#include<iostream>
usingnamespacestd;
classXX{
intx;
public:
XX(intxx=0):
x(xx){}
intgetX(){returnx;}
};
classYY:
publicXX{
inty;
public:
YY(intxx,intyy):
x(xx),y(yy){}
intgetV(){returngetX()+y;}
};
intmain(){
YYc(3,4);
cout<<c.getV()+c.getX()<<endl;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.3
B.4
C.7 √
D.10
解析:
[解析]该题考查的是析构函数的问题。
29.在类中重载赋值运算符时,应将其声明为类的______。
(分数:
2.50)
A.静态函数
B.友元函数
C.成员函数 √
D.构造函数
解析:
[解析]实际上不一定是必需的,保证运算符重载函数在同一个名字空间里就行了。
不过如果不是成员函数或者友元,不能直接访问类的私有成员。
另外,C++里赋值=、下标[]、调用()和成员访问箭头->操作符必须被定义为类成员操作符。
30.若有函数模板mySwap和一些变量定义如下:
template<classT>
voidmySwap(TX,TY);
doubled1,d2;inti1,i2;
下列对mySwap的调用中,错误的是______。
(分数:
2.50)
A.mySwap(i1,i2)
B.mySwap(d1,d2)
C.mySwap(i1,d1)
D.mySwap<int>(i2,d2) √
解析:
[解析]template<classidentifier>function_declaration;template<typenameidentifier>function_declaration;
上面两种原型定义的不同之处在关键字class或typename的使用。
它们实际是完全等价的,因为两种表达的意思和执行都一样。
31.在C++中,打开一个文件时与该文件建立联系的是______。
(分数:
2.50)
A.流对象 √
B.模板
C.函数
D..类
解析:
[解析]打开文件就是将该文件与输入/输出流建立了联系。
32.已知类IMS中两个成员函数的声明为“voidlisten()const;”与“voidspeak();”,另有两个对象的定义为“IMSobj1;”与“constIMSobj2;”,则下列语句中,产生编译错误的是______。
(分数:
2.50)
A.obj1.listen();
B.obj1.speak();
C.obj2.listen();
D.obj2.speak(); √
解析:
[解析]引用,其实就是给某个变量起个别名,这个别名代表的还是那个变量,如果用这个别名使用这个变量,那么使用的就是变量的本身。
如果对这个别名的内容进行修改,那么修改的就是被绑定别名的变量的本身。
如果对引用加上const限定,那么,别名就不能在修改变量本身。
33.有如下程序:
#include<iostream>
usingnamespacestd;
classMonkey{
public:
Monkey(){cout<<"M";}
Monkey(charn){cout<<n;}
~Monkey(){cout<<"Y";}
};
intmain(){
Monkeyp1,*p2;
p2=newMonkey("X");
deletep2;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.MYX
B.MYMY
C.MXY
D.MXYY √
解析:
[解析]该题考查的是析构函数的问题。
34.有如下程序:
#include<iostream>
usingnamespacestd;
classBoat;
classCar{
public:
Car(inti):
weight(i){}
friendintTotal(constCar&c.constBoat&b);//①
private:
intweight;
};
classBoat{
public:
Boat(inti):
weight(i){}
friendintTotal(constCar&c,constBoat&b);
private:
intweight;
};
intTotal(constCar&c,constBoat&b){//②
returnc.weight+b.weight;
}
intmain(){
Carc(10);
Boatb(8);
cout<<"Thetotalweightis"<<Total(c,b)<<endl;//③
return0;
}
下列关于程序的描述中,正确的是______。
(分数:
2.50)
A.程序编译正确
B.程序编译时语句①出错 √
C.程序编译时语句②出错
D.程序编译时语句③出错
解析:
[解析]该题考查的是由友员函数的问题。
第一句中友元函数重载应该把点号换为逗号。
35.有如下程序:
#include<iostream>
usingnamespacestd;
classMedia{
public:
voidName();
voidShow();
protected:
intpage;
};
classBook:
privateMedia{
public:
voidPrint(){cout<<page<<endl;}
voidShow(){Media:
:
Show();}//①
};
intmain(){
BookBible;
Bible.Name();//②
Bible.Print();//③
Bible.Show();//④
return0;
}
编译时有错误的是______。
(分数:
2.50)
A.语句①
B.语句② √
C.语句③
D.语句④
解析:
[解析]类名“Name”,不能访问公共内存,函数在执行到这句时自动结束。
36.有如下程序:
#include<iostream>
usingnamespacestd;
classBase{
public:
virtualvoidShow(){cout<<"B";}
};
classDerived:
publicBase{
public:
voidShow(){cout<<"D";}
};
intmain()(
Base*p1=newDerived;
Derived*p2=newDerived;
p1->Show();
p2->Show();
deletep1;
deletep2;
return0;
}
运行这个程序的输出结果是______。
(分数:
2.50)
A.BB
B.BD
C.DB
D.DD √
解析:
[解析]该题考查的是C++中delete函数的应用。
37.有如下类定义:
classAnimal{
public:
virtualvoidName()=0;
};
classKoala:
publicAnimal{
public:
voidName()