国家二级C++机试(选择题)模拟试卷512
选择题
1.下列选项可以做C++标识符的是( )。(A)
A. _256
B. fxt/pig
C. delete
D. 5char
解析:标识符的命名规则:①所有标识符必须由一个字母(a~z或A~Z)或下划线()开头;②标识符的其他部分可以用字母、下划线或数字(0~9)组成;③大小写字母表示不同意义,即代表不同的标识符,如gout和Cout。
2.下列枚举类型的定义中,包含枚举值3的是( )。
A
解析:声明枚举类型的语法格式为:enum{};包含多个枚举值,它们用逗号隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是;二是=。关于枚举类型有以下4点说明:
①一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。
②n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,…n-1对应。
③若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚举值赋的整型常量值应从左到右递增。
④枚举类型的声明也可作为组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。
对于本题来说,在选项A中,对4个枚举值没有赋常量值,所以它们从左到右与整数0,1,2,3相对应。因而选项A为正确选项。
3.对于循环队列,下列叙述中正确的是( )。(D)
A. 队头指针是固定不变的
B. 队头指针一定大于队尾指针
C. 队头指针一定小于队尾指针
D. 队头指针可以大于队尾指针,也可以小于队尾指针
解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。
4.下列叙述中正确的是( )。(D)
A. 栈是一种先进先出的线性表
B. 队列是一种后进先出的线性表
C. 栈与队列都是非线性结构
D. 栈与队列都是线性结构
解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。
5.下列叙述中正确的是(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空问一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 上述三种说法都不对
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的,各数据元素在存储空间中是按逻辑顺序依次存放的。所以每个元素只存储其值就可以了,而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域:另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是( )。(C)
A. 测试
B. 设计
C. 可行性研究
D. 实现
解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设计、详细设计和实现属于开发阶段。
7.设表的长度为n。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是(D)
A. 堆排序
B. 有序链表查找
C. 希尔排序
D. 循环链表中寻找最大项
解析:在循环链表中寻找最大项算法是,首先取出第一个数作为最大数,然后和后面的所有项进行比较查找。囚此,比较次数为n-1。
8.数据流图中带有箭头的线段表示的是( )。(D)
A. 控制流
B. 事件驱动
C. 模块调用
D. 数据流
解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。
9.下列说法中错误的是( )。(B)
A. 公有继承时基类中的public成员在派生类中仍是public的
B. 公有继承时基类中的private成员在派生类中仍是private的
C. 私有继承时基类中的public成员在派生类中是private的
D. 保护继承时基类中的public成员在派生类中是protected的
解析:此题考查的是继承时基类成员属性改变。选项B中,公有继承时基类中的private成员在派生类中不是private的,而是不可访问的。所以选项B错误;其他选项叙述均正确。
10.下列给字符数组进行初始化中,正确的是( )。
C
解析:在C++中定义二维数组时并赋值,则数组的行数可以省略不写。选项A)、B)、D)均是字符字符串初始化。。
11.若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( )。(B)
A. —对一
B. 一对多
C. 多对一
D. 多对多
解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。
12.下列语句中错误的是( )。(A)
A. const int a;
B. const int a=10;
C. constint*point=0;
D. const int*point=new int(10;)
解析:由关键字const声明符号常量的同时必须为其赋初值。
13.有如下程序:
#include
using namespace std;
int main()
{
char str[100],*p;
cout<<\\(A)
A. 7
B. 12
C. 13
D. 100
解析:此题考查的是默认输入格式。本题输入数据类型为char,因此输入的数据是“从第一个非空白字符开始到下一个空白字符结束”,而输入数据为abcdefg abcd,其中abcdefg后有空格。所以输入后str中的字符串为“abcdefg”:主函数中接下来for语句的作用是计算字符串p的长度,故最终输出字符串“abcdefg”的长度7。
14.已知数组arr的定义如下:
int arr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是( )。(D)
A. cout<<*arr+1<<endl;
B. cout<<*(arr+1)<<endl;
C. cout<<arr[1]<<endl;
D. cout<<*art
本文档预览:3600字符,共7289字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载