国家二级(C++)机试模拟试卷118
选择题
1.下列数据结构中,能用二分法进行查找的是( )。(D)
A. 无序线性表
B. 线性链表
C. 二叉链表
D. 顺序存储的有序表
解析:二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
2.下列叙述中,不属于设计准则的是( )。(C)
A. 提高模块独立性
B. 使模块的作用域在该模块的控制域中
C. 设计成多入口、多出口模块
D. 设计功能可预测的模块
解析:大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块独立性:模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。
3.下列队列的描述中,正确的是( )。(D)
A. 队列属于非线性表
B. 队列在队尾删除数据
C. 队列按“先进后出”进行数据操作
D. 队列按“先进先出”进行数据操作
解析:队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。
4.对下列二树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:
①前序,访问根→按前序遍历左子树→按前序遍历右子树。
②中序,按中序遍历左子树→访问根→按中序遍历右子树。
③后序,按后序遍历左子树→按后序遍历右子树→访问根。
所以对该二叉树的中序遍历结果为ABDGEHCF。
5.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(A)
A. 冒泡排序为n(n-1)/2
B. 简单插入排序为n
C. 希尔排序为n
D. 快速排序为n/2
解析:在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2:简单插入排序所需要的比较次数为n(n-1)/2;希尔排序所需要的比较次数为O(n1.5);堆排序所需要的比较次数为O(nlog2n)。
6.为了使模块尽可能独立,要求( )。(B)
A. 内聚程度要尽量高,耦合程度要尽量强
B. 内聚程度要尽量高,耦合程度要尽量弱
C. 内聚程度要尽量低,耦合程度要尽量弱
D. 内聚程度要尽量低,耦合程度要尽量强
解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
7.下列选项中不属于软件生命周期开发阶段任务的是( )。(C)
A. 软件测试
B. 概要设计
C. 软件维护
D. 详细设计
解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。
8.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。(D)
A. 数据与程序独立存放
B. 不同的数据被存放在不同的文件中
C. 不同的数据只能被对应的应用程序所使用
D. 以上三种说法都不对
解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。所以选项A,选项B和选项C都不正确。
9.在学校中,“班级”与“学生”两个实体集之间的联系属于( )关系。(B)
A. 一对一
B. 一对多
C. 多对一
D. 多对多
解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。
10.软件调试的目的是( )。(C)
A. 发现错误
B. 改善软件的性能
C. 改正错误
D. 验证软件的正确性
解析:在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。
11.在公有派生时,派生类中定义的成员函数只能访问原基类的( )。(C)
A. 私有成员、保护成员和公有成员
B. 保护成员和私有成员
C. 公有成员和保护成员
D. 公有成员和私有成员
解析:派生类中的成员,一部分是从基类继承来的,另一部分是自己定义的新成员,所有的这些成员也分为公有、私有和保护三种访问权限。其中,从基类继承下来的全部成员构成派生类的基类,这部分的私有成员是派生类不能直接访问的,而公有成员和保护成员则是派生类可以直接访问的,但它们在派生类中的访问属性随着派生类对基类的继承方式而改变。
12.有如下定义:
int b[10]={1,2,3,4,5,6,7,8,9,10},*q=b;
则数值为8的表达式是( )。(B)
A. *q+8
B. *(q+7)
C. *q+=8
D. q+7
解析:数组的下标是从0到数组的长度减1。*(p+i)是取数组的第i+1个元素,即下标为i的元素。因此*(p+7)取数组的第八个元素,即元素8。
13.下面的符号中可以用作C++标识符的是( )。(D)
A. 3test
B. fcc~other
C. else
D. radius
解析:C++标识符是以字母、下划线开头的,由字母、数字及下划线组成的,不与关键字相同的字符串。选项C中else为关键字。
14.下列程序执行后,输出的结果是( )。
int x=-5,y=0;
while(++x)
y++;
cout<<y<<endl;(C)
A. 1
B. 2
C. 4
D. 5
解析:循环条件是++x,在C++中;对于非0值全都为真,0代表假。x的初始值为-5,所以循环能进行4次。
15.有如下类声明:
class TestClass
{
intn;
public:
TestClass(int i=0):n(i){}
void setValue(int n0);
};
下面关于setValue成员函数的实现中,正确的是( )。
B
解析:C++中类成
本文档预览:3600字符,共15311字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载