1、计算机二级(C+)23 及答案解析(总分:1765.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:25,分数:1750.00)1.下面程序输出的结果为( )。 #include“ iostreamh“ class A public: A( ) cout “CLASS A“ end1; A( ) ; class B:public A public: B( ) cout “CLASS B“ end1; B( ) ; void main( ) A * p; p=new B; B * q; q=new B; (分数:70.00)A.DEHNE POPUPB.D
2、EFINE MENUC.DEHNE PADD.DEFINE BAR2.有如下程序 #includeiostreamh void main( ) float x=20,y; if(x00)y=00; else if(x100)y=10/x; else y=10; cout y; 该程序的输出结果是( )。 (分数:70.00)A.0B.0.25C.0.5D.1.03.以下程序中调用 cin 函数给变量 a 输入数值的方法是错误的,其错误原因是( )。 #includeiostreamh void main( ) int *p,*q,a,b; p=i2;i+)pi=chi; for(i=0;i2;
3、i+) for(j=0;pij,/0,;j+=2) s=10*s+pij-0; coutS; 该程序的输出结果是( )。 (分数:70.00)A.选择和投影B.投影和选择C.选择和联接D.投影和联接6.下面程序的运行结果为( )。 # include iostreamh void main( ) for(int a = 0,x =0;! xa = 10;a+) a+; cout a endl; (分数:70.00)A.纵栏式报表B.表格式报表C.图表报表D.标签报表7.虚函数必须是类的( )。(分数:70.00)A.成员函数B.友元函数C.构造函数D.析构函数8.下面对静态数据成员的描述中,正
4、确的是( )。(分数:70.00)A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受 private 控制符的作用D.静态数据成员可以直接用类名调用9.以下程序的输出结果是( )。 #includeiostream.h voidreverse(inta,intn) inti,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; voidmain( ) int b10:=1,2,3,4,5,6,7,8,9,10;inti,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; coutS;
5、 (分数:70.00)A.22B.10C.34D.3010.函数模板:template T add(T x,T y) return x+y; 下列对 add 函数的调用不正确的是( )。 (分数:70.00)A.add(1,2)B.add(1,2)C.add(10,2)D.add(10,20)11.拷贝构造函数的参数一般是( )。(分数:70.00)A.某对象名B.某对象成员名C.某对象的引用名D.指向对象的指针名12.下列关于构造函数说法不正确的是( )。(分数:70.00)A.4 个字节B.5 个字节C.6 个字节D.7 个字节13.有如下程序 #includeiostreamh int
6、func(int a,int B) return(a+B) ; void main( ) int x=2,y=5,z=8,r; r=func(func(x,y),z); cout r; 该程序的输出的结果是( )。 (分数:70.00)A.12B.13C.14D.1514.如果表达式-X+y 中,-是作为成员函数重载的,+是作为成员函数重载的,则该表达式还可为( )。(分数:70.00)A.yoperator+(xoperator-(0)B.y,operator+(x.operator-( )C.yoperator+(operator-t(x,0)D.operator+(xoperator-
7、-t( )15.下面程序段的运行结果是( )。 #includeiostreamh void main( ) char*s=“abcde“; S+=2; couti1;i-) for(j=0;ji;j+) (分数:70.00)A.20 B.261C.15D.25解析:本题中第 1 个 for 循环执行 5 次后结束,第 2 个 for 循环执行 5 次。第 2 个 for 循环中第 1 次执行了 6 次,第 2 次执行了 5 次,第 3 次执行了 4 次,第 4 次执行了 3 次,第 5 次执行了 2 次,共 20 次。22.下列选项,不正确的是( )。(分数:70.00)A.i*m+j B.
8、j*m+iC.i*m+j-1D.i*m+j+1解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是 x%=k 等价于 x=x%k。23.下列程序的运行结果为( )。 # include iostreamh voidprint (double a) cout +a; void print (int a,int b) cout b a; void main( ) print (1.2); cout “ “; print (3,4); (分数:70.00)A.ios:inB.ios:outC.ios:in | ios:outD.以上都不对 解析:一般情况下,垂直滚动条的值由上往下递增
9、,最上端代表最小值,最下端代表最大值;水平滚动条的值从左到右递增,最 左端代表最小值,最右端代表最大值。因此当滚动条位于最左端或最下端时,Value 属性被设置为 Min。24.下列程序的输出结果是( )。 #includeiostreamh class Myclass public:Myclass(int i=0,intj=0) x=i; y=j; void show( ) cout “x=“ x “ “ “y=“ y end1; void show( )const cout “x=“ “ “ “y= y end1; privated: int x; int y; ; void main(
10、) Myclass my1(3,4); const my2(7,8); my1show( );my2show( ); (分数:70.00)A.line 4B.line 6C.line 7 D.line 8解析:要为一个新对象分配空间必须执行 new Xxx( )调用,new 调用执行 以下的操作:为新对象分配空间并将其成员初始化为 0 或者 null。执行类体中的初 始化(例如在类中有一个成员声明 int a=10;在第一步后 a=0,执行到第二步后 a=10)。 执行构造方法。变量被分配为一个到内存堆中的新对象的引用。25.关于 C+语言与 C 语言关系描述中错误的是( )。(分数:70.0
11、0)A.C+语言是 C 语言的超集B.C+语言对 C 语言进行了扩充C.C+语言包含 C 语言的全部语法特征D.C+语言与 C 语言都是面向对象的程序设计语言 解析:C 语言是一种面向过程的程序设计语言,而 C+语言是一种面向对象的设计语言,C+语言是 C 语言的超集,它包含了 C 语言的所有语言特性,并进行了扩充。26.在下列几种排序方法中,要求内存量最大的是( )。(分数:-1.00)A.插入排序B.选择排序C.快速排序D.归并排序 解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以
12、达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。27.数据结构中,与所使用的计算机无关的是数据的( )。(分数:-1.00)A.存储结构B.物理结构C.逻辑结构 D.物理和存储结构解析:数据结构概念一般包括 3 个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算
13、机中的存储表示形式。28.开发软件时对提高开发人员工作效率至关重要的是( )。(分数:-1.00)A.操作系统的资源管理功能B.先进的软件开发工具和环境 C.程序人员的数量D.计算机的并行处理能力解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了 软年的开发效率、维护效率和软件质量。29.下列有关数据库的描述,正确的是( )。(分数:-1.00)A.数据库是一个 DBF 文件B.数据库是一个关系C.数据库是一个结构化的数据集合 D.数据库是一组文件解析:数据库(Database,简称 DB)是数据的集合,它具有统一的结构形式并存放 于统一的存储介质内
14、,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据 具有“集成”、“共享”之特点。30.链表不具有的特点是( )。(分数:-1.00)A.不必事先估计存储空间B.可随机访问任一元素 C.插入删除不需要移动元素D.所需空间与线性表长度成正比解析:链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间;链式存储结构是一种非随机存储结构。31.数据库的故障恢复一般是由( )。(分数:-1.00)A.数据流图完成的B.数据字典完成
15、的C.DBA 完成的 D.PAD 图完成的解析:一旦数据库中的数据遭受破坏,需要及时进行恢复,RDBMS 一般都提供此种功能,并由 DBA 负责执行故障恢复功能。32.已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是( )。(分数:-1.00)A.acbedB.decabC.deabcD.cedba 解析:依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba 构成,右子树为空;又由左子树的后序遍历序列可知其根结点为 e,由中序遍历序列可知其左子树为 d,右子树由 ba 构成,如图 9-14 所示。求得该二叉树的前序遍历序列为选项 D
16、)。33.软件开发离不开系统环境资源的支持,其中必要的测试数据属于( )。(分数:-1.00)A.硬件资源B.通信资源C.支持软件D.辅助资源 解析:软件测试过程中,辅助资源包括测试用例(测试数据)、测试计划、出错统计和最终分析报告等。34.下列 4 项中,必须进行查询优化的是( )。(分数:-1.00)A.关系数据库 B.网状数据库C.层次数据厍D.非关系模型解析:关系数据模型诞生之后迅速发展,深受用户喜爱,但关系数据模型也有缺点其培主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型,因此为了提高性能,必须对用户的查询请求进行优化。35.数据处理的最小单位是( )。(分数:-
17、1.00)A.数据B.数据元素C.数据项 D.数据结构解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C)。 三、填空题(每空 2 分,共 30 分)(总题数:10,分数:30.00)36.设置虚基类的目的是 1,通过 2 表示虚基类。(分数:3.00)填空项 1:_ (正确答案:解决二义性问题)解析:解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。37.C+语言中关键字运算符有 new,delete 和 1。(分数:3.00)填空项 1:_ (正确答案
18、:sizeof)解析:C+语言中关键字运算符有 3 个分别 new,delete 和 sizeof。new 是申请内存, delete 是释放内存,sizeof 是求字节数。38.以下程序的输出结果是 1。 #includeiostreamh void main2 int a=0; a+=(a=8); cout a; (分数:3.00)填空项 1:_ (正确答案:16)解析:本题考查 C+赋值表达式的运用。赋值表达式的值就是所赋值变量的值,本题中 a+=8 相当于a=a+8,对表达式逐步进行求解: a+=(a=8)此时,a 的值由于赋值为 8,而不是 0 a+=8 a=a+8 a=16 39.
19、在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。(分数:3.00)填空项 1:_ (正确答案:this)解析:C+语言中 this 指针是类自带的一个指针,它指向正在调用成员函数的对象。40.以下程序的输出结果是 1。 #includeiostreamh voidfun( ) staticinta=0; a+=2; couta“; voidmain( ) intcc; for(cc=1;cc4;cc+) fun( ); coutendl; (分数:3.00)填空项 1:_ (正确答案:2 4 6)解析:本题考查静态局部变量的使用。用关键字 static 声明的局部变量
20、为“静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。 41.程序 #include“ iostreamh“ void main1 int i=10; jnt j=5; cout j+i+ end1; 的结果为 2 (分数:3.00)填空项 1:_ (正确答案:15)解析:i+为先做与 i 有关的运算后,i 自加 1,而+i 是先给 i 加 1 再进行与 i 有关的操作42.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为 1。(分数:3.00)填空项 1:_ (正确答案:x,o
21、perator+(operator * (y,z) ))解析:C+中用成员函数重载 x * y 为:x.operator * (y),用友元函数重载 x * y 为: operator * (x,y),用成员函数重载 x+y 为:x.operator+(y),用友元函数重载 x+y 为:operator+(x,Y)。43.开发一个 C+语言程序的步骤通常包括编辑、 1、链接、运行和调试。(分数:3.00)填空项 1:_ (正确答案:编译)解析:c+语言是以编译方式实现的高级语言,C+语言程序的实现,必须要使用 某种 C+语言的编译器对程序进行编译。 44.C+语言的参数传递机制包括传值和传地址
22、两种,如果调用函数时,需要改变实参或者返回多个值,应该采取 1 方式。(分数:3.00)填空项 1:_ (正确答案:传地址)解析:本题考查的是传值调用和传址调用的区别-传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传入,会改变原来的值。 45.派生类的成员一般分为两部分,一部分是 1,另一部分是自己定义的新成员。(分数:3.00)填空项 1:_ (正确答案:从基类继承的成员)解析:派生类的成员由继承的成员和自己定义的成员组成。 46.实体之间的联系可以归结为一对一联系、一对多(或多对多)的联系与多对多联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则
23、实体集学校与实体集教师之间的联系属于 1 的联系。(分数:-1.00)填空项 1:_ (正确答案:一对多(或 1:N))解析:47. 1 是从二维表列的方向进行的运算。(分数:-1.00)填空项 1:_ (正确答案:关系运算)解析:本题考查了关系运算的基本知识。在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。 48.耦合和内聚是评价模块独立性的两个主要标准,其中 1
24、 反映了模块内各成分之间 的联系。 (分数:-1.00)填空项 1:_ (正确答案:内聚)解析:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量。49.单元测试又称模块测试,一般采用 1 测试。(分数:-1.00)填空项 1:_ (正确答案:白盒法)解析:软件测试过程一般按 4 个步骤进行,即单元测试、集成测试、验收测试和系统测试。单元测试的技术可以采用静态分析和动态测试。对动态测试多采用白盒动态测试为主,辅之以黑盒测试。 50.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体 “项目”的联系属于 1 的联系。 (分数:-1.00)填空项 1:_ (正确答案:一对多(或 1:N))解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3 种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。