1、二级 C+笔试 85及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.在设计程序时,应采纳的原则之一是(分数:2.00)A.不限制 go to语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解2.程序设计语言的基本成分是数据成分、运算成分、控制成分和(分数:2.00)A.对象成分B.变量成分C.语句成分D.传输成分3.下面关于类和对象的描述中,错误的是(分数:2.00)A.类就是 C语言中的结构体类型,对象就是 C语言中的结构体变量B.类和对象之间的关系是抽象和具体的关系C.对象是类的实例,一个对象必须属于一个已知
2、的类D.类是具有共同行为的若干对象的统一描述体4.如果类 A被说明成类 B的友元,则(分数:2.00)A.类 A的成员即类 B的成员B.类 B的成员即类 A的成员C.类 A的成员函数不得访问类 B的成员D.类 B不一定是类 A的友元5.下列语句中不是死循环的是(分数:2.00)A.int i=10;B.for(int i=1;i10;i+) while(1) i-; i-; if(i= =1)break; C.int i=0;D.int i=1; do for(;)1=i+1; i+; while(i=0);6.设 int a=10,b=ll,c=12;,表达式(a+b)c void main
3、() Aa,b3,*c; c=b; coutiend1;(分数:2.00)A.2B.3C.4D.521.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) int X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun( A(ABm)num=anum+; void print()coutnum; ; void main() Aa(1),b(a); aprint();bprint(); (分数:2.00)A.11B.12C.21D.2230.对类的构造函数和析构函数描
4、述正确的是(分数:2.00)A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载31.已知一棵二叉树前序遍历和中序遍历分别为 ABDEGCFH和 DBGEACHF,则该二叉树的后序遍历为(分数:2.00)A.GEDHFBCAB.DGEBHFCAC.ABCDEFGHD.ACBFEDHG32.下列不属于软件工程的 3个要素的是(分数:2.00)A.工具B.过程C.方法D.环境33.下面程序的运行结果是 #includeiostreamh void main() int num=1; int vo
5、id main() Aa,b3,*c; c=b; coutiend1;(分数:2.00)A.2B.3C.4 D.5解析:解析 外部变量 i实际上记录的是调用构造函数的次数。21.下面程序的运行结果是 #includeiostream,h void fun(int*a,int*b) int X= *a; * a= *b; *b=X; cout *a *b“ “; void main() int x=1, y=2; fun( A(ABm)num=anum+; void print()coutnum; ; void main() Aa(1),b(a); aprint();bprint(); (分数:
6、2.00)A.11B.12C.21 D.22解析:解析 本题;号查考生对拷贝构造函数的掌握。因为+运算是右结合的,所以在使用 a对 b赋值时,b 的 num变为 l而 a的 num变为 2(先赋值再自加)。30.对类的构造函数和析构函数描述正确的是(分数:2.00)A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载解析:解析 一个类中只能定义一个析构函数,否则会造成对同一对象的多次删除;而构造函数可以根据不同的参数个数和类型进行多次重载。31.已知一棵二叉树前序遍历和中序遍历分别为 AB
7、DEGCFH和 DBGEACHF,则该二叉树的后序遍历为(分数:2.00)A.GEDHFBCAB.DGEBHFCA C.ABCDEFGHD.ACBFEDHG解析:解析 利用前序和中序遍历的方法可以确定二叉树的结构,具体步骤如下:前序遍历的第一个结点 A为树的根结点;中序遍历中 A的左边的结点为 A的左子树,A 右边的结点为 A的右子树;再分别对 A的左右子树进行上述两步处理,直到每个结点都找到正确的位置。32.下列不属于软件工程的 3个要素的是(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软
8、件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。33.下面程序的运行结果是 #includeiostreamh void main() int num=1; int &ref=num; ref=ref+2; coutnum; num=num+3; coutrefend1; (分数:2.00)A.13B.16C.36 D.33解析:解析 本题考查的是考生刘引用的掌握,ref 实际上就是变量 num的别名,所以 ref=ref+2时,num已经变成了 3。34.以下各选项组中,均是 C+语言关键字的组是(分数:2.00)A.public operator this B.shod
9、string staticC.it while=D.private cout printf解析:解析 关键字是系统已预定义的单词,在程序中有不同的用途,考生应该熟记。35.树是结点的集合,它的根结点数目是(分数:2.00)A.有且只有 1 B.1或多于 1C.0或 1D.至少 2解析:解析 树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。每个集合同时又是一棵树。树有且只有 1个根结点。二、B填空题/B(总题数:14,分数:28.00)36.数据结构分为逻辑结构与存储结构,线性链表属于U 【1】 /U。(分数:2.00)填空项 1:_ (正确答案:存储
10、结构)解析:解析 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。37.在面向对象方法中,类之间共享属性和操作的机制称为U 【2】 /U。(分数:2.00)填空项 1:_ (正确答案:继承)解析:解析 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。38.耦合和内
11、聚是评价模块独立性的两个主要标准,其中U 【3】 /U反映了模块内务成分之间的联系。(分数:2.00)填空项 1:_ (正确答案:内聚)解析:解析 内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量。39.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体“项目”的联系属于U 【4】 /U的联系。(分数:2.00)填空项 1:_ (正确答案:一对多(或 1:N))解析:解析 两个文体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3种,即一对一(1;1)的联系、一对多(1:N)
12、或多对一(N:1)的联系和多对多(M:N)的联系。40.数据库设计分为以下 6个设计阶段:需求分析阶段、U 【5】 /U、逻计设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(分数:2.00)填空项 1:_ (正确答案:数据库概念没计阶段)解析:解析 数据库设计分为以下 6个设计阶段:需求分析阶段、概念没计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。41.开发一个 C+语言程序的步骤通常包括编辑、U 【6】 /U、链接、运行和调试。(分数:2.00)填空项 1:_ (正确答案:编译)解析:解析 C+语言是以编译方式实现的高级语言, C+语言程序的实现,必须要使用某种 C
13、+语言的编译器对程序进行编译。42.假设 int a=1,b=2;则表达式 a+-b的值为U 【7】 /U。(分数:2.00)填空项 1:_ (正确答案:2)解析:解析 因为运算符+和-都是右结合的且优先级高于双目运算符+,所以上式的运算顺序为先a+, -b,再 a+b,最后 a自加 1。43.下面程序的输出结果为U 【8】 /U。 #includeiostreamh) Void main() int num=0,i=8; do i-; num+ while(-i); coutnumend1; (分数:2.00)填空项 1:_ (正确答案:4)解析:解析 本题考查的是考生分析简单循环结构的能力
14、。大体过程为第 1次进入循环,i 变成 7,num变为 1, i 变为 6;第 2次进入循环,i 变成 5,num 变为 2,i 变为 4;第 3次进入循环,i 变成 3,num变为 3,i 变为 2:第 4次进入循环,i 变成 l,num 变为 4,i 变为 0,循环结束。44.通过使用 new和 delete两个运算符进行的分配为U 【9】 /U存储分配。(分数:2.00)填空项 1:_ (正确答案:动态)解析:解析 本题考杏的是对动态分配内存的掌握,在 C+语言中,使用关键字 Hew和 delete进行动态内存中请和释放。45.下面程序的运行结果为U 【10】 /U。 #includei
15、ostreamh void fun(intx=0,iot y=0) coutXy; Void main() fun(5); (分数:2.00)填空项 1:_ (正确答案:50)解析:解析 本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应从右至左逐个定义,所以题目中 x使用参数 5,y 使用默认参数 0。46.在 C+语言中,访问一个对象的成员所用的运算符是U 【11】 /U,访问一个指针所指向的对象的成员所用的运算符是U 【12】 /U。(分数:2.00)填空项 1:_ (正确答案:11成员选择运算符(或”))解析:12成员访问运算符(或”- ”) 解析 本题考查的是使用对象
16、和对象指针访问成员所使用的符号的不同,考生请注意它们的区别。47.C+语言支持的两种多态性分别是编译时的多态性和U 【13】 /U的多态性。(分数:2.00)填空项 1:_ (正确答案:运行时)解析:解析 本题考查的是多态的概念,多态性主要是指发出同样的消息而被不同类型的对象接收时导致完全不同的行为,它一般分为编泽时的多态性和运行时的多态性,比如函数重载和虚函数。48.重载的运算符保持其原有的U 【14】 /U、优先级和结合性不变。(分数:2.00)填空项 1:_ (正确答案:操作符个数)解析:解析 本题考查的是运算符重载的概念,用户重新定义的运算符不改变原运算符的优先性和结合性,也不改变运算符的语法结构也就是说重载运算符不会产生新的运算符。49.cout.put(A);,还可以表示为U 【15】 /U。(分数:2.00)填空项 1:_ (正确答案:coutA;)解析:解析 本题考查的是 C+语言的流输出操作。 coat 是 C+语言定义好的输出流对象,其中包括成员函数 put(char c),具功能是输出 个字符到屏幕,实际上 C+语言中已经重载了操作符“”作为流输出操作符。