1、计算机二级(C+)18 及答案解析(总分:1765.00,做题时间:90 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:25,分数:1750.00)1.下列关于模板的说法正确的是( )。(分数:70.00)A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同一概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数2.对于下面的程序,说法正确的是( )。 #includeiostreamh void main( ) int x=3,y=4,z=2; if(X=y+z) cout “x=y+Z“; else cout“x!=y+Z“; (分数:70.0
2、0)A.“工程”菜单B.“文件”菜单C.“工具”菜单D.“编辑”菜单3.下列程序的运行结果是( )。 #include iostreamh class Location private: int X,Y; public: void init(int=0,in=0); Void valueX(int val) X=val; int valueX( ) return X; void valueY(int val) Y=val; int valueY( ) return Y; ; void Location:init(int initX,int initY) X=initX; Y=initY; vo
3、id main( ) Location A,B; Ainit( ); AvalueX(5); cout AvalueX( ) end1 AvalueY( ) end1; Binit(6,2);BvaleY(4); cout BvalueX( ) end1 BvalueY( ) end1; (分数:70.00)A.5 0 6 4B.0 0 6 4C.5 0 6 2D.0 0 6 24.对类的构造函数和析构函数描述正确的是( )。(分数:70.00)A.Redim a As IntegerB.Static a As IntegerC.Public a As IntegerD.Dim a As In
4、teger5.下列关于函数模板实参不能省略的情况说明不正确的是( )。(分数:70.00)A.从模板函数实参表获得的信息有矛盾B.需要获得特定类型的返回值,而不管参数的类型如何C.虚拟类型参数没有出现在模板函数的形参表中D.函数模板不含有常规形参6.能正确表示逻辑关系:“a10 或 a0”的 C+语言表达式是( )。(分数:70.00)A.a =10 or a =0B.a =0 | a =10C.a =10 & a =0D.a =10,a =07.设有数组定义:chararray:“China“;,则数组 array所占的空间为( )。(分数:70.00)A.循环执行 10次B.无限循环C.循
5、环体语句一次也不执行D.循环体浯句执行一次8.下面程序的运行结果为( )。 #includeiostreamh claSS A static int n; public: A( )n=1; A(int num)n=num; void print( )cout,+,*,D.D.,只能用友元函数重载的是。13.下列程序中画线处应填入的语句是( )。 classBase public: voidfun( )COUt“Baseoffun“endl; ; classDerived:publicBase voidfun( ) _/显示基类的成员函数 fun cout“Derivedoffun“endl;
6、; (分数:70.00)A.Alt+F2B.BBBBBC.随机出几个数D.文本框平均内容无变化 解析:数组在 Java语言中是当作对象处理的,它包含一个很重要的变量 length,用来表示数组的长度。 14.下面程序的运行结果是( )。 #includeiostream.h void main( ) int i=1; while(i B.C.0D.A解析:根据规范化理论依据,对关系的要求包括:列是同质的,即每一列中分量是同类型的数据,来自同一个域,每列称为一个属性,行或列的顺序可以任意排列,而不影响各数据项的关系。16.设以下变量均为 int类型,则值不等于 7的表达式是( )。(分数:70.
7、00)A.(x=y=6,x+y,X+1)B.(x=y=6,x+y,y+1)C.(x=6,x+1,y=6,x+y) D.(y=6,y+1,x+y,x+1)解析:C+语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式 1,表达式 2,其求值过程是分别求两个表达式的值,并以表达式 2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式 1,表达式 2,表达式 3,表达式 n,它的值为表达式 n的值。17.如果表达式-X+y 中,-是作为成员函数重载的,+是作为成员函数重载的,则该表达式还可为( )。(分数:7
8、0.00)A.将继承这个类的所有行为B.子类将自动成为监听器C.不必实现任何不需要的 WindowListener方法 D.为了层次清楚,美观大方解析:数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。18.与 y=(x0? 1:x0? -1:0);的功能相同的 if语句是( )。(分数:70.00)A.字符串 a的长度B.字符串 b的长度C.字符串 a和 b的长度之差D.字符串 a和 b的长度之和 解析:国际化命令只包含一个命令 native2ascii,该命令将含有本机编码 字符的文件,转换成 Unicode编码字符的文件。19.下列语句的输出结果( )。 cout strle
9、n(“/t/“/065/xff/n“); (分数:70.00)A.5 B.14C.8D.输出项不合法,无正常输出解析:该字符串中包含的字符是/t(跳格符)、/“ (双引号)、/065 (ASCII 值为八进制 065,也即十进制为 51的字符)、/xff(ASCII 值为十六进制 ff,也即十进制为 255的字符)、/n(换行符)。20.下列选项中不全是 C+语言关键字的是( )。(分数:70.00)A.const,break,defaultB.long,void,usingC.virtual,extern,include D.try,throw,this解析:本题考查 C+语言的关键字。要熟
10、练掌握 C+语言中的关键字。注意:include 不是 C+语言的关键字。21.下列描述中错误的是( )。(分数:70.00)A.公有继承的私有成员B.私有继承的公有成员C.私有继承的保护成员D.保护继承的保护成员 解析:逻辑运算符“”表示或的意思。22.C+语言对 C语言做了很多改进,C+语言相对于 C语言的最根本的变化是( )。(分数:70.00)A.12 32B.6 29 C.2 3D.12 3解析:此题是函数过程的调用。 在调用过程时,一般主调与被调过程之间有数据传递,即将主调过程的实参传递给被调用的过程,完成实参与形参的结合,然后执行被调过程,在 Visual Basic中,实参与形
11、参的结合有两种方式:即传址与传值。这两种方法的特点如下: 传址的结合过程是,当调用一个过程时,它将实参的地址传给形参,因此在被调用的过程中,对形参的任何操作都变成了对相应实参的操作,因此实参的值会随形参的改变而改变。 传值的结合过程时:当调用一个过程时,系统将实参的值赋值给形参并断开了联系,被调用过程中的操作时在形参自己的存储单元中进行的,当过程调用结束时,这些形参所占用的存储单元也同时被释放,因此在过程中对形参的任何操作不会影响实参。而题中被调过程 Proc中有两个形参,其中第一个形参 n为传址方式,第二个形参 m为传值方式。主调过程分别把实参 x、y 传递给 Proc,所以当过程调用结束后
12、,实参 x的值应随着被调过程变化而变化,而实参 y值在主调函数中始终不变,所以输出 y的值仍为 32;在被调过程中“n=n Mod l0”被调用时,相当于“x=x Mod l0”,所有 x的值最终为 2,最后输出结果如选项 B)所示。 23.在 32位的计算机中,一个 char型数据所占的内存长度的字节是( )。(分数:70.00)A.4B.1 C.2D.8解析:本题考查 C+语言各种数据类型所占的内存大小。char 型数据所占内存的大小为 1个字节。注意:int型数据占内存的大小为 4个,cong double,double 占内存的大小为 8个字节。24.下面程序的运行结果为( )。 #
13、include iostreamh void main( ) for(int a = 0,x =0;! xa = 10;a+) a+; cout a endl; (分数:70.00)A.纵栏式报表B.表格式报表 C.图表报表D.标签报表解析:层次数据模型的特点:有且只有一个节点无双亲,这个节点称为“根节点”;其他节点有且只有一个双亲。网状数据模型的特点:允许一个以上节点无双亲;一个节点可以有多于一个的双亲。关系数据模型是以二维表的形式来表示的。25.可以用 p.a的形式访问派生类对象 p的基类成员 a,其中 a是( )。(分数:70.00)A.私有继承的公有成员B.公有继承的私有成员C.公有继
14、承的保护成员D.公有继承的公有成员 解析:只有公有继承的公有成员才能被派生类的对象直接访问,其他的 情况都会因为访问权限问题产生错误。26.对象实现了数据和操作的结合,是指对数据和数据的操作进行( )。(分数:-1.00)A.结合B.隐藏C.封装 D.抽象解析:对象是由数据及可以对这些数据施加的操作组成的统一体。对象的内部,即处理能力的实行和内部状态,对外是看不见的,这一特性称做对象的封装。 27.下列选项中,不属于模块间耦合的是( )。(分数:-1.00)A.数据耦合B.同构耦合C.异构耦合 D.公用耦合解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从
15、弱到强,可以将其分成 5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项 C),没有这种耦合方式。28.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的( )。(分数:-1.00)A.安全性B.一致性C.可理解性 D.合理性解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。29.串的长度是( )。(分数:-1.00)A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于零D.串中所含字符的个数 解析:串
16、的长度指的是串中的字符的个数,且其字符个数可以为零。30.下列叙述中,不属于测试的特征的是( )。(分数:-1.00)A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性 D.测试的经济性解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。31.在计算机中,算法是指( )。(分数:-1.00)A.加工方法B.解题方案的准确而完整的描述 C.排序方法D.查询方法解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷
17、性和拥有足够的情报。32.在软件生产过程中,需求信息的给出是( )。(分数:-1.00)A.程序员B.项目管理者C.软件分析设计人员D.软件用户 解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。33.软件生命周期中花费时间最多的阶段是( )。(分数:-1.00)A.详细设计B.软件编码C.软件测试D.软件维护 解析:软件生命周期分为软件定义、软件开发及软件运行维护 3个所段。本题中,详细设计、软什编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性降低维护的代价。3
18、4.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。(分数:-1.00)A.可重用性差B.安全性差C.非持久性D.冗余性 解析:文件系统所管理的数据文件基本上是分散的,相互独立的,因此相对于数据库系统,以此为基础的数据处理存在 3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。35.以下不属于对象的基本特点的是( )。(分数:-1.00)A.分类性B.多态性C.继承性 D.封装性解析:对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。三、填空题(每空 2分,共 30分)(总题数:10,分数:30.00)36.C+语言提
19、供的基本控制结构可以分为 3种类型:顺序结构、 1 和循环结构。(分数:3.00)填空项 1:_ (正确答案:选择结构)解析:顺序结构(也叫连续结构)和循环结构是经常被使用的,不过选择结构(if 和 switch)也是一种重要的流程控制结构。37.设 i,j,k 均为 int型变量,则执行完 for(i=0,j=10;i=j;i+,j-)k=i+j;语句后,k 的值为 1。(分数:3.00)填空项 1:_ (正确答案:10)解析:该 for语句以 i为 0、j 为 10初始化,循环条件是 i=j,每次循环后 i增 1、j 减 1,循环体是将i与 j的和赋给 k。这样变量 k将保存的是最后一次赋
20、给它的值。一次循环后 i为 1、j 为 9,二次循环后i为 2、j 为 8,五次循环后 i为 5、j 为 5,继续第六次循环,将 i与 j的和 10存于 k后,i 为6、j 为 4,结束循环。所以循环执行后 k为 10。 38.将 x+y中的+运算符用友元函数重载应写为 1。(分数:3.00)填空项 1:_ (正确答案:operator+(x,y))解析:C+中用成员函数重载 x+y为 xoperator+(y);,用友元函数重载 x+y为 operator+(x,y)。 39.表达式 xoperator+(yoperator+(0) )还可以写成 1。(分数:3.00)填空项 1:_ (正确
21、答案:x+y+或 x+(y+))解析:因为 yoperator+(0)是对成员 y重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀+,即是 x+(y+)。40.开发一个 C+语言程序的步骤通常包括编辑、 1、链接、运行和调试。(分数:3.00)填空项 1:_ (正确答案:编译)解析:c+语言是以编译方式实现的高级语言,C+语言程序的实现,必须要使用 某种 C+语言的编译器对程序进行编译。 41.语句 cout /n还可表示为 1。(分数:3.00)填空项 1:_ (正确答案:cout end1;)解析:“/n”表示换行,end1 也可表示换行。end1 和“/n”可以通用。42.
22、以下程序的输出结果是 1。 #includeiostreamh unsignedfun(unsignednum) unsignedk=1; do k * =num%10;num/=10;while(num); returnk; voidmain( ) unsignedn=26; coutfun(n)endl; (分数:3.00)填空项 1:_ (正确答案:12)解析:函数有一个形参 num,循环前变量 k置 1,循环中,表达式 num%10是取 num 的个位,将 num的个位值累乘于 k中,然后 num除以 10。循环直至 num为。结束,这是 逐一求出 num十进制表示的各位数字,并累乘于
23、变量 k的循环。函数最后返回 k。函数 fun 的功能是求整数的各位十进数字积。 43.语句 int * i;i=new int 10;,释放指针 i的语句是 1。(分数:3.00)填空项 1:_ (正确答案:delete i)解析:申请内存空间时用 new,释放内存空间用 delete。44.要采用“cin,tout”进行输入输出时,必须包含的头文件是 1。(分数:3.00)填空项 1:_ (正确答案:iostreamh)解析:iostreamh 是与输入输出有关的类文件。 45.如果要把返回值为 void的函数 A声明为类 B的友元函数,则应在类 B的定义中加入的语句是 1。(分数:3.0
24、0)填空项 1:_ (正确答案:friend void A-|_|-;)解析:C+中类的友元函数在声明时应在该函数前面加上关键字 friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上 friend。 46.子程序通常分为两类: 1 和函数,前者是命令的抽象,后者是为了求值。(分数:-1.00)填空项 1:_ (正确答案:过程)解析:当程序之间发生调用关系时,调用命令所在的代码段被称为主程序,被调用的代码段被称为子程序。子程序是对功能的抽象,可分为过程和函数两类,两者的区别是函数是通过函数名来返回值的,而过程只能通过形式参数或对全局变量进行修改以返回值。47.算法的工作量大小
25、和实现算法所需的存储单元多少分别称为算法的 1。(分数:-1.00)填空项 1:_ (正确答案:时间复杂度和空间复杂度)解析:算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小 的估计。算法的计算量是算法的时间复杂性,算法所需存储空间大小是算法的空间复 杂性。48.测试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.00)填空项 1:_ (正确答案:调试)解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠
26、性,而调试的目的是发现错误的位置,并改正错误。 49.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化 为一系列具体的步骤,进而用某种程序设计语言写成程序。 (分数:-1.00)填空项 1:_ (正确答案:自顶而下)解析:本题考查对程序设计的了解。50. 1是从二维表列的方向进行的运算。(分数:-1.00)填空项 1:_ (正确答案:关系运算)解析:本题考查了关系运算的基本知识。在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。