[IT认证]最新全国计算机等级考试二级c题库5共17套_第1页
[IT认证]最新全国计算机等级考试二级c题库5共17套_第2页
[IT认证]最新全国计算机等级考试二级c题库5共17套_第3页
[IT认证]最新全国计算机等级考试二级c题库5共17套_第4页
[IT认证]最新全国计算机等级考试二级c题库5共17套_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五套1、有三个关系R、 S和 T如下:由关系R和 S通过运算得到关系T,则所使用的运算为。A、笛卡尔积B、交C、并D、自然连接笛卡尔积:设关系R和 S的元数分别是r 和 s, 定义R和 S的笛卡尔积是一个(r+s) 元元组的集合,每一个元组的前 r 个分量来自R的一个元组,后s个分量来自S的一个元组。若R有k1 个元组,s有k2个元组,则关系R和关系S的广义笛卡尔积有k1 × k2个元组。交:设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由属于R又属于S的所有元组组成。并:设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一

2、个域,则关系R与关系S的并由属于R或属于S的元组组成。自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须有相同的属性组,并且要在结果中把重复的属性去掉。故本题答案为D。2、在长度为n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是。A、 O(n)B、C、D、二分法检索要求线性表结点按关键值排序且以顺序方式存储。在查找时,首先与表的中间位置上结点的关键值比较,若相等则检索成功;否则根据比较结果确定下一步在表的前半部分或后半部分继续进行。二分法检索的效率比较高,设线性表有n个元素,则最多的检索次数为大于log2n(2 为底数 ) 的最小整数,最少的检索次数为 1。故本题答案

3、为C。3、在面向对象方法中,不属于" 对象 " 基本特点的是。A、一致性B、分类性C、多态性D、标识惟一性面向对象方法中最基本的概念是对象,它的基本特点有:标识惟一性、分类性、多态性、封装性和模块独立性好。故本题答案为A。4、在软件开发中,需求分析阶段可以使用的工具是。A、 N-S图B、 DFD图C、 PAD图D、程序流程图软件开发阶段包括需求分析、总体设计、详细设计、编码和测试5个阶段。其中需求分析阶段常用的工具是数据流图(简称DFD)和数据字典(简称DD)。常见的详细设计的图形描述工具主要有程序流程图、N-S结构图、问题分析图(简称PAD图)。故本题答案为B。5、一个栈

4、的初始状态为空。现将元素1、 2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是。A、 12345ABCDEB、 EDCBA54321C、 ABCDE12345D、 54321EDCBA栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。这表明栈的运算规则是" 先进后出" (或称 " 后进先出" )。在栈顶进行插入运算,称为进栈(或入栈),在栈顶进行删除运算,称为退栈(或出栈)。本题中,

5、依次进栈,即依次插入元素1、 2、 3、 4、 5、 A、 B、 C、 D、E,依次出栈,即依次删除元素,根据栈" 先进后出" 的规则,应该以倒序出栈。即元素出栈顺序为EDCBA5432。1故本题答案为B。6、数据流图中带有箭头的线段表示的是。A、控制流B、事件驱动C、模块调用D、数据流数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要的图形元素与说明如下:加工(转换):输入数据经加工变换产生输出。数据流:沿箭头方向传送数据的通道,一般在旁边标注

6、数据流名。存储文件(数据源):表示处理过程中存放各种数据的文件。源,潭:表示系统和环境的接口,属系统之外的实体。故本题答案为D。7、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是。A、一对一B、一对多C、多对一D、多对多两个实体间的联系可以归纳为3种类型:一对一联系:一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。一对多联系或多对一:一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。多对多联系:多对多的联系表现为一个表中的多个记录在相关表中同样有多个记录与其匹配。一间宿舍可以住多个学生,但每个学生只能住一个宿舍,所以实体宿舍和学生之间的联系为一对多的联系。故

7、本题答案为B。8、下列叙述中正确的是。A、循环队列中有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定所谓循环队列,就是将队列存储空间的最后一个位置绕到第1个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列还是属于线性结构,所以选项A是错误的。循环队列的头指针front 指向队列的第一个元素的前一位置,队尾指针rear 指向队列的最后一个元素,循环队列的动态变化需要头尾指针共同反映,所以选项B、C是错误的。循

