国家二级(C++)机试模拟试卷161
(总分:86.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列数据结构中,不能采用顺序存储结构的是( )。
(分数:2.00)
 A.非完全二叉树 
 B.堆
 C.队列
 D.栈
字符串函数怎么获取解析:解析:根据完全二叉树的性质6,满二叉树和完全二叉树可以按层序进行顺序存储,但一般的二叉树不适用。堆可以用一维数组来存储也可以用完全二叉树来直观地表示堆的结构。
队列、栈本身就是顺序存储的。故本题答案为A选项。
2.下列叙述中错误的是( )。
(分数:2.00)
 A.二叉链表是二叉树的存储结构
 B.循环链表是循环队列的存储结构 
 C.栈是线性结构
 D.循环队列是队列的存储结构
解析:解析:循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。循环链表是用不连续的存储单元存储数据,它有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点。二叉链表是树的二叉链表实现方式。栈是一种特殊存取方式的线性表。故本题答案为B选项。
3.设一棵树的度为4,其中度为4,3,2,1的结点个数分别为2,3,3,0。则该棵树中的叶子结点数为( )。
(分数:2.00)
 A.16 
 B.15
 C.17
 D.不可能有这样的树
解析:解析:根据题目,树的结点数=4×2+3×3+2×3+1×0+根结点=8+9+6+0+1=24,即总结点数为24,总结点数减去度不为O的结点数即是叶子结点,24-(2+3+3)=16。故本题答案为A选项。
4.循环队列的存储空间为Q(1:100),初始状态为front=rear=100。经过一系列正常的入队与退队操作后,front=rear=99,则循环队列中的元素个数为( )。
(分数:2.00)
 A.1
 B.2
 C.99
 D.0或100 
解析:解析:在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、人队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于人队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。故本题答案为D选项。
5.某系统结构图如下图所示该系统结构图的宽度是( )。
(分数:2.00)
 A.5 
 B.4
 C.2
 D.1
解析:解析:系统结构图的宽度指整体控制跨度(横向最大模块数)的表示。本题中,模块数最多的是第3层,即“功能X.X”的模块个数就是宽度,有5个。故本题答案为A选项。
6.软件测试用例包括( )。
(分数:2.00)
 A.被测程序和测试规程
 B.测试计划和测试数据
 C.输入数据和预期输出结果 
 D.输入数据和输出数据
解析:解析:测试用例(Test Case)是为测试设计的数据,由测试输入数据和与之对应的预期输出结构两部分组成。故本题答案为C选项。
7.软件生存周期中,解决软件“怎么做”的阶段是( )。
(分数:2.00)
 A.软件设计 
 B.需求分析
 C.软件测试
 D.可行性研究
解析:解析:软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即解决软件“怎么做”的问题。故本题答案为A选项。
8.用树型结构表示实体之间联系的模型是( )。
(分数:2.00)
 A.关系模型
 B.层次模型 
 C.网状模型
 D.运算模型
解析:解析:用树形结构表示实体及其之间联系的模型称为层次模型。在层次模型中,结点是实体,树枝是联系,从上到下是一对多的关系。故本题答案为B选项。
9.关系数据模型的三个组成部分中不包括( )。
(分数:2.00)
 A.关系的完整性约束
 B.关系的数据操纵
 C.关系的数据结构
 D.关系的并发控制 
解析:解析:关系数据模型的三个组成部分:数据结构,操作集合(数据操纵),完整性约束。故本题答案为D选项。
10.现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,Date为就诊日期,Rt为诊断结果。检索在1号医生处就诊的病人姓名的表达式是( )。
(分数:2.00)
 A.π PnP#D#=1 (Tr)) P) 
 B.π P#D#=1 (Tr))
 C.π Pn (P)
 D.π Pn (Tr P)
解析:解析:π表示投影运算,针对属性;σ表示选择运算,针对元组; 表示自然连接。首先在Tr表中选择D#为1的记录σ D#=1 (Tr),并检索这些记录中患者的编号π P#D# (Tr)),检索结果与表P进行自然连接生成中间表π P#D#=1 (Tr)) P,最后在中间表中检索患者的姓名π PnP#D#=1 (Tr)) P)。故本题答案为A选项。
11.下列选项中,不属于C++关键字的是( )。
(分数:2.00)
 A.namespace
 B.public
 C.struct
 D.abstract 
解析:解析:namespace是定义命名空间的关键字,选项A正确;public关键字在类定义体中指定公共成员,在类继承体系中指定公有继承,选项B正确;struct关键字定义结构体类型,选项C正确;adstruct不属于C++关键字,选项D错误。故本题答案为D选项。
12.下列数组定义中错误的是( )。
(分数:2.00)
 A.char s[5]="ABCDE"; 
 B.char s[6]="ABCDE";
 C.char s[7]="ABCDE";
 D.char s[]="ABCDE";
解析:解析:常量字符串“ABCDE”中,结尾还保存一个空字符'\0',总共有6个字符,所以字符数组s使用常量字符串初始化时,s的数组大小必须大于等于6,选项B、C正确;另外在对字符数组初始化时,若省略数组长度,系统会默认将数组长度设置为常量字符串的长度6,
选项D正确;选项A中数组长度5不够容纳该常量字符串,所以A错误。故本题答案为A选项。
13.下列语句中,未起到定义作用的是( )。
(分数:2.00)
 A.char ch;
 B.void fun(); 
 C.int y=2015;
&pedef double price;
解析:解析:选项A定义一个字符变量ch;选项C定义整型y,并初始化为2015;选项D定义一种类型名price,该类型等价于double;选项B声明了函数fun,该函数没有参数,没有返回值,声明不是定义,选项B错误。故本题答案为B选项。
14.下列程序段的作用是计算正整数n的各位数字的平方和,则横线处缺失的内容是( )。in tn=1234,sum=0;do{sum+=______________;n=n/10;}while(n!=0);
(分数:2.00)
 A.(n%10)*(n%10) 
 B.(n/10)*(n/10)
 C.(n%10)*(n/10)
 D.(n%10)
解析:解析:题意要求计算正整数n的各个数字的平方和,并将平方和存放到sum中,所以首先需要获取n的各个位上的数字,程序通过do…while()循环,每次循环取出n的一位数字,数字平方后累加到sum中,然后语句n=n/10将n的个位数字去掉,并将去掉个位数字的值重新赋给n,进入下一轮循环,直到n为0,可知:横线部分需要在n去掉个位数字前,得到n的个位数字并平方,累加到sum中,要想获得一个正整数的个位数字,只需要将n对10求模即可,所以答案为(n%10)*(n%10)。故本题答案为A选项。
15.有如下函数原型long f(double d);则在保持语义不变的前提下,可以省略的部分是( )。
(分数:2.00)
 A.long
 B.f
 C.double
 D.d 
解析:解析:由语句:long f(long d);可知:第一个long表示函数的返回值;f表示函数名;第二个long表示参数类型;d表示参数名;又由语句最后的分号可知:这条语句是一个函数声明语句,在函数声明语句中,可以省略参数名,所以本题可以省略参数名d。故本题答案为D选项。
16.下列关于函数默认参数的叙述中,正确的是( )。
(分数:2.00)
 A.在调用函数时,默认参数必须省略
 B.默认参数应从右至左逐个定义 
 C.若有多个默认参数,调用时可以省略其中任何一个或多个
 D.默认参数必须在函数定义中设置
解析:解析:函数参数中,如果有一个形参是默认参数,那么它后面所有的形参都必须是默认参数,也就是说默认参数应自右至左逐个定义,选项B正确;调用包含默认参数的函数时,可以为该形参提供实参,也可以不提供,选项A错误;若有多个默认参数,在函数调用时,其中一个参数使用了默认值,那么后面所有的参数都必须使用默认值,选项C错误;既可以在函数声明也可以在函数定义中指定默认参数,但是一个文件中,只能为一个形参指定默认参数一次,选项D错误。故本题答案为B选项。
17.下列关于函数的叙述中,正确的是( )。
(分数:2.00)
 A.函数体中只能出现一条return语句
 B.重载函数可以有相同的返回值类型 
 C.函数的默认参数可以随意定义
 D.函数定义和调用没有先后次序要求
解析:解析:函数可以有多条return语句,但只有一条语句被执行,选项A错误;出现在相同作用域中的两个函数,如果具有相同的函数名,而形参表不同,称为重载函数,所以重载函数可以有相同的返回值类型,选项B正确;函数参数中,如果有一个形参是默认参数,那么它后面所有的形参都必须是默认参数,也就是说默认参数应自右至左逐个定义,而不能随便定义,选项C错误;函数和变量一样,在调用(使用)前必须先定义,选项D错误。故本题答案为B选项。
18.下列运算符中,可以重载为非成员函数的是( )。
(分数:2.00)
 A.=
 B.>> 
 C.[]
 D.()
解析:解析:赋值操作符=、下标操作符[]和箭头操作符一>必须定义为类成员函数,而输入输出操作符可以定义为非成员函数。故本题答案为B选项。
19.下列关于内联函数的叙述中,错误的是( )。

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