国家二级C++机试(选择题)-试卷28
(总分:80.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列链表中,其逻辑结构属于非线性结构的是
(分数:2.00)
 A.二叉链表 
 B.循环链表
 C.双向链表
 D.带链的栈
解析:解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。
在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。
2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为
(分数:2.00)
 A.15
 B.16
 C.20
 D.0或35 
解析:解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向
排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。
3.下列关于栈的叙述中,正确的是
(分数:2.00)
 A.栈底元素一定是最后入栈的元素
 B.栈顶元素一定是最先入栈的元素
 C.栈操作遵循先进后出的原则 
 D.以上说法均错误
解析:解析:栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或"后进先出"表,所以选择C。
4.在关系数据库中,用来表示实体间联系的是
(分数:2.00)
 A.属性
 B.二维表 
 C.网状结构
 D.树状结构
解析:解析:关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体
5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是
(分数:2.00)
 A.1:1联系
 B.m:1联系
 C.1:m联系 
 D.m:n联系
解析:解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。
6.有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为(  )。
(分数:2.00)
 A.选择 
 B.投影
 C.自然连接
 D.并
解析:解析:由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。
7.数据字典(DD)所定义的对象都包含于
(分数:2.00)
 A.数据流图(DFD图) 
 B.程序流程图
 C.软件结构图
 D.方框图
解析:解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。
8.软件需求规格说明书的作用不包括
(分数:2.00)
 A.软件验收的依据
 B.用户与开发人员对软件要做什么的共同理解
 C.软件设计的依据
 D.软件可行性研究的依据 
解析:解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。①便于用户、开发人员进行理解和交流,B正确;②反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;③作为确认测试和验收的依据,A正确。
9.下面属于黑盒测试方法的是
(分数:2.00)
 A.语句覆盖
 B.逻辑覆盖
 C.边界值分析 
 D.路径覆盖
解析:解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。
10.下面不属于软件设计阶段任务的是
(分数:2.00)
 A.软件总体设计
 B.算法设计
 C.制定软件确认测试计划 
 D.数据库设计
解析:解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。
11.下列字符中,不允许作为 C++ 标识符的是
(分数:2.00)
 A.a
 B.a
 C.C
 D.23 
解析:解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。所以D选项错误。
12.下列叙述中,错误的是
(分数:2.00)
 A.false 是一个逻辑型常量
 B.0 是一个字符型常量 
 C.1481 是一个int常量
 D.1.732 是一个double常量
解析:解析:本题主要考查了常量的类型,其中B选项中"0"中由于是双引号,所以是字符串,单引号表示字符常量,所以B选项错误。
13.若x和y是程序中的两个整型变量,则下列 if 语句中正确的是
(分数:2.00)
 A.if(x!=0) y=1; else y=2; 
 B.if(x!=0) y=1 else y=2;
指向类成员函数的指针
 C.if(x!=0) then y=1 else y=2;
 D.if x!=0 y=1; else y=2;
解析:解析:本题考查if语句,if语句一种形式为: if(表达式1)语句1 else 语句2 只有A选项是正确的
14.要定义整型数组 x,使之包括初值均为 1 的三个元素,下列语句正确的是
(分数:2.00)
 A.static int x[3]={1};
 B.int x[]={1};
 C.int x[3]={1,1,1}; 
 D.int x={1,1,1};
解析:解析:本题考查一维数组及其初始化,A选项中为静态一维数组,三个元素必须全部初始化,B选没有指明是三个元素,D选项赋值错误,C选项正确。
15.下列选项中,正确的 C++ 表达式是
(分数:2.00)
 A.a+b=c
&unt3+
&++9
 D.88 == b 
解析:解析:本题考查C++基本的表达式用法,属于基本知识,可以看出只有D选项正确。
16.若已经定义了如下的函数: int f(int i,char c);则下列函数中可以作为此函数的重载函数的是
(分数:2.00)
 A.int f(int i, char c, char b='?');
 B.int f(int j, char b);
 C.char f(char c,int i); 
 D.char f(int i, char c);
解析:解析:本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。A选项的形参有三个,且前两个形参与题目中的函数相同,B、D选项参数个数和类型都与题目中相同,所以不能作为重载函数。C选项总函数的参数类型与题目中不同,所以可以作为重载函数。
17.下列有关运算符重载的表述中,正确的是
(分数:2.00)
 A.通过重载运算符时可以改变运算符的结合性
 B.通过运算符重载可以创造新的运算符
 C.C++ 中所有运算符都可以重载为非成员函数
 D.运算符重载是多态性的一种表现 
解析:解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为D。
18.已知int型变量 y 的初值是 5,但在执行语句"f(y);"后,y 的值被改变,因此该语句所调用函数的原型是
(分数:2.00)
 A.void f(int x);
 B.void f(int *x);
 C.void f(const int *x);
 D.void f(int &x); 
解析:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference) 传值时
子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,A选项属于此类。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。D选项属于此类,所以D选项正确。
19.要将前缀运算符 -- 重载为 Incr 的非成员函数,下列原型中,可作为该重载函数原型的是
(分数:2.00)
 A.Incr& operator --();
 B.Incr operator --(int);
 C.Incr& operator --(Incr&); 
 D.Incr operator --(Incr&,int);
解析:解析:本题考查重载运算符,题目中要求将运算符 -- 重载为 Incr 的非成员函数,只有C选项能够将运算符重载为非成员函数。
20.下列函数原型声明中,错误的是
(分数:2.00)
 A.int function( int , int);
 B.int function( int = 3, int = 0);
 C.int function( int m = 3, int n); 
 D.int function( int &m, int &n);
解析:解析:在函数原型中指定默认参数值时,如果函数中有多个参数,则默认参数应从右至左定义,否则就是无效的,故本题选C。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。