8、环队列的长度是:(sq.rear-sq.front+maxsize)%maxsize , 所以循环队列的长度是由队头和队尾指针共同决定的,所以选项D正确。故本题答案为D。9、 下列叙述中正确的是。A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选

9、项A是正确的。两者都可以存储线性的、有序的逻辑结构,所以选项B、 C不正确。顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间存储,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。故本题答案为A。10、在数据管理技术发展的三个阶段中,数据共享最好的是。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同数据库管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段的特点:数据不保存、数据不独立、数据不能共享、数据无结构,没有专门的数据管理软件。文件系统阶段的特点:数据可以长期保存,有专门的数据管理软件- 文件系统。但是数据独立性低

10、,共享性差、冗余度大,数据记录内有结构,整体无结构。数据库系统阶段的特点:数据结构化,数据独立性高,数据共享性高,冗余度小,易于扩充,数据库管理系统提供统一的数控制功能,包括数据安全性、完整性、并发控制和数据恢复功能。故本题答案为C。11、下列选项中,与实现运行时多态性无关的是。A、重载函数B、虚函数C、指针D、引用本题主要考查了多态性。在 C+语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现的;运行过程中的多态性需要满足三个条件,首先类之间满足类型兼容规则,第二要声明虚函数,第三是要由成员函数调用或者是通过指针、引用来访问虚函数。因此重载函数与

11、实现运行时多态性无关。故本题答案为A。12 、 下列模板声明中,有语法错误的是。A、 template<typename T> T fun(T x)return x;B、 template<typename T> T fun(T x,int n)return x*n;C、 template<class T>T fun(T *p)return *p;D、 template<class T>T class AT n;本题主要考查了模板的定义。函数模板的定义形式为:template <class T> 或 template<typen

12、ame T>类型名 函数名 ( 参数表 ) 函数体的定义因此选项A、 B和 C是正确的。类模板声明的语法形式为:template< 模板参数表> class 类名 类成员声明;在选项D中,模板参数表和class 关键字之间有模板参数T不符合模板声明的语法,因此本题答案为D。13 、 对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是 。A、公有或私有B、私有C、保护或私有D、公有或保护本题主要考查了派生类对基类成员的访问。基类的成员有公有(public )、保护(protected )和私有(private )三种访问权限,类的继

13、承方式也有公有继承(public )、保护继承(protected )和私有继承(private )三种。无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,因此选项A、 B和 C不正确,但可以访问基类中的公有成员和保护成员。故本题答案为D。14、有如下程序:#include <iostream>using namespace std;int main()int sum;for(int i=0;i<6;i+=3)sum=i;for(int j=i;j<6;j+) sum+=j;cout<<sum<<endl;return 0;运行时的输出

14、结果是。A、 3B、 10C、 12D、 15本题主要考查了for 循环的嵌套。从本题代码可以看出程序运行结束时变量sum的值即是程序的运行结果,而外层for 语句循环体的第一个语句是把变量i 的值赋给变量sum,并且循环体里没有改变变量i 值的语句,因此只要考虑最后一次for 循环。外层for 语句共循环2次,最后一次循环时,i 的值为3,执行语句sum=i; 后变量sum的值为3,内层 for 语句共循环了3次:变量j 的值分别为3、 4、 5,每次循环,变量sum的值为sum+j,故sum的值为3+3+4+5=15。故本题答案为D。15、下列字符串中不能作为C+标识符使用的是 。A、 W

15、HILEB、 userC、 _1varD、 9stars本题主要考查了C+语言中的标识符的定义。标识符的组成要符合一定的规则:( 1 )标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串;( 2)标识符不能与任意一个关键字同名;( 3)标识符中的字母区分大小写;( 4)标识符不宜过长。在选项D中,9stars 的第一个字符是数字,因此不是合法的标识符,不能作为C+标识符使用。故本题答案为D。16、下列语句中,正确的是。A、 char *myString="Hello-World!"B、 char myString="Hello-World!&quo

16、t;C、 char myString11="Hello-World!"D、 char myString12="Hello-World!"本题主要考查了字符串和字符数组、字符型指针的关系。由双引号括起来的字符串常量可以被看成一个无名字符数组,C+编译程序会自动为它分配一个空间来存放这个常量,字符串常量的值本身就是指向这个无名字符数组的第一个字符的指针,其类型是字符指针,因此可以用字符串常量初始化字符指针,故选项A正确;用字符串对数组初始化时,编译程序以'0' 作为结束这个数组的标志。因此,数组长度至少要比字符串长度(字符个数)多1。字符串&

