【计算机类职业资格】二级C++笔试2及答案解析.doc

上传人:arrownail386 文档编号:1324715 上传时间:2019-10-17 格式:DOC 页数:13 大小:75.50KB
下载 相关 举报
【计算机类职业资格】二级C++笔试2及答案解析.doc_第1页
第1页 / 共13页
【计算机类职业资格】二级C++笔试2及答案解析.doc_第2页
第2页 / 共13页
【计算机类职业资格】二级C++笔试2及答案解析.doc_第3页
第3页 / 共13页
【计算机类职业资格】二级C++笔试2及答案解析.doc_第4页
第4页 / 共13页
【计算机类职业资格】二级C++笔试2及答案解析.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、二级 C+笔试 2及答案解析(总分:96.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.拷贝构造函数的参数一般是(分数:2.00)A.某对象名B.某对象成员名C.某对象的引用名D.指向对象的指针名2.下面叙述不正确的是(分数:2.00)A.基类的保护成员在派生类中仍然是保护的成员B.基类的保护成员在公有派生类中仍然是保护的C.基类的保护成员在私有派生类中仍然是私有的D.对基类成员的访问必须是无二义性3.以下对 C+语言函数的有关描述中,正确的是(分数:2.00)A.在 C+语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C+语言函数既可以

2、嵌套定义又可以递归调用C.函数必须无返回值,否则不能使用函数D.函数必须有返回值,返回值类型不定4.设有程序段 int k=10; while(k=0)k=k-1; 则下面描述中正确的是(分数:2.00)A.循环执行 10次B.无限循环C.循环体语句一次也不执行D.循环体语句执行一次5.C+语言中标点符号中表示一条预处理命令开始的是(分数:2.00)A.#B.;C.*D.6.以下不正确的定义语句是(分数:2.00)A.double x 5= 20,40,60,80,100 ;B.int y 5= 0,1,3,5,7,9 ;C.char cl =1,2,3,4,5 ;D.char c2 : /x

3、lO,/xa,/x8 ;7.关于静态数据成员的描述中正确的是(分数:2.00)A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化8.串的长度是(分数:2.00)A.串中不同字符的个数B.串中不同字母的个数C.串中所含字符的个数且字符个数大于零D.串中所含字符的个数9.在计算机中,算法是指(分数:2.00)A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法10.下列 SQL语句中,用于修改表结构的是(分数:2.00)A.ALTERB.CREATEC.UPDATED.I

4、NSERT11.以下不属于对象的基本特点的是(分数:2.00)A.分类性B.多态性C.继承性D.封装性12.数据库、数据库系统和数据库管理系统之间的关系是(分数:2.00)A.数据库包括数据库系统和数据库管理系统B.数据库系统包括数据库和数据库管理系统C.数据库管理系统包括数据库和数据库系统D.3者没有明显的包含关系13.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(分数:2.00)A.软件投机B.软件危机C.软件工程D.软件产生14.下列运算符中全都可以被友元函数重载的是(分数:2.00)A.=,+,-,/B.,+,(),newC.-,+,*,D.D.,只能用友元函数重载

5、的是。15.对表达式 for(表达式 1;表达式 3)可理解为(分数:2.00)A.for(表达式 1;0;表达式 3)B.for(表达式 1;1;表达式 3) C.for(表达式 1;表达式 3;)D.for(;表达式 3)解析:解析:本题中,若要保证 for表达式能正常进行,首先要保证第 2个表达式的条件判断值应该为真,从而保证循环进行。16.sizeof(float)是(分数:2.00)A.一个双精度型表达式B.一个整型表达式 C.一种函数调用D.一个不合法的表达式解析:解析:该函数用于数据类型和变量。注意:size of 操作符不能用于函数,不完全类型或位字段。不完全类型指具有未知存储

6、大小的数据类型,如未知存储大小的数组类型、void 类型等。17.下面不属于软件设计原则的是(分数:2.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。18.下面这个程序的结果是 #includeiostreamh classA private: inta; public: voidseta( );intgeta( ); voidA:seta( ) a=1; intA:geta( ) returna;

7、 classB private: inta; publiC: voidseta( );intgeta( ); voidB:seta( ) a=2; intB:geta( ) returna; classC:publicA,publicB private: intb; public: voiddisplay( ); voidC:display( ) int b:geta( ); coutb; voidmain( ) Cc; cseta( ); c.display( );(分数:2.00)A.1B.2C.随机输出 1或 2D.程序有错 解析:解析:在类 A中有 geta( )函数,在类 B中也有

8、geta( )函数,类 C继承了类 A和类 B,这样就产生了二义性,所以程序会出错。19.下列函数的运行结果是 #include iostreamh int f(int a,int b) int c; if (a b)c=1; else if(a=b)c=0; else c=-1; return(c); void main( ) int i=2,j=3; int p=f(i,j); cout p;(分数:2.00)A.-1 B.1C.2D.编译出错,无法运行解析:解析:本题的函数是根据 a和 b的值来给 c赋值。20.有如下说明 int a10: 1,2,3,4,5,6,7,8,9,10 ,*

9、 p=a; 则数值为 9的表达式是(分数:2.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析:在 C+语言的数组元素的引用方法,如数组元素 a0,可以用表达式*(p+0),即*p 来引用,对于数组元素 a1,可以用表达式*(P+1)来引用,在这里,p+1 的值就是数组元素 a1的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元 a1,注意:一对圆括号不可少。同样,对于数组元素 a2,则可以用表达式*(p+2)来引用,对于数组元素 a9,可以用表达式*(P+9)来引用。因此,当指针变量 p指向 a数组的起始地址时,若 0i10,则数组元素 ai可以用*(p

10、+i。21.类 A是类 B的友元,类 B是类 C的友元,则下列说法正确的是(分数:2.00)A.类 B是类 A的友元B.类 C是类 A的友元C.类 A是类 C的友元D.以上都不对 解析:解析:选项 A)、选项 B)和选项 C)都不正确,因为友元关系是单项的,并且没有交换性、传递性。22.对以下说明语句的正确理解是 inta10=6,7,8,9,10;(分数:2.00)A.将 5个初值依次赋给 a1至 a5B.将 5个初值依次赋给 a0至 a4 C.将 5个初值依次赋给 a6至 a10D.因为数组长度与初值的个数不相同,所以此语句不正确解析:解析:本题中,表达式将 5个初值赋给 a0至 a4,后

11、面的部分,将自动会被依次补零处理。23.对于下面的程序 ifstreamfin(c:/testtxt); if(fin) cout“ok“; else cout“wrong“; 对于 if语句中的内容可以换为(分数:2.00)A.fifail( );B.fibad( );C.figood( ); D.fieof( );解析:解析:C+语言中判断文件操作成功主要有两个函数 good( )和 fail( ),其中 if(文件流名good( ) )和 if(!文件流名fail( ) ),还有 if(文件流名)都可以表示判断文件操作是否成功。24.有如下程序 #include void main( )

12、 char ch25=“ 6937“,“ 8254“,* p2; int i,j,s=0; for(i=0;i,/0,;j+=2) s=10 * s+pij-0; cout S; 该程序的输出结果是(分数:2.00)A.69825B.63825C.6385 D.693825解析:解析:该题主要要搞清楚以下几点:定义了一个指针数组 char * P2后,程序中第一个循环 for(i=0;i/0是指 Pij中的字符只要不是字符串结标志/0,就继续循环,语句 j+ =2;是使下标 j每次增加 2,也即一个隔一个地从 pi所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从 P0所指向的字

13、符串“6937”中一个隔一个地取出字符,分别是“6”和“3”,然后从 p1所指向的字符串“8254”中一个隔一个地取出字符,分别是“8”和“5”,同时经过转换和相加运算后,结果 s 中的值应该是 6385。25.下表正确的是在父类中的访问属性访问修饰符在子类中的访问属性(分数:2.00)A.publicprivate不能直接访问B.protectpublicpublicC.privatepublic不能直接访问 D.protectprivateprotect解析:解析:基类的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有和受保护的成

14、员。26.以下程序的输出结果是 #includeiostreamh voidmain( ) charx=040; cout(x1);(分数:2.00)A.100B.80C.64 D.32解析:解析:左移 1位,相当于乘以 2,题中的 x的值是一个八进制数,转换为十进制数是 32,再乘以2,x 的值为 64。27.开发大型软件时,产生困难的根本原因是(分数:2.00)A.大系统的复杂性 B.人员知识不足C.客观世界千变万化D.时间紧、任务重解析:解析:软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。2

15、8.每个 C+程序中都必须有且仅有一个(分数:2.00)A.类B.预处理命令C.主函数 D.语句解析:解析:每个 c+程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。29.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的选项是 #includeiostreamh voidmain( ) inta,b,t; cinab; while(_) if(ab) t=a;a=b;b=t; couta“bendl; cinab; (分数:2.00)A.!a=bB.a!=b C.a=:bD.a=b解析:解析

16、:根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等,也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为 a!=b。30.关系模型允许定义 3类数据约束,下列不属于数据约束的是(分数:2.00)A.实体完整性约束B.参照完整性约束C.域完整性约束 D.用户自定义的完整性约束解析:解析:关系模型允许定义 3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。31.设有 i

17、nt x=11;,则表达式(x+ * 2/3)的值是(分数:2.00)A.7 B.8C.11D.12解析:解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增 1,所以表达式(x+*2/3)相当于(11*2/3)取整后为 7。32.以下程序的输出结果是 #includeiostreamh longfun(intn) longs; if(n=1|n=2)s=2; elses:n-fun(n-1); returns; voidmain( ) coutfun(3);(分数:2.00)A.1 B.2C.3D.4解析:解析:题中 fun函数进行了递归调用,第 1次调用:fun(3)n=3

18、 s=3-fun(2),第二次调用时:fun(2)n=2 s=2,返回第一次调用后,s=3-2=1。33.不合法的 main函数命令行参数表示形式是(分数:2.00)A.main(inta,char*c)B.main(intarc,char*arC.main(intargc,char*arg D.main(intargv,char*argc)解析:解析:在 C+语言里,main 函数也可以有参数,例如:main(int arvc,char*argv),argc 是指向字符串的指针数组,而选项 C)是第二个形参是指向字符变量的指针,是错误的。34.数据结构作为计算机的一门学科,主要研究数据的逻辑

19、结构、对各种数据结构进行的运算,以及(分数:2.00)A.数据的存储结构 B.计算方法C.数据映象D.逻辑存储解析:解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含 3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。35.对于模板定义关键字 class和 typename说法不正确的是(分数:2.00)A.程序中的 class并不能都替换为 typenameB.class和 typename都可互相替换 C.程序中的 typename都能替换为 classD.程序中的部分 class可以替换为 typename解析:解析:在 C+程序中的 typename是都可

20、以替换为 class的,但 class不能都替换为 typename。二、B填空题/B(总题数:13,分数:26.00)36.长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 【1】 。(分数:2.00)填空项 1:_ (正确答案:【1】n/2)解析:解析:在线性表的任何位置插入一个元素的概率相等,即概率为 P=1/(n+1),则插入一个元素时所需移动元素的平均次数为 E=1/(n+1)(n-i+1)=n/2。37.用树型结构表示实体类型及实体间联系的数据模型称为 【2】 。(分数:2.00)填空项 1:_ (正确答案:【2】层次模型)

21、解析:解析:用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图 结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及 其联系的数据模型称为关系模型。38.类是一个支持集成的抽象数据类型,而对象是类的 【3】 。(分数:2.00)填空项 1:_ (正确答案:【3】实例)解析:解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。39.数据流图的类型有 【4】 和事务型。(分数:2.00)填空项 1:_ (正确答案:【4】变换型)解析:解析:典型的数据流类型有两种:变换型和事务

22、型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。40.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 【5】 。(分数:2.00)填空项 1:_ (正确答案:【5】物理独立性)解析:解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存

23、取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。41.在 c+语言的面向对象程序设计框架中, 【6】 是程序的基本组成单元。(分数:2.00)填空项 1:_ (正确答案:【6】类)解析:解析:C+语言面向对象程序设计的基本组成单元是 class,面向过程的程序设计的基本组成单元是函数。42.C+语言程序的注释可以出现在程序中的任何地方,一个注释以 【7】 作为开始和结束的标记。(分数:2.00)填空项 1:_ (正确答案:【7】/ * * /)解析:解析:C+语言程序的注释可以出现在程序中的任何地方,一个注释以“/ *,”开始,以“* /”为结束。43.以下程序的输

24、出结果是 【8】 。 #includeiostreamh voidfun( ) staticinta=0; a+=2; couta“; voidmain( ) intcc; for(cc=1;cc4;cc+) fun( ); coutendl;(分数:2.00)填空项 1:_ (正确答案:【8】2 4 6)解析:解析:本题考查静态局部变量的使用。用关键字 static声明的局部变量为“静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。44.用以下语句调用库函数 malloc,使字符指针 st指向具有

25、 11个字节的动态存储空间,请填空。 st=(char*) 【9】 ;(分数:2.00)填空项 1:_ (正确答案:【9】malloc(11)或 malloc(sizeof(char) * 11 ))解析:解析:malloc 函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是malloc(11),也可以借助于 sizeof运算符来表示。45.以下程序的输出结果是 【10】 。 #includeiostreamh unsignedfun(unsignednum) unsignedk=1; do k * =num%10;num/=10;while(num); returnk; v

26、oidmain( ) unsignedn=26; coutfun(n)endl; (分数:2.00)填空项 1:_ (正确答案:【10】12)解析:解析:函数有一个形参 num,循环前变量 k置 1,循环中,表达式 num%10是取 num的个位,将 num的个位值累乘于 k中,然后 num除以 10。循环直至 num为。结束,这是逐一求出 num十进制表示的各位数字,并累乘于变量 k的循环。函数最后返回 k。函数 fun的功能是求整数的各位十进数字积。46.下列程序在构造函数和析构函数中申请和释放类的数据成员 int*a,申请时使用形参 b初始化 a,请填空。 classA public:

27、A(intb); A( ); private: int*a; ; A:A(intb) 【11】 ; A:A( ) 【12】 ; (分数:2.00)填空项 1:_ (正确答案:【12】delete a)解析:【11】a=new int(b) 解析:C+中 new和 delete的使用有如下几种:a=new int;delete a;a=new int(10);deletea;a=new int10;deletea;。47.C+语言中的多态性是在编译时通过 【13】 和模板体现的,在运行时是通过 【14】 体现的。(分数:2.00)填空项 1:_ (正确答案:【13】函数重载)解析:【14】虚函数

28、 解析:C+中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。 解析:C+中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。48.将 x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为 【15】 。(分数:2.00)填空项 1:_ (正确答案:【15】x,operator+(operator * (y,z) ))解析:解析:C+中用成员函数重载 x * y为:x.operator * (y),用友元函数重载 x * y为:operator * (x,y),用成员函数重载 x+y为:x.operator+(y),用友元函数重载 x+y为:operator+(x,Y)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1