《二级c笔试历年真题.pdf》由会员分享,可在线阅读,更多相关《二级c笔试历年真题.pdf(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2 0 1 0 年3 月考试真题(第3 1 次)1 .数据流程图(D F D 图)是。A、软件概要设计的工具 B、软件详细设计的工具C、结构化方法的需求分析工具 D、面向对象方法的需求分析工具常见的需求分析方法有:结构化分析方法和面向对象的分析方法。结构化分析就是使用数据流图(D F D)、数据字典(D D)、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。故本题答案为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 的有序链表进行对分查找,最坏情况下需要的比较次数
4、为(n/2)C、对长度为n 的有序链表进行对分查找,最坏情况下需要的比较次数为Ogan)D、对长度为n 的有序链表进行对分查找,最坏情况下需要的比较次数为(加咤21 1)对于长度为n 的有序线性表,在最坏情况下,二分查找只需要比较1 0g 2 n 次,而顺序查找需要比较n 次。二分法查找只适用于顺序存储的有序表,如果采用链式存储结构,也只能用顺序查找,所以选项A 是正确的。故本题答案为A。6 .有两个关系R 和T 如下:RTABCa12b22c32d32ABCc32d32则由关系R 得到关系T 的操作是A、选择 B、投影 C、交 D、并从关系中找出满足给定条件的元组的操作称为选择。选择是从行的
5、角度进行的运算,即从水平方向抽取记录。由图可知关系R通过运算得到关系T,关系T与关系R相比,属性的个数没有发生变化,记录的条数发生了变化。因此所使用的运算应该是选择。故本题答案为A。7 .算法的时间复杂度是指_ _ _ _。A、算法的执行时间 B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的基本运算次数所谓算法的时间复杂度,是指执行算法所需要的计算工作量。为了能够比较客观地反映出一个算法的效率,在度量一个算法的工作量时,不仅应该与所使用的计算机、程序设计语言以及程序编制者无关,而且还应该与算法实现过程中的许多细节无关。为此,可.以用算法在执行过程中所需基本运算的
6、执行次数来度量算法的工作量。故本题答案为D。8 .数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它 属 于 数 据 库 设 计 的。A、需求分析阶段 B、逻辑设计阶段 C、概念设计阶段 D、物理设计阶段E-R图是E-R模型的一种非常直观的图的形式表示,它描述信息结构但不涉及信息在计算机中的表示,它是数据库概念设计阶段的工具。故本题答案为C。9 .在学生管理的关系数据库中,存 取 一 个 学 生 信 息 的 数 据 单 位 是.A、文件 B、数据库 C、字段 D、记录实体是概念世界中的基本单位,属性附属于实体,它本身并不构成独立单位。属性有属性域,每个实体可取属性域内的值。
7、一个实体的所有属性取值组成了一个值集叫元组(或称记录)。在概念世界中,可以用元组表示实体,也可用它区别不同的实体。所以在学生管理的关系数据库中,存取一个学生信息的数据单位是元组(或记录)。故本题答案为D。1 0 .数 据 库 管 理 系 统 中 负 责 数 据 模 式 定 义 的 语 言 是。A、数据定义语言 B、数 据 管 理 语 言C、数 据 操 纵 语 言D、数据控制语言数据定义语言(D D L):该语言负责数据的模式定义与数据的物理存取构建。数据操纵语言(D M L):该语言负责数据的操纵,包括查询及增、删、改等操作。数据控制语言(D C L):该语言负责数据完整性、安全性的定义与检查
8、以及并发控制、故障恢复等功能。故本题答案为A。1 1 .有如下两个类定义c l a s s X X p r i v a t e:do u bl e x l;p r o t e ct e d:do u bl e x 2;p u bl i c:do u bl e x 3;cl a s s Y Y:p r o t e ct e d X X p r i v a t e:do u bl e y l;p r o t e ct e d:do u b1 e y 2;p u bl i c:do u bl e y 3;在类Y Y中保护成员变量的个数是_ _ _ _ _.A、1 B、2 C、3 D、4本题主要考查了
9、类的继承与派生。类的继承方式有三种:公 有(p u bl i c)继承、保 护(p r o t e ct e d)继承和私有(p r i v a t e)继承。当|派生类从基类保护继承时,基类的公有成员和保护成员在派生类中都为保护成员。本题派生类Y Y从基类X X保护继承,因此基类X X的公有成员x 3和保护成员x 2都成为派生类Y Y的保护成员,再加上派生类Y Y自身的保护成员y 2,因此类Y Y中有3个保护成员。故本题答案为C。1 2 .在C+中,ci n是一个。A、类 B、对象 C、模板 D、函数本题主要考查了 I/O流。在C+中,数据的输入与输出是通过I/O流来实现,ci n和co u
10、 t是预定义的流类对象。故本题答案为B。1 3 .若x和y是程序中的两个整型变量,则下列i f语句中正确的是。A、i f(x=0)y=l;e l s e y=2;B、i f(x=0)t h e n y=l e l s e y=2;C、i f(x=0)y=l e l s e y=2;D i f x=0 y=l;e l s e y=2;本题主要考查了 i f语句。i f语句的语法形式为:i f(表达式)语句1e l s e语句2在C+中,i f语句中没有t h e n,语句最后必须有一个分号,因此选项A正确,选项B和选项C错误;在选项D中,表达式x=0应该用圆括号括起来,因此选项D错误。故本题答案
11、为鼠1 4 .将运算符重载为非成员函数,下列原型声明中,错误的是 0A、M y Cl o ck o p e r a t o r +(M y Cl o ck,l o n g);B、M y Cl o ck o p e r a t o r +(M y Cl o ck,M y Cl o ck);C、M y Cl o ck o p e r a t o r +(l o n g,l o n g);D、M y Cl o ck o p e r a t o r +(l o n g,M y Cl o ck);本题主要考查了运算符的重载。运算符的重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重
12、载的功能应当与原有功能类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。选项A、选项B和选项D的两个参数中至少有一个参数是自定义类型,因此选项A、选项B和选项D正确。选项C中两个参数都是基本数据类型,没有自定义类型,因此选项C错误。故本题答案是C。1 5 .要定义整型数组x,使之包括初值为0的三个元素,下 列 语 句 中 错 误 的 是。A、i n t x 3 =0,0,0 ;B i n t x =0);C、s t a t i c i n t x 3 =0 ;D、i n t x =0,0,0 ;本题主要考查了一维数组的定义与初始化。一维数组的定义形式为:数据类型数组名
13、数组元素个数;数组的初始化就是在声明数组时给部分或全部元素赋初值。选项A定义了有三个元素的整型数组x,并初始化三个元素的值为0,因此选项A正确;当声明数组时没有给出数组元素个数,但是有初始化列表,数组元素个数由列表中元素个数来确定,因此选项D正确:选项B没有给出数组元素个数,并且在初始化列表中只给一个元素值,因此选项B定义了只有一个元素的整型数组,故选项B错误;对于数值类型数组,如果给定的数值不够,则没有指定数值的元素将初始化为0,因此选项C正确。故本题答案为B。1 6 .下列控制格式输入输出的操作符中,能 够 设 置 浮 点 数 精 度 的 是。A、s e t p r e ci s i o
14、n B、s e t w C s e t f i l l D、s h o w p o i n t本题主要考查了输出流的格式控制。s e t p r e ci s i o n(i n t n)用于控制输出流显示浮点数的精度,整数n代表显示的浮点数数字的个数。因此选项A正确。s e t w(i n t n)用于一预设输入输出宽度。s e t f i l l (ch a r c)用于预设填充字符。s h o w p o i n t 用于给浮点数显示小数点和尾部的0。因此选项B、选项C和选项D不正确。故本题答案为A。1 7 .若M y T e m p 是一个只有一个虚拟类型参数的类模板,且有如下语句序列
15、M y T e t n p p 2;M y T e m p p 3 2 ;编译系统在处理上面的语句序列时,所生成的模板M y T e m p 的 实 例 的 个 数 是。A、1 B、2 C、3 D、0本题主要考核类模板。类模板声明的语法形式为:t em pl a t e 模板参数表cl a s s 类名类成员声明使用类模板来建立对象时,应按如下形式声明:类名 模板实参表对象名1,对象名n;在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例,因此类模板的实例个数由类型参数的种类决
16、定。本题使用类模板M yT em p定义对象时指定了两种类型参数:doub l e和l ong,因此所生成的实例个数是2。故本题答案为B。1 8.下列代码段声明了3 个类cl a s s P er s on;cl a s s S t udent:pub l ic P er s on;cl a s s U nder g r a dua t e:S t udent ;下列关于这些类之间关系的描述中,错 误 的 是。A、类Person是类Undergraduate的基类 B、类Undergraduate从类Student公有继承C、类Student是类Person的派生类 D、类Undergradu
17、ate是类Person的派生类本题主要考杳了类的继承与派生。在C+中,定义派生类的一般语法形式为:cl a s s 派生类名:继承方式基类名1,继承方式基类名2,,继承方式基类名n(派生类成员声明;类的继承方式有三种:公 有(pub l ic)继承、保 护(pr ot ect ed)继承和私有(pr iva t e)继承。如果不显式地给出继承方式,缺省的类继承方式是私有(pr iva t e)继承。在声明派生类U nder g r a dua t e时缺省继承方式,因此类U nder g r a dua t e从类S t udent 私有继承,故选项B 错误。故本题答案为B。1 9.将前缀运算
18、符一重载为非成员函数,下列原型中,能正确用于类中说明的是_。A、Decr&operator-(int);B、Deer operator (Decr&,int);C、friend Decr&operator (Decr&);D、friend Deer operator (Decr&,int);本题主要考查了运算符的重载。运算符一既可以是前缀运算符(前减1),又可以是后缀运算符(后减1)。为了区分这两种情况,重载这两个运算符时必须在格式上有所区别:重载后缀一时必须多一个虚拟参数:int。如果将前缀一和后缀一作为非成员函数重载,那个唯一的操作数必须作为第一参数提供。又因为要修改第一操作数,对应的参数
19、必须声明为引用。前缀一作为非成员函数重载的一般形式为:fr iend D ecr&oper a t or -(D ecr&);后缀一作为非成员函数重载的一般形式为:fr iend D eer oper a t or -(D ecr&,int);当运算符重载为类的成员函数时,函数的参数个数比原来的参数个数少一个。前缀一作为成员函数重载的一般形式为:D ecr&oper a t or -();后缀一作为成员函数重载的一般形式为:D eer oper a t or -(int);因此选项C正确,选项D是后缀一作为非成员函数重载的形式。故本题答案为C。2 0.有如下程序:#incl ude us in
20、g na m es pa ce s t d;cl a s s B a s epub l ic:B a s e(int x=0):va l B(x)cout va l B;B a s e。cout va l B;pr iva t e:int va l B;;cl a s s D er ived:pub l ic B a s epub l ic:D er ived(int x=0,int y=0):B a s e(x),va l D(y)cout va l D;D er ived。cout va l D;pr iva t e:int va l D;int m a in()D er ived ob
21、jl 2(2,3);r et ur n 0;运 行 时 的 输 出 结 果 是。A、2 3 3 2 B、2 3 2 3 C、3 2 3 2 D、3 2 2 3本题主要考查了派生类的构造函数与析构函数。构造函数在对象被创建的时候由系统自动调用,建立派生类对象时,构造函数的执行顺序如下:(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右):(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构造函数。析构函数用来完成对象被删除前的一些清理工作,在对象的生存期即将结束的时刻被系统自动调用。派生类的析构函数在执行过程中也要对基类
22、和成员对象进行操作,但它的执行过程与构造函数严格相反,即:(1)对派生类新增普通成员进行清理。(2)调用成员对象析构函数,对派生类新增的成员对象进行清理。(3)调用基类析构函数,对基类进行清理。ma i n。函数中,笫 条 语句De ri ve d o b j l 2(2,3);创建派生类对象o b j l 2时,先以第,个实参2初始化基类Ba se成员va l B,执行基类Ba se的构造函数,输出va l B的值2;然后以第二个实参值3初始化派生类De ri ve d成员va l D,执行派生类De ri ve d的构造函数,输出va l D的值3;在对象o b j l 2的生存期即将结束
23、时,先调用派生类De ri ve d的析构函数,输出va l D的值3,然后调用基类析构函数,输出va l B的值2。因此本程序运行时的输出结果是23 3 2。故本题答案为A。21.有如下程序 i nc l ud e usi ng na me sp a c e std;c l a ss A(p ub l i c:A(i nt i=O):rl(i)vo i d p ri nt()c o ut,EJ rl,一 ;vo i d p ri nt()c o nst c o ut,C*rl*rl,;vo i d p ri nt(i nt x)c o ut,P*rl*rl*rl,;)p ri va te:i
24、 nt rl;);i nt ma i n()A a l;c o nst A a 2(4);a l.p ri nt(2);a 2.p ri nt();re turn 0;)运行时的输出结果是一 OA、P 8-E 4 B、P 8-C16-C、P 0H E 4-D、P 0-C16-本题主要考查了函数的重载、常对象和常成员函数。使用c o nst关键字修饰的对象称为常对象,使用c o nst关键字说明的成员函数称为常成员函数,通过常对象只能调用它的常成员函数,而不能调用其他成员函数。两个以上的函数,具有相同的函数名,但是形参的个数或类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一
25、个函数,这就是函数的重载。c o nst关键字可以用于对重载函数的区分。在ma i n。函数中,第一条语句定义类A的对象a l,系统自动调用类A的构造函数,以默认形参值0初始化对象a l的数据成员rl:第二条语句定义常对象a 2,系统自动调用类A的构造函数,以实参值4初始化对象a 2的数据成员rl;第三条语句通过对象a l调用带一个整型形参的没用c o nst修饰的p ri nt。函数,表达式rl*rl*rl=0*0*0=0,因此输出P 0-,第四条语句常对象a 2调用的是用c o nst修饰的常成员函数p ri nt(),表达式rl*rl的值为:4*4=16,因此输出C16-。故程序运行时的
26、输出结果是P 0-C16-故本题答案为D。22.若M yCl a ss是个类名,且有如下语句序列M yCl a ss c l,*c 2;M yCl a ss*c 3=ne w M yCl a ss;M yCl a ss&c 4=c l;上面的语句序列所定义的类对象的个数是_ _ _ _ _oA、1 B、2 C、3 I)、4本题主要考查了对象的定义。第1条语句定义了M yCl a ss类的对象c l和M yCl a ss类的对象指针变量c 2。因为定义对象指针只是得到了用于存储对象地址的指针变量,不会创建对象,因此第1条语句只定义了一个类对象c l:第2条语句定义了对象指针变量c 3。并初始化c
27、 3指向用ne w运算符动态创建的对象,因此第2条语句用ne w运算符动态定义了一个对象;第3条语句声明了对象引用c 4,并将其初始化为对象c l的一个别名。因为创建对象引用只是为己有对象创建别名,不会创建对象,因此第3条语句没有创建类对象。因此这3条语句所定义的类对象的个数是2。故本题答案为B。23 .下列关于类模板的描述中,错误的是A、类模板的成员函数都是模板函数 B、可以为类模板参数设置默认值C、类模板描述了一组类 D、类模板中只允许有一个类型参数本题主要考查了类模板。使用类模板可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。因此选项C
28、正确;类模板声明的语法形式为:templa teC模板参数表cla ss类名类成员声明其中模板参数表”由用逗号分隔的若干类型标识符或常量表达式构成,因此选项D错误;可以为类模板中的类型参数和非类型参数提供默认值,如果某个类模板参数有默认值,该列表中的所有后续参数也都必须指定默认值。因此选项B正确。类模板的成员函数都是模板函数,因此选项A正确。故本题答案为1)。2 4 .有如下程序#i nclude usi ng na mespa ce std;cla ss T estpub li c:T est()T est(const T est&t)cout f u n 4本题主要考查了 t h i s
29、指针。t h i s 指针是一个隐含于每一个非静态成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。因此类T e s t 的非静态成员函数f u n 2 中具有隐含t h i s 指针,故选项B正确。函数f u n l 和函数f u n 3均不是成员函数,因此不具有隐含t h i s 指针,故选项A和选项C不正确;静态成员不属于类的任何一个对象,而是属于整个类,因此静态成员没有t h i s 指针,故静态成员函数f u n 4 中没有t h i s 指针,故选项D错误。故本题答案为B。2 8.下面是类Sh a p e 的定义:c l a s s Sh
30、a p e p u b l i c:vi r t u a l vo i d Dr a w()=0;);下列关于Sh a p e 类的描述中,正确的是 oA、类Sh a p e 是虚基类 B、类Sh a p e 是抽象类C、类Sh a p e 中的Dr a w 函数声明有误 I)、语句 Sh a p e s;能够建立Sh a p e 的个对象s本题主要考查了纯虚函数和抽象类。声明纯虚函数的语法形式为:vi r t u a l 函数类型函数名(参数表)=0;所以函数Dr a w。是纯虚函数。带有纯虚函数的类是抽象类,所以类Sh a p e 是抽象类,因此选项B正确;抽象类不能实例化,即不能定义一个
31、抽象类的对象,因此选项D错误。故本题答案是B。2 9.关于函数中的 返回类型,下 列 表 述 中 错 误 的 是。A、返回类型 中有可能包含关键字i n t B、(返回类型 中有可能包含自定义标识符C、返回类型 中有可能包含字符*I)、返回类型 中有可能包含口本题主要考查了函数的返回类型。函数的定义形式为:返回类型函数名(形参列表)函数体返回类型又称函数类型,表示一个函数所计算(或运行)的结果值的类型。因为函数的结果值可以为整型,因此返回类型可能包含关键字i n t,选项A正确:函数的返回类型可以为类,因此返回类型可能包含自定义标识符,选项B正确;函数的返回类型可以为指针,因此返回类型可能包含
32、字符*,选项C正确;但返回类型不能为数组,因此返回类型中不可能包含口,因此选项D错误。故本题答案为D。30 .打开文件时可单独或组合使用下列文件打开模式i o s _ b a s e:a p p (2)i o s _ b a s e:b i n a r yi o s _ b a s e:i n i o s b a s e:o u t若要以二进制读方式打开一个文件,需 使 用 的 文 件 打 开 模 式 为.A、B、C、D、本题主要考查了 I/O流。打开一个与输出流关联的文件时,通常要指定文件模式。i o s _ b a s e:a p p 模式的功能:以写方式打开文件,若文件不存在则创建文件,
33、若文件已存在则向文件尾添加数据;i o s _ b a s e:b i n a r y 模式:以二进制模式打开文件(缺省为文本模式);i o s _ b a s e:i n 模式:以读方式打开文件;i o s b a s e:o u t 模式:以写方式打开文件,若文件不存在则创建,若文件已存在则清空原内容(o f s t r e a m 默认的打开方式)。因此若要以二进制读方式打开一个文件,需使用的文件打开模式为:i o s _ b a s e:b i n a r y i i o s b a s e:i n。故本题答案为C。31 .下列关于继承方式的描述中,错 误 的 是.A、如果不显式地指定
34、继承方式,缺 省 的 继 承 方 式 是 私 有(p r i va t e)B、采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C、采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D、采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员本题主要考杳了类的继承与派生。类的继承方式有三种:公 有(p u bl i c)继承、保 护(p ro t e c t e d)继承和私有(p ri v at e)继承。如果不显式地给出继承方式,缺省的类继承方式是私有(p ri v at e)继承。因此选项A 正确;当派生类从基类公有继承时,基类的公有成员和保护成员的访问属性在派
35、生类中不变,仍作为派生类的公有成员和保护成员,因此选项B 正确;当派生类从基类保护继承时基类的公有成员和保护成员在派生类中都为保护成员,因此选项C 正确:当派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都改变为私有成员;无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,因此选项D 错误。故本题答案为D。32.下列关于运算符重载的描述中,错 误 的 是。A、可以通过运算符重载在C+中创建新的运算符 B、赋值运算符只能重载为成员函数C、运算符函数重裁为类的成员函数时,第一操作数是该类对象D、重载类型转换运算符时不需要声明返回类型本题主要考杳了运算符重载。”运算符重载”是针对C
36、+中原有运算符进行的,不可能通过重载创造出新的运算符,因此选项A 错误;在C+中,运算符的重载方式有两种:(1)重载为成员函数;(2)重载为友元函数。=、口、()、以及所有的类型转换运算符只能重载为成员函数,因此选项B 正确;运算符重载为成员函数时,第一操作数就是对象本身,并不显式地出现在参数表中,因此选项C 正确;重载类型转换运算符的格式为:o p e rat o r类型名(),其中 类型名 就代表了返回类型,因此重载类型转换运算符时不需要声明返回类型,因此选项D正确。故本题答案为A。33.有以下程序:#i n c l u d e u s i n g n am e s p ac e s t
37、d;c l as s B p u bl i c:B(i n t x x):x(x x)+c o u n t;x+=10;v i rt u al v o i d s h o w()c o n s t c o u t c o u n t ,x e n d l;p ro t e c t e d:s t at i c i n t c o u n t;p ri v at e:i n t x;c l as s D:p u bl i c B p u bl i c:I)(i n t x x,i n t y y):B(x x),y(y y)+c o u n t;y+=100;v i rt u al v o i
38、d s h o w()c o n s t c o u t c o u n t y s h o w();d e l e t e p t r;re t u rn 0;)运 行 时 的 输 出 结 果 是。A,1 120 B、2 120 C、l _20 D、2_20本题主要考杳了派生类的构造函数、静态成员函数以及虚函数。建立派生类对象时,构造函数的执行顺序如下:(1)执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);(2)执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);(3)执行派生类的构造函数。用s t at i c 关键字声明的数据成员为静态数
39、据成员,静态成员在每个类只有一个拷贝,由该类的所有对象共同维护和使用。在成员函数声明的前面加上v i rt u al修饰,即把该函数声明为虚函数。在C+中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。本题中,函数s h o w在基类B和派生类D中都声明为虚函数。在基类B中把保护成员定义为静态成员c o u n t,派生类D以公有继承方式从基类B继承了保护成员c o u n t。它被基类B和派生类D的所有对象所共享,但它不属于类的任何一个对象。在m ai n。函数中,第一条语句通过n e
40、 w运算符创建派生类D的对象,并把对象的首地址赋给基类指针p t r,即基类指针p l r指向派生类对象。在创建派生类对象时,先执行基类B的构造函数,c o u n t的值为1,然后执行派生类D的构造函数,c o u n t的值为2,y的值为120;m ai n。函数的第二条语句通过基类指针p t r调用虚函数s h o w。,被调用的是该指针实际所指向的派生类对象类的重定义版本,即输出220。故本题答案为B。34.下列叙述中,错误的是.A、false是一个逻辑型常量 B、b是一个字符型常量C、365是一个in t常量 D、3.1415926是一个double常量本题主要考查了常量。在C+中,
41、逻辑型常量有两个:f a l s e (假)和t r u e (真),因此选项A正确;字符型常量是单引号括起来的一个字符,字符串常量是双引号括起来的字符序列,因此 b 是字符串,不是字符,故选项B错误;整型常量默认为i n i型,因此选项C正确;实型常量默认为d o u b l e型,因此选项D正确。故本题答案为B3 5.在下列字符中,不允许作为C+标识符的是 oA、b B、B C、D 2本题主要考杳了 C+中的标识符命名规则。标识符的组成要符合一定的规则:(1)标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串;(2)标识符不能与任意一个关键字同名;(3)标识符中的字母区分大
42、小写;(4)标识符不宜过长。在选项D中,标识符的第个字符是数字,因此不是合法的标识符,不允许作为C+标识符。故本题答案为D。3 6 .软件是、数据和文档的集合。标准答案为:程序 考生答案为:函数计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。3 7 .有一个学生选课的关系,其中学生的关系模式为:学 生(学号,姓名,班级,年龄),课程的关系模式为:课 程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选 课(学号,_ _ _ _ _ _,成绩)。标准答案为:课号 考生答案为:课号码也称为关键字,是表中若干属性的属性组,
43、其值惟一标识表中的一个元组。在关系模式选课中能惟一标识一个元组的是学号,课号。3 8 .设某循环队列的容量为50,如果头指针f r o n t=4 5(指向队头元素的前一位置),尾指针r e a r=1 0 (指向队尾元素),则该循环队列中共有 个元素。标准答案为:1 5 或 十 五 或 15 考生答案为:35在循环队列中,用队尾指针r e a r指向队列中的队尾元素,用排头指针f r o n t指向排头元素的前一个位置,因此,从排头指针f r o n t指向的后一个位置直至队尾指针r e a r指向的位置之间所有的元素均为队列中的元素。本题中队列的容量为50,头指针为4 5,那么从头指针到5
44、0之间有4 6、4 7、4 8、4 9、50,共5个元素,尾指针为1 0,那么从1 到1 0 之间有1 0 个元素,所以共有1 5个元素。3 9 .设二叉树如F:对 该 二 叉 树 进 行 后 序 遍 历 的 结 果 为。标准答案为:E D BG H FCA 或 E、D、B、G、H、F、C、A 或 E,D,B,G,H,F,C,A 或 E,D,B,G,H,F,C,A考生答案为:E D G H FCA后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。4 0 .一个队列
45、的初始状态为空。现将元素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 或 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队列是指允许在一端进行插入
46、、而在另端进行删除的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。因此,队列又称为“先进先出或后进后出”的线性表。4 1 .若x 和y是两个整型变量,在执行了语句序列x=5;y=6;y+=x 一;后,x+y的值为_ _ _ _ _ T s q u a r e(T n)r e t u r n n*n;或 t e m p l a t e Ts q u a r e (T n)r e t u r n n*n;考生答案为:t e m p l a t e T s q u a r e(T n)(r e t
47、u r n n*n;)本题主要考查了函数模板。函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。对于函数模板,数据类型本身成了它的参数,因而是一种参数化类型的函数。声明个函数模板的格式是:t e m p l a t e 模板形参表声明函数声明其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开)。每个模板形参具有下面几种形式:(1)t yp e n a m e参 数 名(2)c l a s s参 数 名(3)类型修饰参数名这里的参数名可以是任意的标识符。在这三种形式中,前两种是等价的:在声明模板参数时,关键字t y p e n a
48、m e与c la ss可以互换。因此该题函数模板定义是t e m p la t et y p e n a m e T T sq u a re(T n)re t u rn n*n;或t e m p la t ec la ss T Tsq u a re(T n)re t u rn n*n;。4 4 .在执行语句序列i n t i=0;d o i+;w hi le(i*i 1 0);时,d o后面的循环体语句i+被执行的次数为。标准答案为:4或4或 四 考生答窠为:4本题主要考查了 d o-w hi le循环语句。第一次执行循环体后i的值为1,i*i 1 0成立,继续执行循环体,第二次执行循环体后i
49、的值为2,i*i 1 0成立,继续执行循环体,第三次执行循环体后i的值为3,i*i 1 0成立,继续执行循环体,第四次执行循环体后i的值为4,i*i1 0不成立,结束循环。故循环语句被执行次数为4。4 5.假设X c s是一个类,该类中一个成员函数的原型为X c s*a b c();,则在类外定义时对应的函数头为标准答案为:X c s*X c s:a b c()考生答案为:X c s*X c s:a b c()本题主要考查了成员函数的类外定义。在类外定义成员函数的语法形式为:返回值类型类名:成员函数名(参数表)(函数体因此在类X c s之外定义原型为X c s*a b c()的成员函数对应的函
50、数头为X c s*X c s:a b c()o4 6.请将卜面的程序补充完整,使得程序输出“飘是张娜的书”。#i n c lu d e u si n g n a m e sp a c e st d;c la ss Bo o k p u b li c:Bo o k(c ha r*st r)st rc p y(t i t le,st r);v o i d Pri n t i n f o ()c o u t t i t le e n d l;p ro t e c t e d:c ha r t i t le 50 ;;c la ss My Bo o k:p u b li c Bo o k p u b