1、二级 C+笔试 30及答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列数据结构中,按先进后出原则组织数据的是(分数:2.00)A.线性链表B.栈C.循环链表D.顺序表2.下列程序的输出结果是 #include void main( ) char * str=“12123434“; int x1=0,x2=0,x3=0,x4=0,i; for(i=0;stri!=/0;i+) switch(stri) case1:x4+; case2:x3+; case3:x2+; case4:x1+; cout x1 “,“ x2 “,“ x3 “,
2、“ x4;(分数:2.00)A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,23.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(分数:2.00)A.函数调用可以作为独立的语句存在B.函数调用可以无返回值C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参4.有如下程序 #includeiostreamh void main( ) float x=20,y; if(x00)y=00; else if(x100)y=10/x; else y=10; cout y; 该程序的输出结果是(分数:2.00)A.0B.025C.05D.105.下列叙述中,
3、正确的是(分数:2.00)A.用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R图只能表示实体集之间一对一的联系C.用 E-R图只能表示实体集之间一对多的联系D.用 E-R图表示的概念数据模型只能转换为关系数据模型6.具有 3个结点的二叉树有(分数:2.00)A.2种形态B.4种形态C.7种形态D.5种形态7.以下能对二维数组 a进行正确初始化的语句是(分数:2.00)A.int a2 = 1,0,1,5,2,3;B.int a 3= 1,2,3,4,5,6;C.int a24= l,2,3,4,5,6 ;D.int a 3= 1,0,1, ,l,1 ;8.表达
4、式 10 5 i+) switch(stri) case1:x4+; case2:x3+; case3:x2+; case4:x1+; cout x1 “,“ x2 “,“ x3 “,“ x4;(分数:2.00)A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,2 解析:【命题目的】for 和 switch语句的应用。 【解题要点】本题考查循环的嵌套。只要注意在 c+语言中,系统在字符指针的最后位置会增加一个字符串结束符/0,执行 8次 for循环,再根据 switch语句中的条件易知答案。 【考点链接】C+中各种条件判断,循环语句的用法。3.若已定义的函数有返回值,则以下
5、关于该函数调用的叙述中错误的是(分数:2.00)A.函数调用可以作为独立的语句存在B.函数调用可以无返回值C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参 解析:【命题目的】本题综合考查函数的调用方式 【解题要点】函数的形参和实参具有以下特点: 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应通过预先用赋值,输入等办法使实参获得确定值。实参
6、和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。 【错解分析】函数调用不可以作为一个函数的形参。 【考点链接】函数可以嵌套调用,但是不可嵌套定义。4.有如下程序 #includeiostreamh void main( ) float x=20,y; if(x00)y=00; else if(x100)y=10/x; else y=10; cout y; 该程序的输出结果是(分数:2.00)A.0B.025C.0
7、5 D.10解析:【命题目的】本题考查 if语句的使用方法。 【解题要点】该表达式的语句是 if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 由 if表达式可知,题中直接执行 if语句的第 2条 else if(x100)y=1O/x;。 【考点链接】else总是与最近的没有匹配的 if匹配。5.下列叙述中,正确的是(分数:2.00)A.用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R图只能表示实体集之间一对一的联系C.用 E-R图只能表示实体集之间一对多的联系 D.用 E-R图表
8、示的概念数据模型只能转换为关系数据模型解析:【命题目的】本题主要考查了用 E-R图表示实体之间联系的方法。 【解题要点】两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。6.具有 3个结点的二叉树有(分数:2.00)A.2种形态B.4种形态C.7种形态D.5种形态 解析:【命题目的】考查二叉树的基础知识。 【解题要点】具有 3个结点的二叉树具有以下的几种形态:7.以下能对二维数组 a进行正确
9、初始化的语句是(分数:2.00)A.int a2 = 1,0,1,5,2,3;B.int a 3= 1,2,3,4,5,6; C.int a24= l,2,3,4,5,6 ;D.int a 3= 1,0,1, ,l,1 ;解析:【命题目的】本题考查对二维数组初始化知识点的掌握。 【解题要点】在初始化语句时,需要注意下面几点:所赋初值个数与数组元素的个数相同;每行所赋初值个数与数组元素的个数不同时,系统将自动给该行其余的元素补初值 0;所赋初值行数少于数组行数时,系统将自动给后面各行的元素补初值 0;赋初值时省略行花括号对。在给二维数组赋初值时可以不用行花括号对。 【错解分析】选项 A)中省略了
10、第二维的大小,所以是错误的;选项 C)超出了数组的定义范围,所以是错误的;选项 D)在初始化赋值的时候出现了错误。 【考点链接】无论是几维的数组,下标都是从零开始的。8.表达式 10 5 &6%3 的值是(分数:2.00)A.-1B.非零值C.0 D.1解析:【命题目的】考查/和%运算符的意义。 【解题要点】逻辑与运算符为真的前提是两边的表达式都为真,本题中 6%3的值为 0,显然该表达式的值应该为 0。 【考点链接】/是整除运算符,当两个操作数都为整数时,结果为整型,将小数部分舍去。9.若变量已正确定义并赋值,以下符合 C+语言语法的表达式是(分数:2.00)A.a:=b+1B.a=b=c+
11、2 C.int 185%3D.a=a+7=c+b解析:【命题目的】考查 C+语言的正确赋值方法。 【解题要点】a=b=c+2 实际上相当于 a=(b=c+2),进而可分解为两个表达式:b =c+2 和 a=b。 【错解分析】选项 A)中包含一个不合法的运算符“:=”;选项 C)应改为(int)185 3;选项 D)可理解为两个表达式:a+7=c+b 和 a=a+7,其中第一个是错的,因为C+语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。 【考点链接】C+语言赋值语句的运用,10.派生类对象对其基类中的什么成员是可访问的?(分数:2.00)A.公有继承的私有成员B.私有继承的公有成员
12、C.私有继承的保护成员D.保护继承的保护成员 解析:【命题目的】关于 c+语言继承问题中派生类对基类的访问能力的考查 【解题要点】C+语言中通常有三种继承修饰符 public,protected,Privale,限制依次严格,另外对类中的数据和函数也有这三种修饰符进行限制,有 3种是不能继承的:公有继承基类的私有成员,私有继承基类的私有成员,保护继承基类的私有成员。11.若有说明 int a34;,则 a数组元素的非法引用是(分数:2.00)A.a02*1B.a13C.a4-20D.a04 解析:【命题目的】数组的定义范围。 【解题要点】本题定义 a为 3行4 列的数组,它可用的行下标最大为
13、2,列下标最大为 3。 【错解分析】a04超过了数组的范围。 【考点链接】数组的下标是从 0开始的。12.以下类定义中可能会引起错误的语句是 class A public: A( ) /1 int i; /2 private: int j; /3 A(int i) i+; /4 ;(分数:2.00)A.1B.2C.3D.4 解析:【命题目的】考查关于 C+语言类的定义方法。 【解题要点】在 c+语言中类定义中的构造函数是私有的,但是其却调用了其中的公有变量,在实例化时会出现错误。 【考点链接】C+语言类的定义13.以下 C+语言中用于单行注释的是(分数:2.00)A./ B./ *C.* /D
14、.|解析:【命题目的】考查 C+语言中的注释问题。 【解题要点】C+语言中的注释与 C语言不同,C 语言的注释符号只有/* */,而 C+在此基础上又加上了/,此注释用于单行注释。 【考点链接】注释不影响程序的运行。14.下列描述中错误的是(分数:2.00)A.派生类可以作为基类派生其他的子类B.派生类继承基类的所有数据成员 C.派生类可以有多个基类D.派生类不能继承一些函数成员解析:【命题目的】关于 C+语言继承问题的考查。 【解题要点】C+语言中通常有 3种继承修饰符public,protected 和 private,限制依次严格,另外对类中的数据和函数也有这 3种修饰符进行限制。一个派
15、生类能不能继承基类的所有数据成员受它们的限制。 【考点链接】C+语言中继承关系的修饰符public,protected 和 private的运用。15.设有下列二叉树: (分数:2.00)A.ZBTYCPXAB.ATBZXCYP C.ZBTACYXPD.ATBZXCPY解析:【命题目的】本题考查二叉树的遍历。 【解题要点】所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根-左-右”。故该二叉树的前序遍历结果为“ATBZXCYP”。 【考点链接】对于本题,若使用后序遍历
16、和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。16.下列叙述中,不属于测试的特征的是(分数:2.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性 D.测试的经济性解析:【命题目的】本题考查了软件测试的主要特征。 【解题要点】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。 【考点链接】软件测试与软件调试的概念,以及相应的方法。17.结构化程序设计主要强调的是(分数:2.00)A.程序的规模B.程序的效率C.程序设计语言的
17、先进性D.程序易读性 解析:【命题目的】本题考查考生的结构化程序设计的思想。 【考点链接】结构化的程序设计的目的。18.有如下程序: #include“iostreamh“ void main( ) int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; cout “a=“ a “,“ “b=“ b; 该程序的输出结果是(分数:2.00)A.a=2,b=1 B.a=1,b=1C.a=1,b=0D.a=2,b=2解析:【命题目的】关于 switch语句的考查。 【解题要点】该题目的关键是要搞清楚该程序执行了哪几条语句。由于 x
18、的值等于 1,所以 switch结构中,程序从 case 1后面的语句开始执行,又因为 case 1后面的语句没有以 break结束,所以程序要继续往下执行 case 2后面的语句。所以,该程序共执行了这三条语句:a+;a+;b+;,因此,变量 a和 b最后的值应该为 2和 1。 【考点链接】break 语句可以结束 switch语句。19.下列运算符中哪些是不能够被重载的?(分数:2.00)A.,* ,- * ,:,?: B.+,-,new,delete,=C.sizeof,new,delete,+,-D.sizeof,new,delete,+,-解析:【命题目的】考查 C+语言中不能够重载
19、的操作符。 【解题要点】C+语言中的不能重载的操作符是.,. * ,- * ,:和?:。20.“年龄在 18-25之间”这种约束是属于数据库当中的(分数:2.00)A.原子性措施B.一致性措施C.完整性措施 D.安全性措施解析:【命题目的】对数据库各种特性必须有正确的理解。 【解题要点】数据库的完整性是指数据的正确性和相容性(如学生的学号必须惟一,性别只能是女或男等),数据库是否具备完整性关系到数据库系统能否真实反映现实世界,因此维护数据库的完整性是非常重要的。 【考点链接】数据库的各种特性及表达形式。21.若调用一个函数,且此函数中没有 return语句,则正确的说法是该函数(分数:2.00
20、)A.没有返回值B.返回若干个系统默认值C.有返回值,但返回一个不确定的值 D.能返回一个用户所希望的函数值解析:【命题目的】return 语句的意义和用法。 【解题要点】在 C+语言函数调用中,如果被调用函数中没有 retnrn语句,并不带回一个确定的、用户所希望得到的函数值,而是带回的是一个不确定的值。 【考点链接】为了明确表示“不带回值”,可以用 void定义无类型(或称空类型),这时,系统就保证不使函数带回任何值。22.以下关于 C+语言类的说法中正确的是(分数:2.00)A.C+语言的默认访问权限是 private B.C+语言中的类定义,用户一定要自己定义一个构造函数用于实例化类C
21、.C+语言中的成员函数的实现部分一定要写在类定义外D.C+语言中的类不能够嵌套定义解析:【命题目的】考查 C+语言中类定义和它的概念。 【解题要点】C+语言的默认访问权限修饰符是private。 【错解分析】C+语言中的构造函数是系统默认就有的,用户可以自己定义也可以不定义,故选项 B)错误;C+语言的类是可以嵌套定义的,故选项 D)错误;C+语言中成员函数的实现部分也可以写在类定义内,故选项 C)错误。 【考点链接】函数不能嵌套定义。23.在 32位的计算机中,一个 char型数据所占的内存长度的字节是(分数:2.00)A.4B.1 C.2D.8解析:【命题目的】考查 C+语言各种数据类型所
22、占的内存大小。 【解题要点】char 型数据所占内存的大小为 1个字节。 【错解分析】int 型数据占内存的大小为 4个,cong double,double 占内存的大小为8个字节。 【考点链接】求字节数用 sizeof运算符。24.有以下程序 #include“iostream.h“ void main( ) int i=1,j=1,k=2; if( (j+|k+)&i+) cout i “,“ j “,“ k; cout end1; 执行后输出结果是(分数:2.00)A.1,1,2B.2,2,1C.2,2,2 D.2,2,3解析:【命题目的】考查 C+语言中“”和“&”运算符。 【解题要
23、点】该题目的关键是要搞清楚“”和“&”两个逻辑运算符的运算功能。运算符“”和“&”是双目运算符,要求有两个运算量。且规定逻辑与运算中,只有前面运算量的值为真的,才需要判别后面的值。只要前面运算量为假,就不必判别后的值。而逻辑或则为只要前面的运算量为真,就不必判别后的值;只有前为假,才判别后。本题中j+值为真,不进行 k+的运算,所以 k的值保持不变。 【考点链接】注意按位与和按位或的用法。25.若有语句 int * point,a=4;和 point=&a;下面均代表地址的一组选项是(分数:2.00)A.a,point,* &aB.& * a,&a,* pointC.* &point,* po
24、int,&aD.&a,& * point,point 解析:【命题目的】对于运算符“&”和“ * ”的运用。 【解题要点】“&”是求址运算符,“ * ”是指针变量的说明符,说明该变量只能存放所定义类型变量的地址。本题中选项 D)中的第一和第三项所表达的是同样的意思。 【错解分析】选项 A)中 a是一个整型变量。选项 B)中& * a 等价于 a,* point 是指针变量所指的内容。选项 C)中也是同理。 【考点链接】在指针运算中,&和 * 的作用相互抵消。26.需求分析中开发人员要从用户那里了解(分数:2.00)A.软件做什么 B.用户使用界面C.输入的信息D.软件的规模解析:【命题目的】考
25、查需求分析的作用。 【解题要点】需求分析是软件定义时期的最后一个阶段,它的基本任务就是准确回答“系统必须做什么”这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。27.对于重载的运算符 ,它是一个(分数:2.00)A.用于输入的友元函数 B.用于输入的成员函数C.用于输出的友元函数D.用于输出的成员函数解析:【命题目的】考查 C+语言中 运算符的意义。 【解题要点】C+语言中 和 运算符都是友元函数重载,分别用于输出和输入。 【考点链接】运算符 只能作为成员函数重载。28.下列关于函数模板实
26、参不能省略的情况说明不正确的是(分数:2.00)A.从模板函数实参表获得的信息有矛盾B.需要获得特定类型的返回值,而不管参数的类型如何C.虚拟类型参数没有出现在模板函数的形参表中D.函数模板不含有常规形参 解析:【命题目的】考查 C+语言中关于函数模板实参不能省略的情况 【解题要点】函数模板实参不能省略的情况在 C+语言中一共有 4种:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中;函数模板含有常规形参。 【考点链接】模板形参分为两种类型;虚拟类型参数和常规参数。29.下列关于运算符重载不正确的是(分数:2.00)A.
27、运算符重载不能改变运算符的操作数个数B.运算符重载不能改变运算符的优先级C.运算符重载不能改变运算符的结合性D.运算符重载能改变对预定义类型数据的操作方式 解析:【命题目的】考查 C+语言中操作符重载的概念。 【解题要点】运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方式。 【考点链接】运算符重载的关键字是 operator。30.以下函数调用语句中含有参数的个数是 excc(v1,v2),(v2,v3,v4),v6);(分数:2.00)A.3 B.4C.5D.6解析:【命题目的】函数的参数设置问题。 【解题要
28、点】函数的参数个数是以第一层的逗号为区分的,本题中调用语句中有 3个参数。31.下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是(分数:2.00)A.选择B.连接 C.投影D.并解析:【命题目的】本题考查了专门的关系运算的类型及其相关知识点。 【解题要点】关系代数中包括传统的集合运算和专门的关系运算。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。32.下列程序段的输出结果是 #includeiostreamh void fun(int * X,int * y) cout * X * y;
29、 * X=3; * y=4; void main( ) int x=1,y=2; fun(&y,&x); cout X y end1; (分数:2.00)A.2143 B.1212C.1234D.2112解析:【命题目的】对函数传参的考查。 【解题要点】在 fun函数中,x 接收的是 main函数中 y的地址,所以 * x 值为 2,同样,* y 值为 1,所以第 1次输出的是 2 1,第 2次改变 * x 的值等同于改变 y的值,改变 * y 的值也即改变 x的值,所以第 2次输出的是 4 3。 【考点链接】C+语言中函数的传参方式中关于指针的应用。33.若运行时给变量 x输入 12,则以下
30、程序的运行结果是 #includeiostreamh void main( ) int x,y; cin x; y=x 12? x+lO:x-12; cout y; cout end1; (分数:2.00)A.0 B.22C.12D.10解析:【命题目的】考查三目运算符“?:”。 【解题要点】三目运算符的表达式为(表达式 1)?(表达式2):(表达式 3),运算过程是当(表达式 1)的值为真时,求(表达式 2)的值为整个表达式的值;如果(表达式 1)的值为假,则求(表达式 3)的值为整个表达式的值。题中,表达式 x12 的结果为假,所以执行的语句是 x-12,最终结果应该是 0。 【考点链接】
31、“?:”的优先级高于“=”运算符的优先级。34.下列选项中不全是 C+语言关键字的是(分数:2.00)A.const,break,defaultB.long,void,usingC.virtual,extern,include D.try,throw,this解析:【命题目的】考查 C+语言的关键字。 【解题要点】要熟练掌握 C+语言中的关键字。 【错解分析】include 不是 C+语言的关键字。 【考点链接】define 也不是关键字。35.程序的 3种基本控制结构是(分数:2.00)A.过程、子过程和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:【命题目的】本
32、题考查基本的程序控制结构。 【解题要点】采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括 3种基本控制结构,分别是顺序结构、选择结构和重复结构(又称循环结构)。 【考点链接】控制程序结构的方法和作用。二、B填空题/B(总题数:13,分数:26.00)36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。(分数:2.00)填空项 1:_ (正确答案:【1】交换排序)解析:【命题目的】需要考生记住常见的排序方法。 【解题要点】常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选
33、择排序(包括简单选择排序和堆排序等)。 【考点链接】常见的排序方法及其作用机制和区别。37.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。(分数:2.00)填空项 1:_ (正确答案:【2】上溢)解析:【命题目的】本题考查了队列的基本性质。 【解题要点】入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即 rear=rear+1),并当 lear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称
34、为“上溢”。38. 【3】 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(分数:2.00)填空项 1:_ (正确答案:【3】封装)解析:【命题目的】本题考查了面向对象技术中的一些基本概念。 【解题要点】面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。39.为了便于对照检查,测试用例应由输入数据和预期的 【4】 两部分组成。(分数:2.00)填空项 1:_ (正确答案:【4】输出结果)解析:【命题目的】本题主要考查测试的步骤。 【考点链接】测试的基本方法和步骤。40. 【5】 是从二维
35、表列的方向进行的运算。(分数:2.00)填空项 1:_ (正确答案:【5】关系运算)解析:【命题目的】本题考查了关系运算的基本知识。 【解题要点】在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。41.内联函数是通过 【6】 来实现的,因此内联函数是真正的函数。(分数:2.00)填空项 1:_ (正确答案:【6】编译器)解析:【命题目的】考查内联函数的基本概念 【解题
36、要点】内联函数是通过编译器,只是在调用的时候,像宏一样展开。 【考点链接】内联函数比普通函数的效率更高。42.以下程序的输出结果是 【7】 。 #includeiostreamh void main1 int a=0; a+=(a=8); cout a; (分数:2.00)填空项 1:_ (正确答案:【7】16)解析:【命题目的】考查 C+赋值表达式的运用。 【解题要点】赋值表达式的值就是所赋值变量的值,本题中 a+=8相当于 a=a+8,对表达式逐步进行求解: a+=(a=8)此时,a 的值由于赋值为 8,而不是 0 a+=8 a=a+8 a=16 【考点链接】要掌握“+ =”等相关运算符的
37、用法。43.以下程序的执行结果为 【8】 。 #includeiostream using namespace std; class base public: virtual void who1 cout “base class“ end1; ; class derivel:public base public: void who2 cout “derivel class“ end1; ; class derive2:public base public: void who3 cout “derive2 class“ end1; ; void main4 base obj1,* p; deri
38、vel obi2; derive2 obj3; p=&obj1; p-who5; p=&obj2; p-who6; p=&obj3; p-who7; (分数:2.00)填空项 1:_ (正确答案:【8】base class)解析:derivel class derive2 class 【命题目的】考查虚函数的用法。 【解题要点】类 base含有虚函数 who-|_|-,该类派生出 derivel类和 derive2类,两个派生类中都有虚函数who-|_|-的定义。在 main-|_|-函数中定义了一个指向 base类的指针,它也被允许指向其派生类。在执行过程中,不断改变它所指的对象,当 p-w
39、ho-|_|-时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。 【考点链接】应掌握静态联编的使用方法。44.如果类中的一个成员函数的定义实现在类内,则该函数系统自动默认为该类的 【9】 函数。(分数:2.00)填空项 1:_ (正确答案:【9】内联)解析:【命题目的】注意内联函数与宏定义的区别。 【解题要点】C+中的成员函数如果它的实现写在了类中,那么该函数就是一个内联函数。 【考点链接】C+中内联函数的相关概念。45.为解决在多重继承环境中因公共基类带来的 【10】 问题,C+语言提供了虚基类机制。(分数:2.00)填空项 1:_ (正确答案:【10】二义性)解析:【命题目的】
40、关于 C+中虚基类的作用。 【解题要点】C+中产生虚基类的作用就是为了解决继承中的二义性问题,通过虚基类继承可以把父基类中相同的函数只编译一次。46.operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 【11】 的。(分数:2.00)填空项 1:_ (正确答案:【11】public)解析:【命题目的】考查 c+中运算符重载的固定格式和要求。 【解题要点】C+中不论用成员函数还是友元函数重载运算符都必须用关键字 operator,都必须将函数声明为公有的。 【考点链接】operator 是关键字。47. 【12】 是一系列相
41、关函数的模型或样板,这些函数的 【13】 形式相同,只是所针对的 【14】 不同。(分数:2.00)填空项 1:_ (正确答案:【12】函数模板)解析:【13】源代码 【14】数据类型 【命题目的】C+中函数模板的定义。 【解题要点】函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不问。 【考点链接】声明一个函数的模板格式是:template 模板形参表声明 函数声明48.我们通常用到的 cin ,是属于 【15】 输入。(分数:2.00)填空项 1:_ (正确答案:【15】有格式)解析:【命题目的】考查关于输入输出的概念。 【解题要点】C+中运算符“ ”和“ ”都是属于有格式的输入输出。 【考点链接】使用 cin,cout 进行输入输出时应包括头文件“iostreamh。