二级c++笔试历年真题

发布时间 : 星期日 文章二级c++笔试历年真题更新完毕开始阅读

2010年3月考试真题(第31次)

1. 数据流程图(DFD图)是______。

A、软件概要设计的工具 B、软件详细设计的工具

C、结构化方法的需求分析工具 D、面向对象方法的需求分析工具

常见的需求分析方法有:结构化分析方法和面向对象的分析方法。结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。 故本题答案为C。

2. 软件(程序)调试的任务是______。

A、诊断和改正程序中的错误 B、尽可能多地发现程序中的错误 C、发现并改正程序中的所有错误 D、确定程序中错误的性质

程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。 故本题答案为A。

3. 软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是______。

A、编辑软件 B、操作系统 C、教务管理系统 D、浏览器

软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等,所以选项B属于系统软件。 故本题答案为B。

4. 软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于______。

A、定义阶段 B、开发阶段 C、维护阶段 D、上述三个阶段

软件生命周期可分为软件定义、软件开发及软件运行维护三个阶段。软件开发阶段包括概要设计、详细设计、实现和测试四个活动阶段。 故本题答案为B。 5. 下列叙述中正确的是______。

A、对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n

B、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2) C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为D、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为

对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较 故本题答案为A。 6. 有两个关系R和T如下:

次,而顺序查找需要比较n次。二

分法查找只适用于顺序存储的有序表,如果采用链式存储结构,也只能用顺序查找,所以选项A是正确的。

则由关系R得到关系T的操作是______。

A、选择 B、投影 C、交 D、并

从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。由图可知关系R通过运算得到关系T,关系T与关系R相比,属性的个数没有发生变化,记录的条数发生了变化。因此所使用的运算应该是选择。 故本题答案为A。 7. 算法的时间复杂度是指______。

A、算法的执行时间 B、算法所处理的数据量 C、算法程序中的语句或指令条数 D、算法在执行过程中所需要的基本运算次数

所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。 故本题答案为D。

8. 数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的______。

A、需求分析阶段 B、逻辑设计阶段 C、概念设计阶段 D、物理设计阶段

E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的工具。 故本题答案为C。

9. 在学生管理的关系数据库中,存取一个学生信息的数据单位是______。

A、文件 B、数据库 C、字段 D、记录

实体是概念世界中的基本单位,属性附属于实体,它本身并不构成独立单位。属性有属性域,每个实体可取属性域内的值。一个实体的所有属性取值组成了一个值集叫元组(或称记录)。在概念世界中,可以用元组表示实体,也可用它区别不同的实体。所以在学生管理的关系数据库中,存取一个学生信息的数据单位是元组(或记录)。 故本题答案为D。

10. 数据库管理系统中负责数据模式定义的语言是______。

A、数据定义语言 B、数据管理语言 C、数据操纵语言 D、数据控制语言

数据定义语言(DDL):该语言负责数据的模式定义与数据的物理存取构建。

数据操纵语言(DML):该语言负责数据的操纵,包括查询及增、删、改等操作。

数据控制语言(DCL):该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。 故本题答案为A。 11. 有如下两个类定义 class XX{ private: double x1; protected: double x2; public: double x3; };

class YY:protected XX{ private: double y1; protected: double y2; public: double y3; };

在类YY中保护成员变量的个数是______。

A、1 B、2 C、3 D、4

本题主要考查了类的继承与派生。

类的继承方式有三种:公有(public)继承、保护(protected)继承和私有(private)继承。当派生类从基类保护继承时,基类的公有成员和保护成员在派生类中都为保护成员。本题派生类YY从基类XX保护继承,因此基类XX的公有成员x3和保护成员x2都成为派生类YY的保护成员,再加上派生类YY自身的保护成员y2,因此类YY中有3个保护成员。 故本题答案为C。 12. 在C++中,cin是一个______。

A、类 B、对象 C、模板 D、函数

本题主要考查了I/O流。

在C++中,数据的输入与输出是通过I/O流来实现,cin和cout是预定义的流类对象。 故本题答案为B。

13. 若x和y是程序中的两个整型变量,则下列if语句中正确的是______。

A、if(x==0) y=1;else y=2; B、if(x==0) then y=1 else y=2; C、if(x==0) y=1 else y=2; D、if x==0 y=1; else y=2;

