《全国计算机二级C++考题真题及答案.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C++考题真题及答案.docx(141页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2010年3月考试真题(第31次)1 .数据流程图(DFD图)是。A、软件概要设计的工具B、软件详细设计的工具C,结构化方法的需求分析工具 D、面向对象方法的需求分析工具常见的需求分析方法有:结构化分析方法和面向对象的分析方法.结构化分析就是使用数据流图(DFD)、数据字典(DD)、结构 化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。故本题答案为C。2 .软件(程序)调试的任务是.A,诊断和改正程序中的错误B、尽可能多地发现程序中的错误C、发现并改正程序中的所有错误 D、确定程序中错误的性质程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能
2、多地发现软件中的错误。先要发现软件的错 误,然后借助于一定的调试工具去执行找出软件错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开发阶段。故本题答案为A。3 .软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是.A、编辑软件 B、操作系统C、教务管理系统 D、浏览器软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。例如, 事务处理软件,工程与科学计算软件,实时处理软件,嵌入式软件,人工智能软件等应用性质不同的各种软件。系统软件是计算 机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的
3、软件.如操作系统,编译程序,汇编程序,网络软件,数 据库管理系统等,所以选项B属于系统软件.故本题答案为B。4 .软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于.A、定义阶段 B、开发阶段 C、维护阶段 D、上述三个阶段软件生命周期可分为软件定义、软件开发及软件运行维护三个阶段。软件开发阶段包括概要设计、详细设计、实现和测试四个活 动阶段。故本题答案为B。5 .下列叙述中正确的是.A,对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为D
4、、对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为Slog211)对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较bg2n次,而顺序查找需要比较n次。二分法查找只适用于顺序 存储的有序表,如果采用链式存储结构,也只能用顺序查找,所以选项A是正确的。故本题答案为A。6 .有两个关系R和T如下:RTABCa12b22c32d32ABCc32d32则由关系R得到关系T的操作是。A,选择 B、投影 C、交 D、并从关系中找出满足给定条件的元组的操作称为选择。选择是从行的角度进行的运算,即从水平方向抽取记录。由图可知关系R通过运算得到关系T,繇T与关系R相比,属性的个数没有发生变化
5、,记录的条数发生了变化。因此所使用的运算应该是选择。故本题答案为A。7 .算法的时间复杂度是指.A、算法的执行时间B、算法所处理的数据量C、算法程序中的语句或指令条数D,算法在执行过程中所需要的基本运算次数所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工 作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此, 可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。故本题答案为D。8 .数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属了数据
6、库设计的。A、需求分析阶段 B、逻辑设计阶段C、概念设计阶段 D、物理设计阶段E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的 工具。故本题答案为C。9 .在学生管理的关系数据库中,存取一个学生信息的数据单位是。A、文件B、数据库 C、字段 D、记录实体是概念世界中的基本单位,属性附属了实体,它本身并不构成独立单位。属性有属性域,每个实体可取属性域内的值。-个 实体的所有属性取值组成了一个值集叫元组(或称记录)。在概念世界中,可以用元组表示实体,也可用它区别不同的实体。所 以在学生管理的关系数据库中,存取一个学生信息的数据单
7、位是元组(或记录)。故本题答案为D。10 .数据库管理系统中负责数据模式定义的语言是.A、数据定义语言 B、数据管理语言C、数据操纵语言D、数据控制语言数据定义语言(DDL):该语言负责数据的模式定义与数据的物理存取构建。数据操纵语言(DML):该语言负责数据的操纵,包括查询及增、册人改等操作。数据控制语言(DCL):该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。故本题答案为A。11 .有如下两个类定义class XXprivate:double xl;protected:double x2;public:double x3;1;class YY:protected X
8、Xprivate: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+中,ci
9、n是一个.A、类 B、对象 C、模板 D、函数本题主要考查了 I/O流。在C+中,数据的输入与输出是通过I/O流来实现,cin和cout是预定义的流类对象。故本题答案为B。13 .若x和y是程序中的两个整型变量,则下列if语句中正确的是.A, if(x=0) y=l;else y=2;B、 if(x=0) then y=l else y=2;C、if(x=0) y=l else y=2;D if x=0 y=l; else y=2;本题主要考查了 if语句。if语句的语法形式为:if(表达式)语句1else语句2在C+中,if语句中没有then,语句最后必须有一个分号,因此选项A正确,选项B和
10、选项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); 本题主要考杳了运算符的重载。运算符的重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能类似, 不能改
11、变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。选项A、选项B和选项D的两个参数中至少有一个参 数是自定义类型,因此选项A、选项B和选项D正确。选项C中两个参数都是基本数据类型,没有自定义类型,因此选项C错误。 故本题答案是C.15 .耍定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是A、int x3 = 0, 0, 0; B、int x = 0; C、static int x3 = 0; D、int x = 0, 0, 0);本题主要考查了一维数组的定义与初始化。一维数组的定义形式为:数据类型数组名数组元素个数;数组的初始化就是在声明数组时给部分或全部元素赋初值
12、。选项A定义了有三个元素的整型数组x,并初始化三个元素的值为0, 因此选项AiE确;当声明数组时没有给出数组元素个数,但是有初始化列表,数组元素个数由列表中元素个数来确定,因此选项D 正确;选项B没有给出数组元素个数,并且在初始化列表中只给一个元素值,因此选项B定义了只有一个元素的整型数组,故选项B 错误:对了数值类型数组,如果给定的数值不够,则没有指定数值的元素将初始化为0,因此选项C正确。故本题答案为B。16 .下列控制格式输入输出的操作符中,能够设置浮点数精度的是。A、 setprecision B、 setw C、 setfill D、 showpoint 本题主要考杳了输出流的格式控
13、制。setprecision(int n)用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。因此选项A正确。setw(int n)用于预设输入输出宽度。setfill (char c)用丁一预设填充字符。showpoint用于给浮点数显示小数点和尾部的0.因此选项B、选项C和选项D不正确。故本题答案为A。17 .若My Temp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempdouble p2;MyTerap p32;编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是一。A、1 B、2 C、3 D、0 本题主要考核类模板。类模板声明的语法形式
14、为: template模板参数表) class类名 类成员声明 使用类模板来建立对象时,应按如卜.形式声明: 类名模板实参表对象名1,对象名n;在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例 化。类模板实例化所生成的每个类定义就是相应类模板的个实例,因此类模板的实例个数由类型参数的种类决定。本题使用 类模板MyTemp定义对象时指定了两种类型参数:double和long,因此所生成的实例个数是2。故本题答案为B。18 .下列代码段声明了3个类 class Person;class Student:public Person(); c
15、lass Undergraduate:Student); 下列关于这些类之间关系的描述中,错误的是.0 A、类Person是类Undergraduate的基类B、类Undergraduate从类Student公有继承C、类Student是类Person的派生类D、类Undergraduate是类Person的派生类本题主要考杳了类的继承与派生。在C+中,定义派生类的一般语法形式为:class派生类名:继承方式基类名1,继承方式基类名2,,继承方式基类名n (派生类成员声明;类的继承方式有三种:公有(public)继承、保护(protected)继承和私有(private)继承。如果不显式地给出
16、继承方式, 缺省的类继承方式是私有(private)继承。在声明派生类Undergraduate时缺省继承方式,因此类Undergraduate从类Student私 有继承,故选项B错误。故本题答案为B。19 .将前缀运算符重载为非成员函数,下列原型中,能正确用于类中说明的是 oA、Decr& operator -(int); B、Deer operator (Decr&, int);C、friend Decr& operator (Decr&); D、friend Deer operator (Decr&, int); 本题主要考杳了运算符的重载。运算符一既可以是前缀运算符(前减D ,又可以
17、是后缀运算符(后减1)。为了区分这两种情况,重载这两个运算符时必须 在格式上有所区别:重载后缀一时必须多一个虚拟参数:int。如果将前缀一和后缀一作为非成员函数重载,那个唯一的操作数必 须作为第一参数提供。又因为要修改第一操作数,对应的参数必须声明为引用。前缀一作为非成员函数重载的一般形式为: friend Decr& operator (Decrft);后缀一作为非成员函数重载的一般形式为: friend Deer operator (Decr&, int); 当运算符重载为类的成员函数时,函数的参数个数比原来的参数个数少一个。 前缀一作为成员函数重载的般形式为: Decrft operat
18、or -();后缀一作为成员函数重载的般形式为: Deer operator -(int);因此选项C正确,选项D是后缀一作为非成员函数重载的形式。故本题答案为C。20 .有如下程序:#include using namespace std;class Basepublic:Base(int x=0): valB(x) coutvalB; BaseO ( coutvalB; private:int valB;);class Derived:public Basepublic:Derived(int x=0, int y=0) :Base(x), valD(y) coutvalD;Derived
19、 () coutvalD;private:int valD;):int main() Derived objl2(2, 3);return 0;)运行时的输出结果是 oA、 2332 B、 2323 C、 3232 D、 3223 本题主要考杳了派生类的构造函数与析构函数。构造函数在对象被创建的时候由系统自动调用,建立派生类对象时,构造函数的执行顺序如下:(1)执行基类的构造函数, 调用顺序按照各个基类被继承时声明的顺序(自左向右);(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声 明的顺序(自上而下):(3)执行派生类的构造函数。析构函数用来完成对象被删除前的一些清理工作,在对
20、象的生存期即将结束的时刻被系统自动调用。派生类的析构函数在执 行过程中也要对基类和成员对象进行操作,但它的执行过程与构造函数严格相反,即:(1)对派生类新增普通成员进行清理。(2) 调用成员对象析构函数,对派生类新增的成员对象进行清理。(3)调用基类析构函数,对基类进行清理。main。函数中,第,条语句Derived objl2(2, 3);创建派生类对象objl2时,先以第个实参2初始化基类Base成员valB,执行 基类Base的构造函数,输出valB的值2;然后以第二个实参值3初始化派生类Derivecl成员valD,执行派生类Derived的构造函数, 输出valD的值3;在对象obj
21、l2的生存期即将结束时,先调用派生类Derived的析构函数,输出valD的值3,然后调用基类析构函数, 输出valB的值2。因此本程序运行时的输出结果是2332。故本题答案为A。21 .有如下程序4include using namespace std;class Apublic:A(int i=0):rl(i) void print () cout,E* rl*,;void print () const cout* C* rl*rl;void print (int x) cout* P* rl*rl*rl ; private:int rl;;int mainO A al;const A a
22、2(4);al. print (2);a2. print ();return 0;)运行时的输出结果是.OA、 P8-E4 B、 P8-C16- C、 P0-E4- D、 P0-C16- 本题主要考杳了函数的重载、常对象和常成员函数。使用const关键字修饰的对象称为常对象,使用const关键字说明的成员函数称为常成员函数,通过常对象只能调用它的常成 员函数,而不能调用丈他成员函数。两个以上的函数,具有相同的函数名,但是形参的个数或类型不同,编译器根据实参和形参 的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。const关键字可以用于对重载函数的区分。在main。函数中,第一
23、条语句定义类A的对象al,系统自动调用类A的构造函数,以默认形参值。初始化对象al的数据成员rl; 第二条语句定义常对象a2,系统自动调用类A的构造函数,以实参值4初始化对象a2的数据成员rl:第三条语句通过对象al调用带 一个整型形参的没用const修饰的print。函数,表达式rl*rl*门二0*0*0=0,因此输出P0-,第四条语句常对象a2调用的是用const 修饰的常成员函数print。,表达式rl*rl的值为:4*4=16,因此输出C16-。故程序运行时的输出结果是P0-C16-故本题答案为D。22 .若MyClass是个类名,且有如下语句序列MyClass cl,*c2;MyCl
24、ass *c3=new MyClass;MyClass &c4=cl;上面的语句序列所定义的类对象的个数是.A, 1B、 2 C、 3 D、 4本题主耍考查了对象的定义。第1条语句定义了 MyClass类的对象cl和MyClass类的对象指针变量c2。因为定义对象指针只是得到了用于存储对象地址的指针 变量,不会创建对象,因此第1条语句只定义了一个类对象cl;第2条语句定义了对象指针变量c3。并初始化c3指向用new运算符动 态创建的对象,因此第2条语句用new运算符动态定义了一个对象;第3条语句声明了对象引用c4,并将其初始化为对象cl的一个别 名。因为创建对象引用只是为已有对象创建别名,不会
25、创建对象,因此第3条语句没有创建类对象.因此这3条语句所定义的类对 象的个数是2。故本题答案为B。23 .下列关于类模板的描述中,错误的是.A、类模板的成员函数都是模板函数B、可以为类模板参数设置默认值C、类模板描述了一组类 D、类模板中只允许有一个类型参数 本题主要考查了类模板。使用类模板可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。 因此选项C正确:类模板声明的语法形式为:template模板参数表class类名类成员声明其中模板参数表”由用逗号分隔的若干类型标识符或常量表达式构成,因此选项D错误:可以为类模板中的类型参数和非类型 参数
26、提供默认值,如果某个类模板参数有默认值,该列表中的所有后续参数也都必须指定默认值。因此选项8正确。类模板的成员 函数都是模板函数,因此选项A正确。故本题答案为D。24 .有如下程序 include using namespace std; class Test public:TestO ()Test (const Test& t) coutl; );Test fun(Test &u) Test t=u;return t; int mainO (Test x, y; x=fun(y);return 0; ) 运行这个程序的输出结果是。A、无输出 B、1 C、11 D、111 本题主要考杳了拷贝构
27、造函数。拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用.作用是使用一个已知的 对象初始化一个正在创建的同类对象。拷贝构造函数在以K三种情况卜都会被调用:1)当用类的一个对象初始化该类的另一个对象时;2)如果函数的形参是类的对象,调用函数时,进行形参和实参结合时:3)如果函数的返回值是类的对象,函数执行完成返回调用者时。函数fun的形参为类Test的对象的引用,main。函数中,第:条语句x=fun(y);调用函数fun()。使引用u为实参y的别名,然后 执行函数fun()的第条语句Testt=u;, RI用Test类的对象u去初始化该类的另 个对象3系统
28、将自动调用拷贝构造函数,输出1, 然后执行函数fun()的第二条语句return t;,函数fun()的返回值为Test类的对象t,函数执行完成返回调用者时,系统将第二次 自动调用拷贝构造函数,输出1,程序执行结束。故运行这个程序的输出结果是11。故本题答案为C。25 .要定义一个引用变最p,使用引用类MyClass的一个对象,正确的定义语句是.A、 MyClass p=MyClass; B, MyClass p=new MyClass;C、 MyClass &p=new MyClass; D、 MyClass a, &p=a; 本题主耍考查了引用的声明。引用的声明形式:类型标识符&引用名=目
29、标变量名; 说明:(1)&在此不是求地址运算,而是起标识作用.(2)类型标识符是指目标变量的类型.(3)声明引用时,必须同时对其进行初始化。(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此 引用本身不占存储单元,系统也不给引用分配存储单元。选项A和选项B在变量p的左边没有标识&,不符合引用声明形式,因此选项A和选项B错误;选项C中,赋值号右边不是已存在的 变量名,不符合引用声明的语法形式,因此选项C错误;选项D先声名对象a,然后声明引用为己声明变最名a的别名,符合引用声 明形式,因此选项D正确。故本题答案为D.26 .下列关于函数的
30、描述中,错误的是.A、函数可以没有返回值B、函数可以没有参数C、函数可以是一个类的成员D、函数不能被定义为模板 本题主要考查了函数。函数定义的语法形式:类型标识符函数名(形式参数列表)语句序列无返回值的函数其类型标识符为void。故选项AiE确:函数可以没有参数,当函数定义时没有形参,则函数调用时,实参表) 亦为空,故选项B正确;函数可以是类的成员,故选项C正确;模板是C+支持参数化多态性的工具,函数模板实现了类型参数化, 将函数处理的数据类型作为参数,提高了代码的可重用性,故选项D错误。故本题答案为D。27 .下列程序段中包含4个函数,其中具有隐含this指针的是 oint funl0;cl
31、ass Testpublic:int fun2();friend int fun3();static int fun4(););A、 funl B、 fun2 C、 fun3 D、 fun4本题主要考查了 this指针。this指针是一个隐含于每一个非静态成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该 成员函数的对象。因此类Test的非静态成员函数fun2中具有隐含this指针,故选项B1E确。函数funl和函数fun3均不是成员函数, 因此不具有隐含this指针,故选项A和选项C不正确;静态成员不属于类的任何一个对象,而是属于整个类,因此静态成员没有this 指
32、针,故静态成员函数fun4中没有this指针,故选项D错误。故本题答案为B。28 .卜面是类Shape的定义:class Shapepublic:virtual void Draw()=0;);下列关于Shape类的描述中,正确的是。A、类Shape是虚基类B、类Shape是抽象类C、类Shape中的Draw函数声明有误D、语句Shape s;能够建立Shape的一个对象s本题主要考杳了纯虚函数和抽象类。声明纯虚函数的语法形式为:virtual函数类型函数名(参数表)=0;所以函数Draw。是纯虚函数。带有纯虚函数的类是抽象类,所以类Shape是抽象类,因此选项B1E确;抽象类不能实例化,即
33、不能定义一个抽象类的对象,因此选项D错误。故本题答案是B。29 .关于函数中的返回类型),下列表述中错误的是。A、返回类型中有可能包含关键字int B、返回类型中有可能包含自定义标识符C、返回类型中有可能包含字符* D、返回类型中有可能包含口本题主要考杳了函数的返叵1类型。函数的定义形式为:返回类型函数名(形参列表)函数体返回类型又称函数类型,表示一个函数所计算(或运行)的结果值的类型.因为函数的结果值可以为整型,因此返回类型可 能包含关键字int,选项A正确;函数的返回类型可以为类,因此返回类型可能包含自定义标识符,选项B正确:函数的返回类型可 以为指针,因此返回类型可能包含字符*,选项C正
34、确:但返回类型不能为数组,因此返回类型中不可能包含口,因此选项D错误。故本题答案为D。30 .打开文件时可单独或组合使用下列文件打开模式ios_base:appios_base: binaryios_base: inios_ base: :out若要以二进制读方式打开一个文件,需使用的文件打开模式为 OA、 B、 C、D、本题主要考杳了 I/O流。打开一个与输出流关联的文件时,通常要指定文件模式。ios base: :app模式的功能:以写方式打开文件,若文件不存在则创 建文件,若文件已存在则向文件尾添加数据;ios_base: :binary模式:以二进制模式打开文件(缺省为文本模式);io
35、s_base: in 模式:以读方式打开文件;ios base: :out模式:以写方式打开文件,若文件不存在则创建,若文件已存在则清空原内容(ofstream 默认的打开方式)。因此若要以二进制读方式打开一个文件,需使用的文件打开模式为:ios_base: binary Iios base: in.故本题答案为C。31 .下列关于继承方式的描述中,错误的是.A、如果不显式地指定继承方式,缺省的继承方式是私有(private)B、采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C、采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D,采用私有继承方式时,基类中的私有成员在
36、派生类中仍然是私有成员 本题主要考查了类的继承与派生。类的继承方式有一:种:公有(public)继承、保护(protected)继承和私有(private)继承。如果不显式地给出继承方式, 缺省的类继承方式是私有(private)继承。因此选项A正确:当派生类从基类公有继承时,基类的公有成员和保护成员的访问属 性在派生类中不变,仍作为派生类的公有成员和保护成员,因此选项B正确;当派生类从基类保护继承时,基类的公有成员和保护 成员在派生类中都为保护成员,因此选项C正确:当派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私 有成员;无论哪种继承方式,派生类中的成员都不能访问基类中
37、的私有成员,因此选项D错误。故本题答案为D。32 .下列关于运算符重载的描述中,错误的是.A,可以通过运算符重载在C+中创建新的运算符B、赋值运算符只能重载为成员函数C、运算符函数重载为类的成员函数时,第操作数是该类对象D、重载类型转换运算符时不需要声明返回类型本题主要考杳了运算符重载。”运算符重载”是针对C+中原有运算符进行的,不可能通过重载创造出新的运算符,因此选项A错误;在C+中,运算符的重载 方式有两种:(1)重载为成员函数;(2)重载为友元函数。=、口、0、以及所有的类型转换运算符只能重载为成员 函数,因此选项B正确:运算符重载为成员函数时,第-操作数就是对象本身,并不显式地出现在参
38、数表中,因此选项CiE确:建 载类型转换运算符的格式为:operator类型名0 ,其中类型名就代表了返I同类型,因此重载类型转换运算符时不需要声明返回 类型,因此选项D正确。故本题答案为A。33 .有以下程序:ttinclude using namespace std;class Bpublic:B(int xx):x(xx) +count; x+=10; virtual void show() const coutcountshow();delete ptr:return 0;)运行时的输出结果是一 OA、 l_120 B、 2_120 C、 l_20 D、 2_20本题主要考查了派生类的
39、构造函数、静态成员函数以及虚函数。建立派生类对象时,构造函数的执行顺序如卜.: (1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自 左向右);(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构 造函数。用static关键字声明的数据成员为静态数据成员,静态成员在每个类只有一个拷贝,由该类的所有对象共同维护和使用。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。在C+中,一个基类指针(或引用)可以用于指向它的 派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象
40、类的那个重定义版 本。本题中,函数show在基类B和派生类D中都声明为虚函数。在基类B中把保护成员定义为静态成员count,派生类D以公有继承方 式从基类B继承了保护成员count。它被某类B和派生类D的所有对象所共享,但它不属于类的任何一个对象。在main。函数中,第条语句通过new运算符创建派生类D的对象,并把对象的首地址赋给基类指针ptr,即基类指针ptr指向派生类对象。在创建派生 类对象时,先执行基类B的构造函数,count的值为1,然后执行派生类D的构造函数,count的值为2, y的值为120; main。函数的 第二条语句通过基类指针ptr调用虚函数show。,被调用的是该指针实
41、际所指向的派生类对象类的重定义版本,即输出220。故本题答案为B。34 .下列叙述中,错误的是 oA、false是一个逻辑型常量B、b是一个字符型常量C、365是一个int常量D、3. 1415926是一个double常量本题主要考杳了常量。在C+中,逻辑型常量有两个:false (假)和true (真),因此选项A正确;字符型常量是单引号括起来的一个字符,字符串 常量是双引号括起来的字符序列,因此b是字符中,不是字符,故选项B错误;整型常量默认为int型,因此选项C正确:实型常 量默认为double型,因此选项D正确。故本题答案为B35 .在下列字符中,不允许作为C+标识符的是。A、 b B
42、、 B C、 _ D、 2本题主要考查了 C+中的标识符命名规则。标识符的组成要符合一定的规则:(1)标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串;(2)标识符不能与任意一个关键字同名;(3)标识符中的字母区分大小写;(4)标识符不宜过长。在选项D中,标识符的第一个字符是数字,因此不是合法的标识符,不允许作为C+标识符。故本题答案为D。36 .软件是 、数据和文档的集合。标准答案为:程序 考生答案为:函数计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。37 .有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄)
43、,课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号, ,成绩)。标准答案为:课号 考生答案为:课号码也称为关键字,是表中若干属性的属性组,其值惟一标识表中的一个元组。在关系模式选课中能惟一标识一个元组的是学号, 课号。38 .设某循环队列的容量为50,如果头指针front=45 (指向队头元素的前一位置),尾指针rear=10 (指向队尾元素),则该循环 队列中共有 个元素。标准答案为:15或十五或15考生答案为:35在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从
44、排头指针front 指向的后一个位置直至队尾指针rear指向的位置之间所有的元素均为队列中的元素。本题中队列的容量为50,头指针为45,那么 从头指针到50之间有46、47、48、49、50,共5个元素,尾指针为10,那么从1到10之间有10个元素,所以共有15个元素。39 .设二叉树如下:对该二叉树进行后序遍历的结果为标准答案为:EDBGHFCA 或 E、D、B、G、H、F、C、A 或 E, D, B, G, H, F, C, A 或 E, D, B, G, H, F, C, A考生答案为:EDGHFCA后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树
45、,最后访问根结点,并且, 在遍历左、右子树时,仍然先遍历左子树,然后遍历布子树,最后访问根结点。40 . 一个队列的初始状态为空。现将元素人,8,&“1,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为.标准答案为:A, B, C, D, E, F, 5,4,3,2, 1 或 A, B, C, D, E, F, 5, 4, 3, 2, 1 或 A、B, C、D、E、F、5、4、3、2、 1 或 ABCDEF54321 或 A, B, C, D, E, F, 5, 4, 3, 2, 1 或 A, B, C, D, E, F, 5, 4, 3, 2, 1 或 A, B, C, D, E, F, 5,4, 3, 2, 1 或 A,B,C, D,E,F, 5, 4, 3, 2, 1考生答案为:A, B, C, D, E, F, 5, 4, 3, 2, 1队列是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。在队列这 种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。因此,队列又称为先进先出或 后进后出”的线性表。41 .若x