国家二级C++机试(选择题)模拟试卷196
选择题
1.下面叙述中正确的是( )。(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是—种简单的非线性结构,二叉树是树的一种。
2.某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层) ( )。(D)
A. 3
B. 6
C. 8
D. 12
解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。
3.在深度为7的满二叉树中,叶子结点的个数为(C)
A. 32
B. 31
C. 64
D. 63
解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-1=64个叶子结点。全部结点共27-1=127个。
4.从工程管理角度看,软件设计一般分为两步完成,它们是( )。(A)
A. 概要设计与详细设计
B. 数据设计与接口设计
C. 软件结构设计与数据设计
D. 过程设计与数据设计
解析:软件设计是开发阶段最重要的步骤。从工程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。
5.下列描述中正确的是( )。(D)
A. 软件测试应该由程序开发者来完成
B. 程序经调试后一般不需要再测试
C. 软件维护只包括对程序代码的维护
D. 以上三种说法都不对
解析:为了达到好的测试效果,应该由独立的第三方进行测试工作。因为从心理学角度讲,程序人员或设计方在测试自己的程序时,要采取客观的态度是会不同程度地存在障碍的,所以选项A错误。在程序调试时,修改了一个错误的同时可能引入了新的错误,解决的办法是在修改了错误之后,必须进行回归测试,所以选项B错误。所谓软件维护,就是将交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改,所以选项C错误。
6.在E-R图中,用来表示实体联系的图形是( )。(C)
A. 椭圆形
B. 矩形
C. 菱形
D. 三角形
解析:构成E.R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity)一用矩形表示;属性(Attribute)一用椭圆形表示,联系(Relationship)一用菱形表示,菱形框内写明联系名。
7.定义如下枚举类型
enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};
则下列语句正确的是( )。(A)
A. 表达式Wednesday=Friday的值是true
B. Day day;day=3
C. Day day;day=Mondday+3
D. Day day;day=Tuesday+10
解析:enum<枚举类型名>{<枚举元素表>):其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0开始,即0,1,2,3。D中的本题中的枚举类型中的数据值Wednesday为2,而Friday的值赋值为2,所以判断Wednesday等于Friday的表达式值为真,即true。即选择A。
8.负责数据库中查询操作的数据库语言是(C)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:负责数据库中查询操作的数据库语言是数据操纵语言。
9.下列语句中,正确的是( )。(A)
A. char*myString=\\
B. char myString=\\
C. char myString[11]:=\\
D. char myString[12]=\\
解析:对于B来说,会造成溢出,对于C和D来说同样如此,因为“Hello-world!”一个是12个字符组成,加上空字符一共13个,所以都会造成溢出,只有A是将字符串的地址赋给字符型指针。
10.已知数组arr的定义如下:
int arr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是( )。(D)
A. cout<<*arr+1<<end1;
B. cout<<*(arr+1)<<end1;
C. cout<<arr[1]<<end1;
D. cout<<*art<<end1;
解析:因为一维数组arr[5]的首地址是第一数组元素的地址,所以选项D)中,输出*arr的值就是数组arr[5]中第一数组元素l。其他选项都输出数组arr[5]的第二元素2。
11.下列是重载乘法运算符的函数原型声明,其中错误的是( )。(A)
A. MyClass operator*(double,double);
B. MyClass operator*(double,MyClass);
C. MyClass operator*(MyClass,double);
D. MyClass operator*(MyClass,MyClass);
解析:此题考查的是运算符重载。本题中,选项A重载运算符\\
12.已知函数fun的原型为
int fun(int,int,int);
下列重载函数原型中错误的是( )。(D)
A. char fun(int,int);
B. double fun(int,int,double);
C. int fun(int.char*);
D. float fun(int,int,int);
解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。
13.下列关于函数重载的叙述中,错误的是( )。(C)
A. 重载函数的参数个数可以不同
B. 重载函数的参数类型可以不向
C. 重载函数的返回值类型必须不同
D. 重载函数的参数个数或参数类型必须有所不同
解析:两个或两个以上的函数,具
本文档预览:3600字符,共8729字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载