17、quot;Hello-World!" 的长度为12,故数组长度至少为13,因此选项C和选项D不正确;在选项B中,编译程序不能把赋值号右边的字符数组转换成左边的字符型,故选项B不正确。故本题答案为A。17、 有如下程序:#include <iostream>using namespace std;class Samplepublic:Sample()Sample()cout<<'*'int main()Sample temp2,*pTemp2;return 0;执行这个程序输出星号(* )的个数为。A、 1B、 2C、 3D、 4本题主要考查了构

18、造函数、析构函数和指针。构造函数在对象被创建的时候由系统自动调用,析构函数用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时刻被系统自动调用。本题的 main() 函数中, 第一条语句定义了一个含有2个元素的对象数组 temp和一个含有2个元素的指针数组pTemp, 声明指针,只是得到了用于存储地址的指针变量,不会创建对象,故此时只创建了两个对象。当 main() 函数结束时,temp数组中的元素对象被删除时,系统自动调用析构函数2次输出两个'*' 。故本题答案为B。18 、 要利用 C+流进行文件操作,必须在程序中包含的头文件是 。A、 iostreamB、 fs

19、treamC、 strstreamD、 iomanip本题主要考查了C+流。要利用C+流,必须在程序中包含有关的头文件,以便获得相关流类的声明。为了使用新标准的流,相关头文件的文件名中不得有扩展名。与C+流有关的头文件有:iostream :要使用cin 、 cout 的预定义流对象进行针对标准设备的I/O 操作,须包含此文件。fstream :要使用文件流对象进行针对磁盘文件的I/O 操作,须包含此文件。strstream :要使用字符串流对象进行针对内存字符串空间的I/O 操作,须包含此文件。iomanip :要使用setw、 fixed 等大多数操作符,须包含此文件。故本题答案为B。19

20、、如果表达式a>=b 中的 ">=" 是作为非成员函数重载的运算符,则可以等效地表示为。A、 a.operator>=(b)B、 b.operator>=(a)C、 operator>=(a,b)D、 operator>=(b,a)本题主要考查了运算符重载。C+ 把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator 。 一般而言,如果在类X中重载双目运算符, a和 b是类X的两个对象,则下列两种函数调用方法是等价的:第一种是通过运算符构成表达式的形式进行调用,即ab;第二种是像一般函数那样用函数名进

21、行调用:当把作为成员函数重载时,调用形式为a.operator (b) ;当把作为非成员函数重载时,调用形式为operator (a,b) 。本题是把运算符>=重载为非成员函数,因此与表达式a>=b等效的表示为operator>=(a,b) 。故本题答案为C。20、定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为。A、私有继承B、非私有继承C、保护继承D、公有继承本题主要考查了派生类的定义。定义派生类的一般格式如下:class < 派生类名>:<继承方式1> <基类名 1>, ,< 继承方式n> <基类

22、名 n><派生类新定义成员>其中,<继承方式>即派生类的访问控制方式,用于控制基类中声明的成员在多大的范围内能被派生类的用户访问。每一个继承方式,只对紧随其后的基类进行限定。继承方式包括3种:公有继承(public )、私有继承( private )和保护继承(protected )。如果不显式地给出继承方式,缺省的类继承方式是私有继承private 。故本题答案为A。21、在语句"cout<<'A'" 中, cout 是 。A、类名B、对象名C、函数名D、 C+的关键字本题主要考查了预定义流对象。C+ 流有4个预定

23、义的流对象,它们的名称及与之联系的I/O 设备如下:cin标准输入cout标准输出cerr标准出错信息输出clog带缓冲的标准出错信息输出故本题答案是B。22、在C+中,编译系统自动为一个类生成缺省构造函数的条件是 。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数本题主要考查了构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了构造函数,无论定义的构造函数是否带参数,都不会再生成缺省构造函数,因此选项C是正确的。故本题答案为C。23、 下列语句中错误的是。A、 const

