1、二级 C+笔试-63 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.数据处理的最小单位是(分数:2.00)A.数据B.数据元素C.数据项D.数据结构2.下列关于模板的说法正确的是(分数:2.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数3.B,)先进的软件开发工具和环境(分数:2.00)A.操作系统的资源管理功能B.程序入员的数量C.计算机的并行处理能力4.在深度为 5 的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.16
2、D.155.下面程序的功能是把 316 表示为两个加数的和,使两个加数分别能被 13 和 11 整除,在划线处应填入的选项是#include iostream.hvoid main( ) int i=0,j,k;doi+;k=31613*i;while(_);j=k/11;cout“316=13*“i“+11*“j;(分数:2.00)_6.函数 fun 的返回值是fun(char*a,char*b) int num=0,n=0;while(*(a+num)!=/0)num+;while(bn) *(a+num) =bn;num+;n+;return num;(分数:2.00)A.字符串 a 的
3、长度B.字符串 b 的长度C.字符串 a 和 b 的长度之差D.字符串 a 和 b 的长度之和7.若已定义:int a =0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0i9,则对 a 数组元素不正确的引用是(分数:2.00)A.apaB.*(3;i+)cout a2-ii“ “;(分数:2.00)A.1 5 9B.7 5 3C.3 5 7D.5 9 117.下列关于 C+语言类的描述中错误的是(分数:2.00)A.类用于描述事物的属性和对事物的操作B.类与类之间通过封装而具有明确的独立性C.类与类之间必须是平等的关系,而不能组成层次结构D.类与类之间可以通过一些方法进行通信和联
4、络18.索引属于(分数:2.00)A.模式B.内模式C.外模式D.概念模式19.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca20.有以下结构体说明和变量的定义,且指针 p 指向变量 a,指针 q 指向变量 b。则不能把结点 b 连接到结点 a 之后的语句是struct nodechar data;struct node*next;a,b,*p=for(i=0;in2;i+)t=ai;ai=an-1-i;an-1-i=t;voi
5、d main( )int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;cout S;(分数:2.00)_26.已知有定义const int D=5;int i=1;double f=032;char c=15;则下列选项错误的是(分数:2.00)A.+i;B.D-;C.c+;D.-f27.下述关于数据库系统的叙述中正确的是(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据28.软件工程的理论和技
6、术性研究的内容主要包括软件开发技术和(分数:2.00)A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用29.若定义 int k=7,x=12;,则能使值为 3 的表达式是(分数:2.00)A.x%=(k%=5)B.x%=(kk%5)C.x%=kk%5D.(x%=k)(k%=5)30.设有数组定义:char array =“China“;,则数组 array 所占的空间为(分数:2.00)_31.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是(分数:2.00)A.一元运算符B.二元运算符C.选项) 和选项) 都可能D.重载错误32.以下叙述中正确的是(分
7、数:2.00)A.构成 C+语言程序的基本单位是类B.可以在一个函数中定义另一个函数C.main( )函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义33.以下程序的输出结果是#includeiostream.hvoid main( )int x=1,y=3;cout x+ “,“;int x=0;x+=y*2;cout X “,“ y “,“;cout x “,“ y;(分数:2.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3D.1,7,3,2,334.下列描述中哪个是正确的?(分数:2.00)A.私有派生的子类无法访问父类的成员B.类 A 的私
8、有派生子类的派生类 C 无法初始化其祖先类 A 对象的属性,因为类 A 的成员对类 C 是不可访问的C.私有派生类不能作为基类派生子类D.私有派生类的所有子孙类将无法继续继承该类的成员35.下面程序段的运行结果是void main( )int t,a,b,c;a=1;b=2;C=2;while(abc) t=a;a=b;b=t;c-;cout a “,“ b “,“ c;(分数:2.00)A.1,2,0B.2,1,0C.1,2,1D.2,1,1二、填空题(总题数:13,分数:30.00)36.在树形结构中,树根结点没有 【1】 。(分数:2.00)填空项 1:_37.Jackson 结构化程序
9、设计方法是英国的 MJackson 提出的,它是一种面向 【2】 的设计方法。(分数:2.00)填空项 1:_38.面向对象的模型中,最基本的概念是对象和 【3】 。(分数:2.00)填空项 1:_39.软件设计模块化的目的是 【4】 。(分数:2.00)填空项 1:_40.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、 【5】 和物理数据模型。(分数:2.00)填空项 1:_41.派生类的成员一般分为两部分,一部分是 【6】 ,另一部分是自己定义的新成员。(分数:2.00)填空项 1:_42.以下程序输出的结果是 【7】 。#includeiostream.h void mai
10、n( )int a=5,b=4,c=3,d;d=(abC) ;coutd;(分数:2.00)填空项 1:_43.设 i,j,k 均为 int 型变量,则执行完 for(i=0,j=10;i=j;i+,j-)k=i+j 语句后,k 的值为 【8】 。(分数:2.00)填空项 1:_44.如果要把返回值为 void 的函数 A 声明为类 B 的友元函数,则应在类 B 的定义中加入的语句是【9】 。(分数:2.00)填空项 1:_45.如果类 B 继承了类 A,则称类 A 为类 B 的基类,类 B 称为类 A 的 【10】 。(分数:2.00)填空项 1:_46.将 x+y 中的+运算符用友元函数重
11、载应写为 【11】 。(分数:2.00)填空项 1:_47.已知程序的结果为 1 2 3,请填空。#includeiostream.htemplateclass Tclass Apublic:T x,y,Z;void display( ) cout x “ “ y “ “ z;void main( )Ainta1;【12】 【13】 【14】 a1display( );(分数:6.00)填空项 1:_48.下列程序段的输出结果是 【15】 。cout fixed509123456789end1;(分数:2.00)填空项 1:_二级 C+笔试-63 答案解析(总分:100.00,做题时间:90
12、分钟)一、选择题(总题数:35,分数:70.00)1.数据处理的最小单位是(分数:2.00)A.数据B.数据元素C.数据项 D.数据结构解析:解析 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C。2.下列关于模板的说法正确的是(分数:2.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数 解析:解析 在 C+中规定如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数
13、。3.B,)先进的软件开发工具和环境(分数:2.00)A.操作系统的资源管理功能B.程序入员的数量 C.计算机的并行处理能力解析:解析 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。4.在深度为 5 的满二叉树中,叶子结点的个数为(分数:2.00)A.32B.31C.16 D.15解析:解析 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第 k 层上有 2k-1个结点,且深度为 m 的满二叉树有 2m-1 个结点。5
14、.下面程序的功能是把 316 表示为两个加数的和,使两个加数分别能被 13 和 11 整除,在划线处应填入的选项是#include iostream.hvoid main( ) int i=0,j,k;doi+;k=31613*i;while(_);j=k/11;cout“316=13*“i“+11*“j;(分数:2.00)_解析:解析 do-while 语句的一般形式是do语句6.函数 fun 的返回值是fun(char*a,char*b) int num=0,n=0;while(*(a+num)!=/0)num+;while(bn) *(a+num) =bn;num+;n+;return
15、num;(分数:2.00)A.字符串 a 的长度B.字符串 b 的长度C.字符串 a 和 b 的长度之差D.字符串 a 和 b 的长度之和 解析:解析 本题首先通过第一个 while 循环计算字符串 a 的长度,再通过第二个循环,将字符串 a 和b 相连,最后返回连接后的总长度。7.若已定义:int a =0,1,2,3,4,5,6,7,8,9,*p=a,i;其中 0i9,则对 a 数组元素不正确的引用是(分数:2.00)A.apaB.*(3;i+)cout a2-ii“ “;(分数:2.00)A.1 5 9B.7 5 3 C.3 5 7D.5 9 1解析:解析 首先,当 i=0 时,数组中的
16、位置是 a2)0=7,当然,如果用排除法的话,就不用考虑后面的循环了,因为在 4 个选项中,第 1 个数为 7 的选项只有 B。本题执行第 2 次循环时,i 的值为 1,则cout 函数中的数组指向为 a11=5,依次循环,可求出答案。17.下列关于 C+语言类的描述中错误的是(分数:2.00)A.类用于描述事物的属性和对事物的操作B.类与类之间通过封装而具有明确的独立性C.类与类之间必须是平等的关系,而不能组成层次结构 D.类与类之间可以通过一些方法进行通信和联络解析:解析 C+语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操作,类与类之间有相对的独立性,但其可以通过一些方
17、法进行信息的通信。18.索引属于(分数:2.00)A.模式B.内模式 C.外模式D.概念模式解析:解析 内模式(Internal SchemA 又称物理模式(Physical SchemA,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取方式与存取路径。19.若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是(分数:2.00)A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 解析:解析 前序遍历的第一个结点 a 为树的根结点;中序遍历中 a 的左边的结
18、点为 a 的左子树,a 右边的结点为 a 的右子树;再分别对 a 的左右子树进行上述两步处理,直到每个结点都找到正确的位置。20.有以下结构体说明和变量的定义,且指针 p 指向变量 a,指针 q 指向变量 b。则不能把结点 b 连接到结点 a 之后的语句是struct nodechar data;struct node*next;a,b,*p=for(i=0;in2;i+)t=ai;ai=an-1-i;an-1-i=t;void main( )int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;cou
19、t S;(分数:2.00)_解析:解析 在 main 函数中,调用 reverse 函数将 b 数组中的前 8 个成员进行互置,执行完毕后,b 数组中的成员为8,7,6,5,4,3,2,1,9,1026.已知有定义const int D=5;int i=1;double f=032;char c=15;则下列选项错误的是(分数:2.00)A.+i;B.D-; C.c+;D.-f解析:解析 “+”,“-”运算符不能用于常量。27.下述关于数据库系统的叙述中正确的是(分数:2.00)A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统
20、比文件系统能管理更多的数据解析:解析 数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。28.软件工程的理论和技术性研究的内容主要包括软件开发技术和(分数:2.00)A.消除软件危机B.软件工程管理 C.程序设计自动化D.实现软件可重用解析:解析 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。29.若定义 int k=7,x
21、=12;,则能使值为 3 的表达式是(分数:2.00)A.x%=(k%=5)B.x%=(kk%5)C.x%=kk%5D.(x%=k)(k%=5) 解析:解析 运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是 x%=k 等价于 x=x%k。30.设有数组定义:char array =“China“;,则数组 array 所占的空间为(分数:2.00)_解析:解析 在给数组赋值时,可以用一个字符串作为初值,这种方法直观,方便而且符合人们的习惯。数组 array 的长度不是 5,而是 6,这点必须要注意。因为字符串常量的最后由系统加上一个/0,因此,上面的初始化与下面的等价:char
22、array =C,h,i,n,a,/031.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是(分数:2.00)A.一元运算符B.二元运算符C.选项) 和选项) 都可能D.重载错误 解析:解析 C+中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。32.以下叙述中正确的是(分数:2.00)A.构成 C+语言程序的基本单位是类 B.可以在一个函数中定义另一个函数C.main( )函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义解析:解析 关于 C+语言,我们应该了解以下必须要掌握的基础知识:C+程序是由类构成的。一
23、个函数由两部分组成:函数的首部和函数体。一个类由两部分组成:类成员变量和类成员函数。一个 C+程序总是从 main 函数开始执行的,而不论 main 函数在整个程序中的位置如何(main 函数可以放在程序最前头,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。C+程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。可以用/*/和/对 C+语言的程序的任何部分作注释。33.以下程序的输出结果是#includeiostream.hvoid main( )int x=1,y=3;cout x+ “,“;int x=0;x
24、+=y*2;cout X “,“ y “,“;cout x “,“ y;(分数:2.00)A.1,6,3,1,3B.1,6,3,6,3C.1,6,3,2,3 D.1,7,3,2,3解析:解析 coutx+;语句中,程序先输出 x 的值,然后再加 1,所以结果为 1,此时 x 的值为2;在 int x=0;x+=y*2;语句中,将 0 的值赋给 x,然后再运算 x+=y*2 的值,结果为 x=6(此时 x 的值为局部变量),y 的值不变,在最后在执行了 x 语句后的值,所以应为 2。34.下列描述中哪个是正确的?(分数:2.00)A.私有派生的子类无法访问父类的成员B.类 A 的私有派生子类的派
25、生类 C 无法初始化其祖先类 A 对象的属性,因为类 A 的成员对类 C 是不可访问的 C.私有派生类不能作为基类派生子类D.私有派生类的所有子孙类将无法继续继承该类的成员解析:解析 C+语言中一个派生类能不能继承基类的所有数据成员受继承方式的限制。35.下面程序段的运行结果是void main( )int t,a,b,c;a=1;b=2;C=2;while(abc) t=a;a=b;b=t;c-;cout a “,“ b “,“ c;(分数:2.00)A.1,2,0 B.2,1,0C.1,2,1D.2,1,1解析:解析 本题中(abC 的运算次序是先算 ab,返回 1,再运算 1c,返回 1
26、,所以表达式 a bc 的值为 1。二、填空题(总题数:13,分数:30.00)36.在树形结构中,树根结点没有 【1】 。(分数:2.00)填空项 1:_ (正确答案:前件)解析:解析 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。37.Jackson 结构化程序设计方法是英国的 MJackson 提出的,它是一种面向 【2】 的设计方法。(分数:2.00)填空项 1:_ (正确答案:数据结构)解析:解析 结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Str
27、uctured analysis),面向数据结构的 Jackson 方法(JSD-Jackson system development methoD 和面向数据结构的结构化数据系统开发方法(DSSD -Data structured system development methoD。38.面向对象的模型中,最基本的概念是对象和 【3】 。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。39.软件设计模块化的目的是 【4】 。(分数:2.00)填空项 1
28、:_ (正确答案:降低复杂性)解析:解析 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。40.数据模型按不同应用层次分成 3 种类型,它们是概念数据模型、 【5】 和物理数据模型。(分数:2.00)填空项 1:_ (正确答案:逻辑数据模型)解析:解析 数据是现实世界符号的抽象,而数据模型 (data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3 种类型,它们是概念数据模型(conceptual data model)、逻辑数
29、据模型 (logic data model)、物理数据模型(physical data model)。41.派生类的成员一般分为两部分,一部分是 【6】 ,另一部分是自己定义的新成员。(分数:2.00)填空项 1:_ (正确答案:从基类继承的成员)解析:解析 派生类的成员由继承的成员和自己定义的成员组成。42.以下程序输出的结果是 【7】 。#includeiostream.h void main( )int a=5,b=4,c=3,d;d=(abC) ;coutd;(分数:2.00)填空项 1:_ (正确答案:0)解析:解析 本题的关键在于对变量 c 的赋值运算:d=(abCd=(543)先
30、算 54,为真,得 1,即:d=(13),此时 13,为假,得 0。43.设 i,j,k 均为 int 型变量,则执行完 for(i=0,j=10;i=j;i+,j-)k=i+j 语句后,k 的值为 【8】 。(分数:2.00)填空项 1:_ (正确答案:10)解析:解析 该 for 语句以 i 为 0、j 为 10 初始化,循环条件是 i=j,每次循环后 i 增 1、j 减 1,循环体是将 i 与 j 的和赋给 k。这样变量 k 将保存的是最后一次赋给它的值。一次循环后 i 为 1、j 为 9,二次循环后 i 为 2、j 为 8,五次循环后 i 为 5、j 为 5,继续第六次循环,将 i 与
31、 j 的和 10 存于 k后,i 为 6、j 为 4,结束循环。所以循环执行后 k 为 10。44.如果要把返回值为 void 的函数 A 声明为类 B 的友元函数,则应在类 B 的定义中加入的语句是【9】 。(分数:2.00)填空项 1:_ (正确答案:friend void A();)解析:解析 C+中类的友元函数在声明时应在该函数前面加上关键字 friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上 friend。45.如果类 B 继承了类 A,则称类 A 为类 B 的基类,类 B 称为类 A 的 【10】 。(分数:2.00)填空项 1:_ (正确答案:(派生类)解析
32、:解析 如果类 A 为类 B 的基类,那么类 B 称为类 A 的派生类。46.将 x+y 中的+运算符用友元函数重载应写为 【11】 。(分数:2.00)填空项 1:_ (正确答案:operator+(x,y))解析:解析 C+中用成员函数重载 x+y 为 x.operator +(y);,用友元函数重载 x+y 为 operator+(x,y)。47.已知程序的结果为 1 2 3,请填空。#includeiostream.htemplateclass Tclass Apublic:T x,y,Z;void display( ) cout x “ “ y “ “ z;void main( )Ainta1;【12】 【13】 【14】 a1display( );(分数:6.00)填空项 1:_ (正确答案:12al.x=1;13a1.y=2;14a1.z=3;)解析:解析 通过程序的结果知道数据类型是 int,所以调用时声明模板实参为 int 的,再对 x,y,z进行赋值。48.下列程序段的输出结果是 【15】 。cout fixed509123456789end1;(分数:2.00)填空项 1:_ (正确答案:123457)解析:解析 fixed 的意义是在小数点后保留六位,所以 fixed 输出为 509.123457。