国家二级C++机试(选择题)模拟试卷455
选择题
1.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。(D)
A. 快速排序
B. 冒泡排序
C. 直接插入排序
D. 堆排序
解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n一1)/2。
2.对于循环队列,下列叙述中正确的是( )。(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。
3.下列叙述中正确的是( )。(C)
A. 线性表链式存储结构的存储空间一般要少于顺序存储结构
B. 线性表链式存储结构与顺序存储结构的存储空间都是连续的
C. 线性表链式存储结构的存储空间可以是连续的,也可以是不连续的
D. 以上都不正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
4.数据结构主要研究的是数据的逻辑结构、数据的运算和( )。(B)
A. 数据的方法
B. 数据的存储结构
C. 数据的对象
D. 数据的逻辑存储
解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
5.下列有关函数重载的叙述中,错误的是( )。(C)
A. 函数重载就是用相同的函数名定义多个函数
B. 重载函数的参数列表必须不同
C. 重载函数的返回值类型必须不同
D. 重载函数的参数可以带有默认值
解析:所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为C。
6.下列选项中不属于软件生命周期开发阶段任务的是( )。(C)
A. 软件测试
B. 概要设计
C. 软件维护
D. 详细设计
解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。开发阶段包括概要设计、详细设计、实现和测试4个阶段。软件维护属于维护阶段。
7.下面不属于软件设计原则的是( )。(C)
A. 抽象
B. 模块化
C. 自底向上
D. 信息隐藏
解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。
8.数据字典(DD)所定义的对象都包含于( )。(A)
A. 数据流图(DFD图)
B. 程序流程图
C. 软件结构图
D. 方框图
解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
9.从工程管理角度看,软件设计一般分为两步完成,它们是( )。(A)
A. 概要设计与详细设计
B. 数据设计与接口设计
C. 软件结构设计与数据设计
D. 过程设计与数据设计
解析:软件设计是开发阶段最重要的步骤。从工程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。
10.在软件生命周期中,能准确确定软件系统必须做什么和必须具备哪些功能的阶段是(D)
A. 概要设计
B. 详细设计
C. 可行性分析
D. 需求分析
解析:软件需求是指用户对目标软件系统在功能、行为、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。
11.设有如下关系表:
(B)
A. T=R∩S
B. T=R∪S
C. T=R×S
D. T=R/S
解析:关系代数的并运算是指:设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组组成的集合,记为R∪S。形式定义为:R∪S≡{t|t∈R∧t∈S},式中t是元组变量。本题中关系T是由属于关系R的或者属于关系S的元组组成,所以T是R∪S的结果。
12.在下列关系运算中,不改变关系表.中的属性个数但能减少元组个数的是( )。(B)
A. 并
B. 交
C. 投影
D. 除
解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S,交运算不改变关系表中的属性个数但能减少元组个数。
13.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:此题考查的是运算符重载的概念。C++语言规定,“.”、“.”“->”“∷”、和“?:”这五个运算符不能被重载,故选项A错误;运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的;运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。
14.有如下程序:
#include<iostream>
using namespace std;
class XA{
int a;
public:
static int b;
XA(int aa):a(aa){b++;}
~XA(){}
int get(){return a;}
};
int XA::b=0;
int main()
XA d1(2),d2(3);
cout<<d1.get()+d2.get()+XA::b<<endl;
本文档预览:3600字符,共7141字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载