24、int a;B、 const int a=10;C、 const int *point=0;D、 const int *point=new int(10);本题主要考查了符号常量的声明。符号常量声明的语法格式为:const < 类型名 > < 符号常量名>=<初值表达式>, ;符号常量必须在声明的同时为其赋初值,因此选项A是错误的。故本题答案为A。24、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为。A、派生类、成员对象类、基类B、成员对象类、基类、派生类C、基类、成员对象类、派生类D、基类、派生类、成员对象类本题主要考查了构造函数的调用。当派生

25、类中有多个成员对象时,各个成员对象构造函数的调用顺序也取决于在派生类中定义的顺序(自上而下),而与在派生类构造函数的成员初始化列表中给出的顺序无关。建立派生类对象时,构造函数的执行顺序如下:(1 )执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下); ( 3) 执行派生类的构造函数。故本题答案为C。25、若已经声明了函数原型"void fun(int a,double b=0.0);" ,则下列重载函数声明中正确的是。A、 void fun(int a=90,double

26、 b=0.0);B、 int fun(int a,double B);C、 void fun(double a,int B);D、 bool fun(int a,double b=0.0);本题主要考查了函数重载。函数重载允许用同一个函数名定义多个函数。被重载的函数必须要有不同的形参列表,不可以根据函数返回值类型来重载函数。故本题答案为C。26、当使用ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为。A、 ios_base:inB、 ios_base:binaryC、 ios_base:in | ios_base:outD、 ios_base:out本题主要考查了

27、输出文件流。当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,通常要指定打开模式标志。对于所有ofstream 对象,标志ios_base:out 是隐含指定的打开方式,因此本题答案为D。27、在一个抽象类中,一定包含有。A、虚函数B、纯虚函数C、模板函数D、重载函数本题主要考查了抽象类的定义。拥有纯虚函数的类称为抽象类,抽象类不能用来定义对象。故本题答案为B。28、下列关于模板的叙述中,错误的是。A、调用模板函数时,在一定条件下可以省略模板实参B、可以用int 、 double 这样的类型修饰符来声明模板参数C、模板声明中的关键字class 都可以用关键字typename替代

28、D、模板的形参表中可以有多个参数本题主要考查了模板。在 C+中,模板分为函数模板和类模板。声明一个函数模板的格式是:template < 模板形参表声明> < 函数声明>其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开),因此选项D正确。每个模板形参具有下面几种形式:( 1 ) typename < 参数名 >( 2 ) class < 参数名 >( 3)类型修饰< 参数名 >在这三种形式中,前两种是等价的:在声明模板参数时,关键字typename与 class 可以互换。用typename或 class 声

