国家二级C++机试(选择题)模拟试卷235
选择题
1.算法的空间复杂度是指( )。(A)
A. 算法在执行过程中所需要的计算机存储空间
B. 算法所处理的数据量
C. 算法程序中的语句或指令条数
D. 算法在执行过程中所需要的临时工作单元数
解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
2.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(B)
A. 循环队列
B. 栈
C. 队列
D. 二叉树
解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。
3.下列叙述中正确的是( )。(A)
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 循环队列中的元素个数不会变化
解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针from指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针舶nt指向的后一个位置与队尾指针rear指向位置之间的元素数量。
4.下列叙述中正确的是( )。(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 以上都不正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
5.冒泡排序在最坏情况下的比较次数是( )。(C)
A. n(n+1)/2
B. nlog2n
C. n(n-1)/2
D. n/2
解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
6.下列排序方法中,最坏情况下比较次数最少的是( )。(D)
A. 冒泡排序
B. 简单选择排序
C. 直接插入排序
D. 堆排序
解析:冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n一1)/2次,而堆排序在最坏情况下需要比较的次数是nlog,n。
7.下列选项中不属于软件生命周期开发阶段任务的是( )。(C)
A. 软件测试
B. 概要设计
C. 软件维护
D. 详细设计
解析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用退役的过程。开发阶段包括概要设计、详细设计、实现和测试4个阶段。软件维护属于维护阶段。
8.有如下程序:
#include
using namespace std;
class Point{
public:
static int number;
public:
Pointo{number++;}
-Point(){number-一;)
);
int Point::number~0;
void main0{
Point*ptr;
PointA,B;
{
Point*ptr_point=new Point[3];
ptx=ptr_point;
)
Point C:
Gout+Point::number+endl;
delete[]ptr;
)
运行时输出的结果是( )。(C)
A. 3
B. 4
C. 6
D. 7
解析:此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静态成员变量number,初始值为0。土函数中第2行定义了2个Point对象,此时number变为2;随后new运算符又定义了一个包含3个Point对象元素的数组,其通过delete结束后number的值变为5;然后又定义了一个Point对象C,number变为6;最后输出number的内容。
9.数据库设计过程不包括( )。(D)
A. 概念设计
B. 逻辑设计
C. 物理设计
D. 算法设计
解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计。
10.下列选项中,不是C++关键字的是( )。(B)
A. c1ass
B. function
C. friend
D. virtual
解析:Class、friend、virtual都是C++的关键字,而funtion是VB的关键字。
11.关于new运算符的下列描述中,错误的是( )。(D)
A. 它可以用来动态创建对象和对象数组
B. 使用它创建的对象或对象数组可以通过运算符delete删除
C. 使用它创建对象时要调用构造函数
D. 使用它创建对象数组时必须指定初始值
解析:用new创建对象是不用显式调用构造函数的,它自己会自动调用。
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(hat,int,int);
解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。
13.有如下类定义:
c1ass MyClass{
Int value,
public;
MyClass(int n): value (n){}
int gerValue()const{ return value;}
};
则类MyClass的构造函数的个数是( )。(A)
A. 1个
B. 2个
C. 3个
D. 4个
解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造
本文档预览:3600字符,共7421字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载