国家二级C++机试(选择题)模拟试卷211
选择题
1.下列叙述中正确的是( )。(B)
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 以上都不正确
解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
2.下列叙述中正确的是( )。(A)
A. 程序执行的效率与数据的存储结构密切相关
B. 程序执行的效率只取决于程序的控制结构
C. 程序执行的效率只取决于所处理的数据量
D. 以上都不正确
解析:影响程序执行效率的因素有很多,如数据的存储结构、程序处理的数据量、程序的算法等。顺序存储结构和链式存储结构在数据插入和删除操作上的效率就存在差别。其中,链式存储结构的效率要高一些。
3.下列运算符中,不能被重载的是( )。(C)
A. &&
B. !=
C. .
D. ++
解析:c++不能重载的运算符只有5个,即“.”、“.*”、“::”、“?:”、“sizeof”,故本题答案为C。
4.数据流程图(DFD图)是( )。(C)
A. 软件概要设计的工具
B. 软件详细设计的工具
C. 结构化方法的需求分析工具
D. 面向对象方法的需求分析工具
解析:本题考查数据流程图DFD的概念。对于面向数据流的结构化分析方法,按照DeMarco的定义,“结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档”。结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。数据流图(DFD——Data Flow Diagram)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动交换过程。由此可得数据流程图是结构化方法的需求分析工具。
5.下列关于运算符重载的描述中,正确的是( )。(A)
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
B. 一元运算符只能作为成员函数重载
C. 二元运算符重载为非成员函数时,参数表中有一个参数
D. C++中可以重载所有的运算符
解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不能重载,它们是:(成员访问运算符)、*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。
6.在满足实体完整性约束的条件下( )。(A)
A. 一个关系中应该有一个或多个候选关键字
B. 一个关系中只能有一个候选关键字
C. 一个关系中必须有多个候选关键字
D. 一个关系中可以没有候选关键字
解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。一个关系中可以有一个或者多个候选关键字。
7.负责数据库中查询操作的数据库语言是( )。(C)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:负责数据库中查询操作的数据库语言足数据操纵语言。
8.派生类的成员函数不能访问基类的( )。(C)
A. 公有成员和保护成员
B. 公有成员
C. 私有成员
D. 保护成员
解析:此题考查的是派生类对基类成员的访问。派生类对基类的各个成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类的公有成员和保护成员。
9.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符;除了.、.*、->*、::、?:这五个运算符之外,其他运算符都可以重载:在类型转换符函数的定义中不需要声明返回类型;运算符函数的返回值类型可以声明为基本数据类型。
10.对于一个类定义,下列叙述中错误的是( )。(B)
A. 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B. 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
C. 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D. 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
解析:此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。
11.有如下程序:
#include<iostream>
using namespace std;
class MyClass{
public:
MyClass(){++count;}
~MyClass(){–count;}
static int getCount(){return count;}
private:
static int count;
};
int MyClass::count=0;
int main() {
MyClass obj;
cout<<obj.getCount();
MyClass*ptr=new MyClass;
cout<<MyClass::getCount();
delete ptr;
cout<<MyClass::getCount();
return 0;
}
程序的输出结果是( )。(A)
A. 121
B. 232
C. 221
D. 122
解析:此题考查的是静态成员。静态成员的特性是不管这个类创建了多少对象,它的静态成员都只有一个拷贝副本,这个副本被所有属于这个类的对象共享。题目中,首先定义了obj对象,其构造函数使静态数据成员cout增1,故输出“1”;然后通过指针动态创建了Myclass类的对象,构造函数被再次调用,count变为2,输出“2”;接着删除创建的MyClass类的对象
本文档预览:3600字符,共8974字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载