29、明的参数称为虚拟类型参数; 而用类型修饰声明的参数则称为常规参数, 在形式上与普通的函数参数声明相同,因此选项B也正确。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用<和 >括起来的参数表)或从模板函数实参表(用(和)括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略,因此选项A正确。在类模板声明中,用于声明类的关键字class 不能用关键字

30、typename替代,故选项C不正确。故本题答案为C。29、 下列关于运算符重载的叙述中,错误的是。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载本题主要考查了运算符重载。在 C+语言中,不是所有的运算符都可以被重载,C+语言规定,除了 "." 、 ".*" 、 "->*" 、 ":" 、 "?:" 这五个运算符外,其它运算符都可以被重载,因此选项B不正确;由于很多符号是一元运算

31、符和二元运算符共用的,为了避免含混,C+语言规定不得为重载的运算符函数设置默认值,调用时也就不得省略实参,因此选项C正确;在 C+中,运算符的重载方式有两种:(1)重载为成员函数(2)重载为友元函数,"=" 、 "" 、 "()" 、 "->" 以及所有的类型转换运算符只能重载为成员函数,有的运算符既可以重载为成员函数,也可以重载为友元函数,故选项A和 D都正确。故本题答案为B。30、 有如下程序:#include<iostream>using namespace std;class MyClas

32、spublic:MyClass(int x):val(x)void Set(int x)val=x;void Print()constcout<<"val="<<val<<'t' private:int val;int main()const MyClass obj1(10);MyClass obj2(20);obj1.Print();/语句1obj2.Print();/语句2obj1.Set(20);/语句3obj2.Set(30);/语句4return 0;其主函数中错误的语句是。A、语句1B、语句2C、语句3D、语句

33、4本题主要考查了常对象。使用 const 关键字修饰的对象称为常对象,它的定义格式如下:<类名 > const < 对象名 >或 const < 类名 > <对象名>, 常对象在定义时必须进行初始化,而且不能被更新。由于对象obj1 为常对象,所以对象obj1 的数据成员 val 不能被更新,且对象obj1 只能调用它的常成员函数,而成员函数Set 不是常成员函数,故语句3不正确。故本题答案为C。31、 有如下程序:#include<iostream>using namespace std;class MyClasspublic:My

34、Class(int i=0)cout<<1;MyClass(const MyClass&x)cout<<2;MyClass& operator =(const MyClass&x)cout<<3;return *this;MyClass()cout<<4;int main()MyClass obj1(1),obj2(2),obj3(obj1);return 0;运行时的输出结果是。A、 112444B、 11114444C、 121444D、 11314444本题主要考查了构造函数、拷贝构造函数和析构函数。构造函数在对象被

35、创建的时候由系统自动调用,析构函数在对象的生存期即将结束的时候由系统自动调用,拷贝构造函数发生在用一个已知的对象初始化一个正在创建的同类对象的时候。 在 main() 函数中, 语句 MyClassobj1(1),obj2(2),obj3(obj1); 创建了三个对象,在创建obj1 和 obj2 对象时系统分别自动调用类的构造函数一次, 此时输出2个 1, 在创建 obj3 对象时是用已创建的对象obj1 初始化, 系统自动调用拷贝构造函数一次,输出 1个 2,最后main函数通过return 语句返回,此时系统自动调用析构函数3次销毁前面定义的三个对象,因此会输出 3个 4。故本题最终输出

36、的结果为112444。故本题答案为A。32、 在下列原型所示的C+函数中,按"传值 "方式传递参数的是。A、 Void f1(int x);B、 Void f2(int *x);C、 Void f3(const int *x);D、 Void f4(int &x);本题主要考查了函数参数的传递方式。在 C+中,函数之间传递参数有" 传值 " 和 " 传址 " 两种方式。C+默认的参数传递方式是" 传值 " ,因此选项A是正确的,形参为指针或引用都是" 传址 " ,因此选项B、 C、 D都

37、不正确。故本题答案为A。33、在类声明中,紧跟在"public:" 后声明的成员的访问权限是。A、私有B、公有C、保护D、默认本题主要考查了类的声明。类声明的一般格式如下:class< 类名 >public:< 成员函数或数据成员的说明> protected:< 数据成员或成员函数的说明> private:<数据成员或成员函数的说明>其中关键字public 、 private 和 protected 称为访问权限修饰符,它们限制了紧跟其后的类成员的访问控制范围,类中提供了3种访问控制权限:公有(public )、私有(priv

38、ate )和保护(protected )。故本题答案为B。34、 下列运算符函数中,肯定不属于类Value 的成员函数的是。A、 Value operator+(Value);B、 Value operator-(Value,Value);C、 Value operator*(int);D、 Value operator/(Value);本题主要考查了运算符重载。运算符重载为成员函数时,因为此成员函数所属的对象可成为运算符的一个运算分量,所以形参个数一般为运算符的元数减1。选项B中重载的运算符"-" 的参数表里有两个参数,如果是重载为成员函数,则运算符"-&quo

39、t;是三元运算符,但"-" 不可能是三元运算符,故选项B中的运算符肯定不是重载为成员函数。故本题答案为B。35、在一个派生类的成员函数中,试图调用其基类的成员函数"Void f();" ,但无法通过编译。这说明。A、 f() 是基类的私有成员B、 f() 是基类的保护成员C、派生类的继承方式为私有D、派生类的继承方式为保护本题主要考查了派生类对基类成员的访问。派生类对基类中各成员的访问能力与继承方式无关,无论是公有、保护还是私有继承,派生类中的成员都能够访问基类中的公有成员和保护成员,而不能访问基类中的私有成员,因此选项B、 C和 D不正确。故本题答案为

40、A。36、对下列二叉树进行中序遍历的结果是。标准答案为:DBXEAYFZC或D、B、X、E、A、Y、F、Z、C 或 D,B,X,E,A,Y,F,Z,C 或 D,B,X,E,A,Y,F,Z,C二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。因此本题中序遍历的结果为DBXEAYFZ。 C37、按照软件测试的一般步骤,集成测试应在测试之后进行。标准答案为:单元或 模块软件测试的过程按照四个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。单元测试又称模

41、块测试,所以本题中也可以填写模块测试。38、数据库设计包括概念设计、和物理设计。标准答案为:逻辑设计数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干个阶段。它们是:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段。39、在二维表中,元组的不能再分成更小的数据项。标准答案为:分量二维表一般满足下面7个性质:1 、二维表中元组的个数是有限的- 元组个数有限性。2 、二维表中元组均不相同- 元组的惟一性。3 、二维表中元组的次序可以任意交换- 元组的次序无关性。4 、二

42、维表中元组的分量是不可分割的基本数据项- 元组分量的原子性。5 、二维表中属性名各不相同- 属性名惟一性。6 、二维表中属性与次序无关,可任意交换- 属性的次序无关性。7、二维表中属性的分量具有与该属性相同的值域- 分量值域的同一性。40、软件工程三要素包括方法、工具和过程,其中,支持软件开发的各个环节的控制和管理。标准答案为:过程软件工程包括3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。41、有如下程序:#include<iostream>using namespace std;cla

43、ss Wages /" 工资 " 类double base; /基本工资double bonus; /奖金double tax; /税金public:Wages(double CBase,double CBonus,double CTax): base(CBase),bonus(CBonus),tax(CTax)double getPay()const; /返回应付工资额Wages operator+(Wages w)const; / 重载加法 ;double Wages:getPay()constreturn base+bonus-tax; Wages Wages:ope

44、rator+(Wages w)constreturn Wages(base+w.base, bonus+w.bonus,tax+w.tax); int main()Wages w1(2000,500,100),w2(5000,1000,300);cout<<(w1+w2).getPay()<<endl; return 0;程序的输出结果是。标准答案为:8100 或 本题主要考查了运算符重载。本题程序中加法运算符"+" 被重载为类Wages的成员函数,使加法运算符可以应用于类Wages的对象。 main函数的第一条语句定义了两个对象w1 和 w2 并对

45、其进行初始化,执行第二条语句时,先执行w1+w2,相当于w1.operator+(w2) , 即 调 用 运 算 符 函 数 , 执 行 其 中 的 语 句 return Wages(base+w.base,bonus+w.bonus,tax+w.tax); , 创建一个临时的无名Wages对象作为返回值返回主函数,临时对象的数据成员base, bonus 和 tax 的值分别为对象w1 的相应成员和对象w2的相应成员之和,即为7000、1500 和 400,然后临时对象调用成员函数getPay 得到应付工资额为8100(即7000+1500-400),通过return语句返回给cout 对象

46、输出。故本题程序的输出结果为8100。42、有如下类定义,请将Sample类的拷贝构造函数补充完整。class Sample public:Sample()Sample()if(p) delete p;Sample(const Sample& s)void SetData(int data) p=new int(data);private:int *p;标准答案为:p=new int(*(s.p);本题主要考查了拷贝构造函数。拷贝构造函数的作用是用一个已存在的对象(由拷贝构造函数的形参指定)去初始化同类的一个新创建的对象。 默认的拷贝构造函数的功能是把初始值对象的每个数据成员的值一一复

47、制给新建立对象的对应数据成员。类 Sample的数据成员是一个指针,如果本题填写语句p=s.p; ,将两个对象的对应数据成员进行简单复制,因为指针变量存放的是内存单元的地址,那么这两个对象的数据成员p存放的是同一个内存单元的地址,即指向同一个地址空间,在这两个对象生存期结束前系统将自动调用其析构函数去释放其数据成员所指向的地址空间,先析构的正确,后析构的就会释放一块已经释放的内存空间,于是导致运行错误。实际上这里需要的是两个指针所指向的存储空间里的值相同。因此在拷贝构造函数里应使用new运算符动态申请一个用于存放int 型数据的内存空间, 将已有对象的数据成员p所指向的地址空间的值存入该新分配

48、的空间中,然后将新空间的首地址赋给新创建对象的数据成员p, 对应的实现语句为p=new int(*(s.p);。 从而实现两个指针所指向的存储空间里的值相同,而不是指向同一个地址空间。故横线处应填入p=new int(*(s.p);。43、 已知数组a中有n个元素,下列语句将数组a中从下标x1 开始的k个元素移动到从下标x2开始的k个元素中,其中0<=x1<x2<n, x2+k<n,请将下列语句补充完整。for(int i=x1+k-1;i>=x1;i-)a=ai;标准答案为:i+x2-x1 或 x2-x1+i本题主要考查了数组。将下标 x1 开始的 k 个元素移

49、动到从下标x2 开始的 k 个元素, 也就是将下标为i ( x1 i x1+k-1 )的元素逐一 向后方移(x2-x1) 个数 , 即移动到下标为(i+x2-x1) 的单元, 所以循环体中的语句应该为ai+x2-x1=ai;或 ax2-x1+i=ai; 。故横线处应填入i+x2-x1 或 x2-x1+i 。44、重载加法运算符"+" ,其函数名是。标准答案为:operator +本题主要考查了运算符重载。C+把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字operator 。故横线处应填入operator + 。45、有如下程序:#include

50、<iostream>using namespace std;int fun1(int x) return +x;int fun2(int &x) return +x;int main()int x=1,y=2;y=fun1(fun2(x);cout<<x<<','<<y;return 0;程序的输出结果是。标准答案为:2,3 或 , 或 , 或 , 或 2, 或 2 , 或 2 , 或 ,3 或 2 , 3或 2, 3本题主要考查了函数的嵌套调用及参数值的传递。执行到语句y=fun1(fun2(x); 时,先以变量x 为实

51、参调用函数fun2 ,函数 fun2 中的参数采用引用传值方式, 即函数中对形参值的改变同样作用于实参上,调用函数fun2 后,实参变量x 的值为2,函数返回值为2,再以该返回值2 作为实参调用函数fun1 ,返回值为3,然后将函数fun1 的返回值3 赋给变量y。故程序的输出结果为 2,3 。46、有如下程序:#include<iostream>using namespace std;class pumpkinpublic:pumpkin()+count;pumpkin()-count;static void total_count()cout<<count<&

52、lt;"pumpkin(s)"<<endl;private:static int count;int pumpkin:count=0;int main()pumpkin p110;pumpkin:total_count();return 0;这个程序的输出结果是。标准答案为:10pumpkin(s)本题主要考查了静态数据成员。一个类的静态成员的特性是被这个类的所有对象所共享,静态成员不属于类的任何一个对象。它的作用域是类范围。本题中,pumpkin类定义了一个静态数据成员count ,并被初始化为0。 main函数的第一条语句定义了一个含有10个元素的对象数组,

53、即创建了10个 pumpkin对象,因为每创建一个pumpkin 对象,系统自动调用一次pumpkin类的构造函数,count 的值就增1, 由此可知count 用来记录建立对象的个数。故第一条语句执行结束后,pumpkin类的构造函数被调用10次, 静态数据成员count 的值为10, 第二条语句调用静态成员函数total_count() ,执行函数体语句cout<<count<<"pumpkin(s)"<<endl; , 在屏幕上输出10pumpkin(s) , 最后执行return 语句返回,整个程序执行结束。因此本题程序的输出结果

54、是10pumpkin(s) 。47、有如下递归函数:int Fun(int n) if(n<=1) return 1;请补充完整,使得函数Fun 能够正确计算形参n 的阶乘。标准答案为:return n*Fun(n-1); 或 return Fun(n-1)*n;本题主要考查了递归函数。递归函数即自调用函数,在函数体内部直接或间接的自己调用自己。一般递归函数由递归出口和递归体两部分组成。递归出口给出了递归终止的条件;递归体给出了递归的方式。题中程序已给出递归出口,但没有给出递归体,根据阶乘的定义:n!=n*(n-1)* *2*1 , 即 n!=n*(n-1)! 可知其递归体为n*Fun(

55、n-1) ,又因为所求的阶乘为函数的返回值,故横线处应填入return n*Fun(n-1); 或 return Fun(n-1)*n;。48、请在下列程序中的空格处填写正确的语句:class Samplepublic:Sample()Sample()void SetDate(int data) /将 Sample类成员变量date 设置成形参的值private:int data;标准答案为:Sample:data=data; 或 this->data=data;本题主要考查了变量的作用域和可见性。类 Sample 的数据成员data 具有类作用域,成员函数SetData 的形参 data 具有块作用域,该类作用域包含块作用域,因为在两个或多个具有包含关系的作用域中声明了同名标识符,则外层标识符在内层不可见,所以在成员函数S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论