全国计算机等级测验二级c++题库共套.docx
《全国计算机等级测验二级c++题库共套.docx》由会员分享,可在线阅读,更多相关《全国计算机等级测验二级c++题库共套.docx(22页珍藏版)》请在冰豆网上搜索。
全国计算机等级测验二级c++题库共套
全国计算机等级测验二级c++题库(共套)
————————————————————————————————作者:
————————————————————————————————日期:
第十二套
1、检查软件产品是否符合需求定义的过程称为______。
A、确认测试
B、集成测试
C、验证测试
D、验收测试
确认测试的任务是严整软件的功能和性能及其他特性是否满足了需求规格说明中的确定的各种需求,以及软件配置是否完全、正确。
本题答案为A。
2、下列工具中为需求分析常用工具的是______。
A、PAD
B、PFD
C、N-S
D、DFD
常见的需求分析方法有:
结构化分析方法和面向对象的分析方法。
结构化分析的常用工具有:
数据流图(DFD)、数据字典(DD)、判定树和判定表等。
本题答案为D。
3、数据的存储结构是指______。
A、数据所占的存储空间量
B、数据的逻辑结构在计算机中的表示
C、数据在计算机中的顺序存储方式
D、存储在外存中的数据
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。
本题答案为B。
4、算法一般都可以用哪几种控制结构组合而成______。
A、循环、分支、递归
B、顺序、循环、嵌套
C、循环、递归、选择
D、顺序、选择、循环
算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。
一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。
本题答案为D。
5、设有下列二叉树:
对此二叉树中序遍历的结果为______。
A、ABCDEF
B、DBEAFC
C、ABDECF
D、DEBFCA
所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
本题答案为B。
6、在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。
A、调用语句
B、命令
C、口令
D、消息
面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。
消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
本题答案为D。
7、在关系数据库中,用来表示实体之间联系的是______。
A、树结构
B、网结构
C、线性表
D、二维表
在关系数据库中,用二维表来表示实体之间联系。
本题答案为D。
8、索引属于______。
A、模式
B、内模式
C、外模式
D、概念模式
内模式(InternalSchema)又称物理模式(PhysicalSchema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。
本题答案为B。
9、下面不属于软件设计原则的是______。
A、抽象
B、模块化
C、自底向上
D、信息隐蔽
在软件设计过程中,必须遵循软件工程的基本原则:
这些原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可靠性。
本题答案为C。
10、将E-R图转换到关系模式时,实体与联系都可以表示成______。
A、属性
B、关系
C、键
D、域
关系是由若干个不同的元组所组成,因此关系可视为元组的集合,将E-R图转换到关系模式时,实体与联系都可以表示成关系。
本题答案为B。
11、关于纯虚函数,下列表述正确的是______。
A、纯虚函数是没有给出显现版本(即无函数体定义)的虚函数
B、纯虚函数的声明总是以"=0"结束
C、派生类必须实现基类的纯虚函数
D、含有纯虚函数的类不可能是派生类
本题考查纯虚函数的概念。
在某些情况下基类无法确定一个虚函数的具体操作方法或内容,只能靠派生类来提供各个具体的实现版本。
基类中的这种必须靠派生类提供重定义的虚函数叫做纯虚函数。
为了将一个虚函数声明为一个纯虚函数,需要在结束符号;前加上=0;如果派生没有重定义纯虚函数,这个函数仍然是纯虚函数。
故本题选B。
12、下列程序的输出结果是______。
#include
usingnamespacestd;
intmain()
{
inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
else
c+=1;
cout<return0;
}
A、0
B、1
C、2
D、3
本题考查的是if--else结构。
为了解决if--else结构中可能出现的二义性,C++中规定关键字是与它前面最近的未配对的且可见的那个if关键字配对。
所以本题的else是和第二个if配对的。
而本题第一个if中的条件就不成立,故最后输出c原来的数值。
故本题选C。
13、要将一个函数声明为内联函数必须在其前面加上______。
A、void
B、include
C、inline
D、virtual
本题考查内联函数的定义。
在C++中使用inline关键字来定义内联函数。
inline关键字放在函数定义中函数类型之前。
所以本题选C。
14、下列各种函数中,______不是类的成员函数。
A、构造函数
B、析构函数
C、友元函数
D、拷贝构造函数
本题考查的是类的基本概念。
类由数据成员和成员函数组成。
友元函数是外界函数。
故本题选C。
15、对于下列函数,调用语句错误的是____。
voidshow(intid=10,char*name="hello")
{
cout<"<}
A、show(5);
B、show();
C、show(5,"abc");
D、show;
本题考查的是函数的调用。
当调用一个函数时,其实参的个数、类型及排列次序必须与函数定义时的形参一致。
如果没有定义形参或者形参都给了默认值,则调用时可以省略实参,但是括号不能够省略。
故本题选D。
16、当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为_____。
A、ios:
:
in
B、ios:
:
binary
C、ios:
:
in|ios:
:
out
D、ios:
:
out
本题考查输入输出流对象。
当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为ios:
:
out。
故本题选D。
17、一个类的友元函数能够通过成员操作符访问该类的______。
A、私有成员
B、保护成员
C、公有成员
D、公有成员、保护成员、私有成员
本题考查友元函数的概念。
友元函数不是当前类的成员函数,而是独立于当前类的外部函数,但是它可以访问该类的所有对象成员,包括公有成员、保护成员、私有成员。
故本题选D。
18、下面类定义中错误的语句是______。
classSample
{
public:
Sample(intval);
~Sample(intval);
private:
inta;
Sample();
}
A、Sample(intval);
B、~Sample(intval);
C、inta;
D、Sample();
本题考查类的定义。
对于类定义,其中的析构函数不可以带有参数。
所以本题选B。
19、每个C++程序必须有且仅有一个______。
A、函数
B、预处理指令
C、主函数
D、语句
本题考查c++的基本概念。
每一个c++程序必须有而且只能有一个主函数,每个程序的执行都是从主函数的开始的。
故本题选C。
20、类的默认的无参构造函数______。
A、仅当未定义无参构造函数时存在
B、在任何情况下都存在
C、仅当未显式定义任何构造函数时存在
D、仅当未定义有参构造函数时存在
本题考查构造函数的概念。
默认无参构造函数只有当没有显式定义任何构造函数时才存在。
故本题选C。
21、关于this指针的说法不正确的是______。
A、它是成员函数所属对象的指针
B、它是一种隐含指针,存在于每个类的非静态成员函数中
C、可以通过this.成员变量的形式访问类中的数据成员
D、成员函数访问类中数据成员的格式可写成:
this->成员变量
本题考查this指针的概念。
this指针是成员函数所属对象的指针,它指向当前类对象的地址。
this指针是一个隐含指针,它隐含于每个类的非静态成员函数中。
通过this指针访问当前对象成员有两种方式:
(*this).成员,this->成员。
故本题选C。
22、下面是关于类MyClass的定义,对定义中的各语句描述正确的是______。
classMyClass
{
public:
voidMyClass(inta){x=a}//1
intf(inta,intb)//2
{
x=a;y=b;
}
intf(inta,intb,intc=0)//3
{
x=a;y=b;z=c;
}
staticvoidg(){x=10;}//4
private:
intx,y,z;
};
A、语句1是类MyClass的构造函数的定义
B、语句2和3实现类成员函数的重载
C、类4实现对类成员变量x的更新操作
D、语句1、2、3、4都不正确
本题考查的是指针和数组。
数组名实际上是一个常量指针,存放数组第一个元素的地址。
既然是一个常量指针其值是不可改变的,所以不能有a++之类的语句。
故本题选A。
23、下列程序的功能是将数组中的所有元素全部输出,对于程序中缺少的语句,下列语句填入其中不正确的是______。
inta[]={1,2,3,4};
int*pa=a;
for(inti=0;i<4;i++)
______;
A、cout<<*a++<<''
B、cout<<*pa++<<''
C、cout<<*(a+i)<<''
D、cout<<*(pa+i)<<''
本题考查的是指针和数组。
数组名实际上是一个常量指针,存放数组第一个元素的地址。
既然是一个常量指针其值是不可改变的,所以不能有a++之类的语句。
故本题选A。
24、执行下列程序后,输出的结果是______。
intfact(intn)
{
if(n<=1)
return1;
else
returnn+fact(n-1);
}
intmain()
{
cout<return0;
}
A、1
B、4
C、10
D、15
本题考查的是递归函数。
如果一个函数直接调用它自己该函数叫直接递归。
fact(int n)函数,其中如果n>1调用了自身n-1次。
故本题选C。
25、虚函数的______可以不同。
A、函数体内容
B、返回类型
C、参数个数
D、函数名
本题考查虚函数的概念。
虚函数是一种单界面多实现版本的实现方法,即函数名、返回类型、函数类型和个数顺序完全相同,但函数体内容可以完全不同。
故本题选A。
26、下列变量名的写法中,正确的是______。
A、byte-size
B、CHINA
C、double
D、A+a
本题考查变量名的命名规则。
标识符识用户为程序中各种需要命名的的”元素“所起的名字。
这些元素:
包括变量、符号常量、函数、函数的参数、结构、类等。
标识符是以一个字母或者下划线开头有字母下划线和数字组成。
不能与任意一个关键字同名。
区分大小写。
故本题选B。
27、假定AB为一个类,px为指向该类动态对象数组的指针,该数组的长度为n,则执行"delete[]px;"语句时,自动调用该类的析构函数的次数为______。
A、0
B、1
C、n
D、n+1
本题考查的是类的析构函数的调用。
释放px是,后自动调用px所指向对象数组的析构函数,都会调用类的析构函数。
故本题选C。
28、对于结构中定义的成员,其隐含访问权限为______。
A、public
B、protected
C、private
D、static
本题考查结构体的概念。
结构体默认的访问权限是public,而类默认的访问权限是private。
故本题选A。
29、下面程序的输出结果是______。
#include//计算字符串长度
usingnamespacestd;
intfun(char*);
intmain()
{
cout<return0;
}
intfun(char*s)
{
char*t=s;
while(*t!
='\0')t++;
return(t-s);
}
A、语法错误
B、5
C、6
D、0
本题考查基本算法。
程序的功能是求一个字符串的实际长度。
在C++中字符串是以'\0'作为结束的标志的。
函数fun中while循环的进行的条件是t!
='\0'所以当循环结束t指向的是字符串的最后一个字符。
故本题选B。
30、下面语句,循环执行的次数为______。
for(inti=0;i<4;i++)
for(intj=0;j<=i;j++)
cout<<'*';
A、16
B、10
C、13
D、14
本题考查循环的基本应用。
解题思路为:
本题是一个二重循环结构,第一重循环的进行的条件是i〈4,第二重循环进行的条件是j〈=i,随着第一重循环的进行,第二重循环每次执行的次数会有相应的增加。
第一循环进行了4次,第二重循环每次执行的次数依次为1,2,3,4。
故最后循环执行了10次。
故本题选B。
31、下列运算中,______运算符在C++中不能重载。
A、?
:
B、+
C、-
D、<=
本题考查的是运算符重载。
在C++中限制“.”,“.*”,“->*”,“:
:
”,“?
:
”等操作符的重载。
故本题选A。
32、执行下列程序后,输出的结果是______。
inta=-5,b=0;
while(++a)
b++;
cout<
A、0
B、1
C、4
D、5
本题考查的是while循环。
解题思路为:
循环条件是++a,在c++中,对于非0值全都为真,0代表假。
a的初始值为-5,所以循环能得以进行4次。
故本题选C。
33、下列程序的输出结果是______。
#include
usingnamespacestd;
intn[][3]={10,20,30,40,50,60};
intmain()
{
int(*p)[3];
p=n;
cout<
return0;
}
A、103050
B、102030
C、204060
D、103060
本题考查的是二维数组和指针数组的联系。
二维数组每一行都对应一个指针,这个指针指向每行第一个元素。
题中p[0][0]与n[0][0]对应,*(p[0]+1)与n[0][1]对应,(*p)[2]与p[0][2]对应。
所以本题答案是B。
34、在一个派生类中,对基类成员、类对象成员、派生类静态成员和非类对象成员最后初始化的是______。
A、类对象成员
B、非类对象成员
C、派生类静态成员
D、基类成员
本题考查的是派生类。
建立派生类对象时,构造函数的执行顺序是,执行基类的构造函数,然后执行成员对象的构造函数,执行派生类的构造函数。
故本题选B。
35、下列关于派生类的描述中错误的是______。
A、一个派生类可以作为另一个派生类的基类
B、派生类至少有一个基类
C、派生类的缺省继承方式是private
D、派生类只继承了基类的公有成员和保护成员
本题考查了派生类的基本概念。
继承方式有3种:
公有继承、私有继承和保护继承。
如果不显式地给出继承方式,缺省的继承方式是私有继承。
派生类从基类继承来所有的成员,但是基类的私有成员派生类是不可直接访问的。
所以本题选D。
36、软件工程研究的内容主要包括:
______技术和软件工程管理。
标准答案为:
软件开发
基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:
软件开发技术和软件工程管理。
软件开发技术包括:
软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软开发方法学。
软件工程管理包括:
软件管理学、软件工程经济学、软件心理学等内容。
37、关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
标准答案为:
参照完整性
关系模型允许定义三类数据约束,它们是实体完整性、参照完整性以及用户定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。
实体完整性约束要求关系的主键中属性值不能为空,这是数据库完整性的最基本要求,因为主键是惟一决定元组的,如为空则其惟一性就成为不可能的了。
参照完整性约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:
即在关系中的外键要么是所关联关系中实际存在的元组,要么是空值。
自定义完整性是针对具体数据环境与应用环境由用户具体设置的约束,它反映了具体应用中数据的语义要求。
38、数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
标准答案为:
概念
数据模型按不同的应用层次分为三种类型,它们是概念数据模型、逻辑数据模型和物理数据模型。
概念数据模型简称概念模型,它是一种面向客观世界、面向用户的模型;它与具体的数据库管理系统无关。
逻辑数据模型又称数据模型,它是一种面向数据库系统的模型,该模型着重于在数据库系统一级的实现。
物理数据模型又称物理模型,它是一种面向计算机物理表示的模型,此模型给出了数据模型在计算机上物理结构的表示。
39、与结构化需求分析方法相对应的是______方法。
标准答案为:
结构化设计
与结构化需求分析方法相对应的是结构化设计方法。
结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。
也就是说,结构化设计是这样一个过程,它决定用哪些方法把哪些部分联系起来,才能解决好某个具体且有清楚定义的问题。
40、数据结构包括数据的______结构和数据的存储结构。
标准答案为:
逻辑
数据结构是指带有结构的数据元素的集合。
它包括数据的逻辑结构和数据的存储结构。
数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。
数据的存储结构是指在计算机存储空间中的存放形式。
41、C++中,一个float类型的变量占______个字节。
标准答案为:
4
本题考查的是基本变量类型的基本概念。
一个int类型变量占4个字节,一个float类型变量占4个字节,一个double类型的变量占8个字节。
42、执行下列语句段后程序的输出结果是______。
inta[]={1,2,3,4,5};
int*pa=a;
cout<<*(++pa)<标准答案为:
2
本题考查数组和指针的基本概念。
数组名实际上是数组第一个元素的地址。
对于本题pa=a,将a[0]的地址赋予pa,cout<<*(++pa)<所以输出2。
43、在一个类成员函数声明的前面加上______修饰,即把该函数声明为虚函数。
标准答案为:
virtual
本题考查虚函数的声明。
在C++中,运行时的多态性通过虚函数来实现的,在成员函数的声明前面加上virtual,即把该函数声明为虚函数。
虚函数可以是另一个类的友元函数,但是不得是静态成员函数。
44、执行下列程序段以后程序的输出是______。
voidadd(int&a)
{
a++;
}
intmain()
{
intb=3;
add(b);
cout<
}
标准答案为:
4
本题考查的是函数的调用和参数传递。
c++的参数传递包括传值与传地址两种。
前者是默认的参数传递方式。
如果调用函数时,须要改变实参或者返回多个值,就应该采用传地址方式。
传递指针属于显式的传地址方式,传递引用属于隐式的传地址方式。
本题采用的是传递引用,所以实参被改变。
45、模板形参分为两种类型:
虚拟类型参数和______参数。
标准答案为:
常规
本题考查模板参数的一些概念。
模板形参分为虚拟类型参数和常规类型参数。
虚拟类型参数必须用typename或者class定义,对应的实参应该是double、int等具体的类型修饰符。
常规参数用具体的类型修饰符号(如int、double)定义,对于的实参必须是常量表达式。
46、表达式8&3的结果是______。
标准答案为:
0
相当于二进制1000和0011进行与运算,答案为0000(即十进制的0)。
47、重载的关系运算符和逻辑运算符返回值类型是______。
标准答案为:
bool
本题考查的是运算符重载的一些概念。
C++把重载的运算符看做特殊的函数,称为运算符函数。
对于关系运算符和逻辑运算符的重载返回值类型应该是bool型的。
48、下列语句段的输出结果是______。
intk=1,n=10,m=1;
while(k<=n)
{
m*=2;
n--;
}
cout<标准答案为:
1024
本题考查基本的循环语句。
while循环是当型循环,本题的条件是k<=n;k的初始值为1,而每次循环都会执行n--,循环执行10次,故最后输出1024。
49、在c++中,每个类都有一个隐含的指针叫______指针。
标准答案为:
this
本题考查的是this指针的基本概念。
c++提供了一个特殊的对象指针---this指针,它是成员函数所属对象的指针,指向当前类对象的地址。
50、定义字符指针char*s="hello",已知sizeof(s)=4,则strlen(s)=______。
标准答案为:
5
本题考查的是字符串函数。
函数strlen(字符指针),求的是字符指针所指向当前字符串的实际长度,不包括'\0'。