国家二级C++机试(选择题)模拟试卷501
选择题
1.有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
{
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。(A)
A. obj.funl();
B. obj.fun2();
C. obj.fun3();
D. obj.fun4();
解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以在本题中,在类外引用成员函数时,派生对象只能引用基类的公用成员函数funl,故本题答案为A。
2.T列数据结构中,能用二分法进行查找的是(A)
A. 顺序存储的有序线性表
B. 线性链表
C. 二叉链表
D. 有序线性链表
解析:二分法查找只适应于顺序存储的有序表。有序表是指线性表中的元素按值非递减排序(即从小到大,但允许相邻元素值相等)的表。
3.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(D)
A. 冒泡排序为n/2
B. 冒泡排序为n
C. 快速排序为n
D. 快速排序为n(n-1)/2
解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此,称为快速排序法。
4.有如下类定义:
class MyBase{
int k;
public:
MyBase(int n=0):k(n){}
int value()const{return k;}
};
class MyDerived:MyBase{
int j;
public:
MyDerived(int i):j(i){}
int getK()const{return k;}
int getJ()const{return j;}
};
编译时发现有一处语法错误,对这个错误最准确的描述是( )。(A)
A. 函数getK试图访问基类的私有成员变量k
B. 在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private
C. 类MyDerived缺少一个无参的构造函数
D. 类MyDerived的构造函数没有对基类数据成员k进行初始化
解析:默认继承方式为私有继承,私有继承将基类的公用成员和保护成员都变为了私有成员,基类的私有成员依然属于基类私有,派生类不能访问基类的私有成员。所以A选项正确。
5.下列选项中不属于面向对象程序设计特征的是( )。(C)
A. 继承性
B. 多态性
C. 类比性
D. 封装性
解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。
6.在三级模式之间引入两层映像,其主要功能之一是( )。(A)
A. 使数据与程序具有较高的独立性
B. 使系统具有较高的通道能力
C. 保持数据与程序的一致性
D. 提高存储空间的利用率
解析:数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。
7.设表的长度为n。在下列算法中,最坏情况下时间复杂度最高的是(B)
A. 堆排序
B. 希尔排序
C. 有序链表查找
D. 循环链表中寻找最大项
解析:希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。排序方法最坏时间复杂度:直接插入为O(n2)、简单选择为O(n2)、起泡排序为O(n2)、快速排序为O(n2)、堆排序为O(nlog2n)、归并排序为O(nlog2n)。
8.下列关于数据库设计的叙述中,正确的是( )。(A)
A. 在需求分析阶段建立数据字典
B. 在概念设计阶段建立数据字典
C. 在逻辑设计阶段建立数据字典
D. 在物理设计阶段建立数据字典
解析:数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。分别是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。数据字典是对系统中数据的详尽描述,是各类数据属性的清单。对数据设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。
9.对于int*pa[5];的描述,正确的是( )。(A)
A. pa是一个指向数组的指针,所指向的数组是5个int型元素
B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
C. pa[5]表示某个数组的第5个元素的值
D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针
解析:语句“int*p[5]”表示一个数组p,它的大小是5,里面存放的数据类型是int*,也就是整型指针。称之为指针数组(从右向左解析这个表示)。
10.有如下程序:
#include<iostream>
using namespace std;
class A
{
public:
A(){cout<<\\(D)
A. CBA
B. BAC
C. ACB
D. ABC
解析:此题中,语句C obj对象初始化首先调用基类的构造函数A(),输出“A”,其次是C类中对象的构造函数的调用,即调用B(),输出“B”;最后是调用自身的构造函数C(),输出“C”。
11.有三个关系R、S和T如下:
(D)
A. 选择
B. 投影
C. 交
D. 并
解析:由关系T中的数据可以看出,其数据由关系R和s的数据组成。所以关系T是由关系R和T通过并运算得到的。
12.有三个关系R、S和T如下:
(A)
A. 自然连接
本文档预览:3600字符,共9073字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载