本题主要考查了if语句。 if语句的语法形式为: if(表达式) 语句1 else 语句2

在C++中,if语句中没有then,语句最后必须有一个分号,因此选项A正确,选项B和选项C错误;在选项D中,表达式x==0应该用圆括号括起来,因此选项D错误。 故本题答案为A。 14. 将运算符\重载为非成员函数,下列原型声明中,错误的是______。

A、MyClock operator + (MyClock,long); B、MyClock operator + (MyClock,MyClock); C、MyClock operator + (long,long); D、MyClock operator + (long,MyClock);

本题主要考查了运算符的重载。

运算符的重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。选项A、选项B和选项D的两个参数中至少有一个参数是自定义类型,因此选项A、选项B和选项D正确。选项C中两个参数都是基本数据类型,没有自定义类型,因此选项C错误。 故本题答案是C。 15. 要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是______。

A、int x[3]={0,0,0}; B、int x[]={0}; C、static int x[3]={0}; D、int x[]={0,0,0};

本题主要考查了一维数组的定义与初始化。 一维数组的定义形式为:

数据类型 数组名[数组元素个数];

数组的初始化就是在声明数组时给部分或全部元素赋初值。选项A定义了有三个元素的整型数组x,并初始化三个元素的值为0,因此选项A正确;当声明数组时没有给出数组元素个数,但是有初始化列表,数组元素个数由列表中元素个数来确定,因此选项D正确;选项B没有给出数组元素个数,并且在初始化列表中只给一个元素值,因此选项B定义了只有一个元素的整型数组,故选项B错误;对于数值类型数组,如果给定的数值不够,则没有指定数值的元素将初始化为0,因此选项C正确。 故本题答案为B。 16. 下列控制格式输入输出的操作符中,能够设置浮点数精度的是______。

A、setprecision B、setw C、setfill D、showpoint

本题主要考查了输出流的格式控制。

setprecision(int n)用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。因此选项A正确。

setw(int n)用于预设输入输出宽度。 setfill(char c)用于预设填充字符。

showpoint用于给浮点数显示小数点和尾部的0。

因此选项B、选项C和选项D不正确。 故本题答案为A。 17. 若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列 MyTemp p2; MyTemp p3[2];

编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是______。

A、1 B、2 C、3 D、0

本题主要考核类模板。

类模板声明的语法形式为: template<模板参数表> class 类名 {类成员声明}

使用类模板来建立对象时,应按如下形式声明: 类名<模板实参表> 对象名1,…,对象名n;

在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例,因此类模板的实例个数由类型参数的种类决定。本题使用类模板MyTemp定义对象时指定了两种类型参数:double和long,因此所生成的实例个数是2。 故本题答案为B。 18. 下列代码段声明了3个类 class Person{};

class Student:public Person{}; class Undergraduate:Student{};

下列关于这些类之间关系的描述中,错误的是______。

A、类Person是类Undergraduate的基类 B、类Undergraduate从类Student公有继承 C、类Student是类Person的派生类 D、类Undergraduate是类Person的派生类

本题主要考查了类的继承与派生。

在C++中,定义派生类的一般语法形式为:

class 派生类名:继承方式 基类名1,继承方式 基类名2,…,继承方式 基类名n {

派生类成员声明; };

类的继承方式有三种:公有(public)继承、保护(protected)继承和私有(private)继承。如果不显式地给出继承方式,缺省的类继承方式是私有(private)继承。在声明派生类Undergraduate时缺省继承方式,因此类Undergraduate从类Student私有继承,故选项B错误。 故本题答案为B。 19. 将前缀运算符\重载为非成员函数,下列原型中,能正确用于类中说明的是______。

A、Decr& operator --(int); B、Decr operator --(Decr&,int);

C、friend Decr& operator --(Decr&); D、friend Decr operator --(Decr&,int);

本题主要考查了运算符的重载。

运算符--既可以是前缀运算符(前减1),又可以是后缀运算符(后减1)。为了区分这两种情况,重载这两个运算符时必须在格式上有所区别:重载后缀--时必须多一个虚拟参数:int。如果将前缀--和后缀--作为非成员函数重载,那个唯一的操作数必须作为第一参数提供。又因为要修改第一操作数,对应的参数必须声明为引用。

联系合同范文客服:xxxxx#qq.com(#替换为@)