国家二级C++机试(选择题)-试卷27
(总分:80.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列关于栈叙述正确的是( )。
(分数:2.00)
(分数:2.00)
A.栈顶元素最先能被删除 √
B.栈顶元素最后才能被删除
C.栈底元素永远不能被删除
D.栈底元素最先被删除
解析:解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。
2.下列叙述中正确的是( )。
(分数:2.00)
(分数:2.00)
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化 √
D.以上说法均不正确
解析:解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C。
3.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( )。
(分数:2.00)
(分数:2.00)
A.3
B.4
C.6
D.7 √
解析:解析:根据二叉树的基本性质3:在任意一棵二叉树中,多为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。
4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
(分数:2.00)
(分数:2.00)
A.学生成绩管理系统 √
B.C语言编译程序
C.UNIX 操作系统
D.数据库管理系统
解析:解析:软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B)、C)、D)都是系统软件,只有A)是应用软件。
5.结构化程序所要求的基本结构不包括( )。
(分数:2.00)
(分数:2.00)
A.顺序结构
B.GOTO跳转 √
C.选择(分支)结构
D.重复(循环)结构
解析:解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
6.下面描述中错误的是( )。
(分数:2.00)
(分数:2.00)
A.系统总体结构图支持软件系统的详细设计 √
B.软件设计是将软件需求转换为软件表示的过程
C.数据结构与数据库设计是软件设计的任务之一
D.PAD图是软件详细设计的表示工具
解析:解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A)错误。
7.负责数据库中查询操作的数据库语言是( )。
(分数:2.00)
(分数:2.00)
A.数据定义语言
B.数据管理语言
C.数据操纵语言 √
D.数据控制语言
解析:解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
8.一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是( )。
(分数:2.00)
(分数:2.00)
A.1:1联系
B.1:m联系
C.m:1联系
D.m:n联系 √
解析:解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m:n。
9.有三个关系R、S和T如下:则由关系R和S得到关系T的操作是( )。
(分数:2.00)
(分数:2.00)
A.自然连接
B.并
C.交构造函数可以被重载
D.差 √
解析:解析:关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同元组后得到的关系T。所以做的是差运算。
10.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
(分数:2.00)
(分数:2.00)
A.-369
B.369 √
C.0.369
D.整数集合{1,2,3,4,5}
解析:解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。
11.下列字符串中可以用作 C++ 标识符的是
(分数:2.00)
(分数:2.00)
A.1481var
&st-1481
&ue
D._123 √
解析:解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。C选项为C++的特定标识符,只有D选项正确。
12.下列枚举类型的定义中,包含枚举值3的是
(分数:2.00)
(分数:2.00)
&um test {LEFT, UP, RIGHT,DOWN}; √
&um test {LEFT, UP=5, RIGHT, DOWN};
&um test {LEFT=-1, UP,RIGHT, DOWN};
&um test {LEFT, UP, RIGHT=6, DOWN};
解析:解析:枚举常量的定义 enum 枚举类型名{常量1,常量2,常量3,.......};A选项包含的枚举值为0、1、2、3,B选项包含的枚举值为4、5、6、7,C选项包含的枚举值为-1、0、
1、2,D选项包含的枚举值为4、5、6、7,所以A选项正确。
13.有如下程序段: int i=1; while(1) { i++; if(i == 30) break; if(i%3 == 0) cout << '*'; }执行这个程序段输出字符 * 的个数是
(分数:2.00)
(分数:2.00)
A.30
B.8
C.9 √
D.10
解析:解析:本题中while循环中当i为3的倍数时输出*,而i为30时跳出循环,所以输出9个*,答案为C。
14.已知数组 arr 的定义如下: int arr[5] = {1,2,3,4,5};下列语句中输出结果不是3的是
(分数:2.00)
(分数:2.00)
&ut << *arr+2 <<endl;
&ut << *(arr+2)<<endl;
&ut << arr[2] <<endl;
&ut << *arr <<endl; √
解析:解析:本题考查以为数组和指针,一维数组名可以作为一个指针,指向数组的第一个元素,题目中要求输出3,那么就是指向了数组的第三个元素,*arr表示数组的第一个元素1,所以输出不出来3,所以选择D选项。
15.下列叙述中,错误的是
(分数:2.00)
(分数:2.00)
&ue 是一个逻辑型常量
B.x 是一个字符型常量 √
C.100 是一个 int 常量
D.2.71828 是一个 double 常量
解析:解析:考查常量定义,B选项中"x"为一个字符串,'x'才是字符常量,所以B选项错误。
16.在 C++ 中,用来取代C中的预处理宏函数的是
(分数:2.00)
(分数:2.00)
A.重载函数
B.友元函数
C.递归函数
D.内联函数 √
解析:解析:内联函数具有一般函数的特性,它与一般函数所不同之处公在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,内联函数被发明出来就是
为了取代C中的宏,所以答案为D。
17.通过运算符重载,可以改变运算符原有的
(分数:2.00)
(分数:2.00)
A.优先级
B.结合性
C.操作数类型 √
D.操作数个数
解析:解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为C。
18.在函数中,定义一个变量时,默认的存储类型是
(分数:2.00)
(分数:2.00)
&
B.auto √
&ister
D.static
解析:解析:extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻其定义。在C++语言中 auto 被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。在变量前,加上关键字static,该变量就被定义成为一个静态变量,该变量在全局数据区分配内存,所以答案为B。
19.下列运算符函数中肯定不属于类 Can 的成员函数的是
(分数:2.00)
(分数:2.00)
A.Can operator- (Can);
B.Can operator - ();
C.Can operator - (Can, Can); √
D.Can operator - (int);
解析:解析:答案C的形式是重载为友元函数,而友元函数不属于类的成员函数。所以重载为友元函数需要两个参数,通过参数传递的方式得到参加运算的两个对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参数只需要一个,其为参加运算的另一个操作数。
20.关于函数声明格式中的,下列叙述错误的是
(分数:2.00)
(分数:2.00)
A.有可能包含关键字 true √
B.有可能包含自定义标识符
C.有可能包含字符 *
D.有可能包含关键字 float
解析:解析:本题考查函数返回类型,函数返回类型可以是普通常量型的,可以返回指针以及自定义类型,但是不能包含关键字true,所以A选项错误。
21.下列关于运算符重载的叙述中,错误的是
(分数:2.00)
(分数:2.00)
A.不能通过运算符重载在 C++ 中创建新的运算符
B.赋值运算符只能重载为成员函数
C.运算符函数重载为类的成员函数时,第一操作数是该类对象
D.重载类型转换运算符时,应声明返回类型为 void √
解析:解析:本题考查运算符重载,重载不能定义新的运算符,且赋值运算符只能重载为成员函数,重载类型转换运算符时,声明返回类型不一定是void,所以D选项错误。
22.下列运算符中,不能被重载的是
(分数:2.00)
(分数:2.00)
&
B.+=
C.. √
D.--
解析:解析:本题考查运算符重载,不能重载的运算符只有5个:.、.*、::、sizeof、?: 所以本题选择C。
23.有如下两个类定义: class AA{}; class BB{ AA v1,*v2; BB v3; int *v4; };其中有一个成员变量的定义是错误的,这个变量是
(分数:2.00)
(分数:2.00)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论