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

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

1、二级 C+-238 及答案解析(总分:65.00,做题时间:90 分钟)一、选择题(总题数:36,分数:65.00)1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。 其中数据独立性最高的阶段是(分数:1.00)A.数据库系统B.文件系统C.人工管理D.数据项管理2.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为_。(分数:2.50)A.operator+(operator*(y,z)B.operator+(operator*(y,z)C.operator+(x*(y,z)D.x+(operator*(y,z)3.需求分析阶段的任务是确定(

2、分数:1.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能4.下列定义语句中,错误的是_。(分数:2.00)A.int px*;B.char*acp10;C.char(*pac)10;D.int(*p)();5.C+语言中,编译过程后生成的文件类型为 _ 。(分数:2.00)A.*.cppB.*.objC.*.hD.*.exe6.有如下程序: #includeiostream using namespace std; class C1 public: C1()cout1; ; class C2: public C1 public: C2()cout2; ; int mai

3、n() C2 cb2; C1*cb1; return 0; 运行时的输出结果是_。(分数:2.50)A.121B.21C.211D.127.下列选项合法的标识符是_。(分数:2.50)A.1_1B.1-1C._11D.1_ _8.下列关于运算符重载的描述中,错误的是_。(分数:1.00)A.可以通过运算符重载在 C+中创建新的运算符B.赋值运算符只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象D.重载类型转换运算符时不需要声明返回类型9.下列程序的输出结果是_。 #includeiostream using namespace std; int main() ch

4、ar a=“Hello,Test“; char*p=a; while(*p) coutchar(*p+“A“-“a“); else cout *p; p+; return 0; (分数:1.00)A.hello,testB.Hello,TestC.HELLO,TESTD.hELLO,tEST10.下面叙述错误的是 _ 。(分数:1.00)A.基类的 protected 成员在派生类中仍然是 protected 的B.基类的 protected 成员在 public 派生类中仍然是 protected 的C.基类的 protected 成员在 private 派生类中是 privated 的D.

5、基类的 protected 成员不能被派生类的对象访问11.下列各组类型声明符中,含义相同的一组是_。(分数:1.00)A.unsigned long int 和 longB.signed short int 和 shortC.unsigned short 和 shortD.short int 和 int12.下列成对的表达式中,运算符“/”的意义相同的一对是 _ 。(分数:2.00)A.8/3 和 8.0/3.0B.8/3.0 和 8/3C.8.0/3 和 8/3D.8.0/3.0 和 8.0/313.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的

6、次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为_。(分数:2.50)A.23,13,51,57,66,26,81,69,76B.13,23,26,51,57,66,81,76,69C.23,13,51,57,26,66,81,69,76D.23,13,51,57,81,26,66,69,7614.有如下四个语句: cout“A“setfIll(“*“)leftsetw(7)“B“endl; coutsetfill(“*“)leftsetw(7)“A“B“endl; cout“A“serfill(“*“)rightsetw(7)“B“endl; coutsetf

7、ill(“*“)rightsetw(7)“A“B“endl; 其中能显示 A*B 的是_。(分数:1.00)A.和B.和C.和D.和15.为了提高函数调用的实际运行速度,可以将较简单的函数定义为_。(分数:2.50)A.内联函数B.重载函数C.递归函数D.函数模板16.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同17.类的析构函数的作用是 _。(分数:2.00)A.一般成员函数B.类的初始化C.对象的初始化D.删除对象创建的所有对象18.对于算法的每一步,指令必须是可执行的。算法的 _ 要求算法在有限步

8、骤之后能够达到预期的目的。(分数:2.00)A.可行性B.有穷性C.正确性D.确定性19.若有函数调用“fun(x*y,3,max(a,b,c)”,则 fun 的实参个数为_。(分数:2.00)A.3B.4C.5D.620.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; A()cout“C“; ; class B:public A public: B()cout“G“; B()cout“T“; ; int main() B obj; return 0; 运行这个程序的输出结果是_。(分数:2.50

9、)A.GATCB.AGTCC.GACTD.AGCT21.一个满二叉树其深度为 4,则其叶子节点的个数为 _ 。(分数:1.00)A.8B.16C.32D.422.若有如下语句 #includeiostream.h void main( ) int x=3; do x=x-2; coutx; while(!(-x); 则上面程序段(分数:1.00)A.输出的是 1B.输出的是 1 和-2C.输出的是 3 和 0D.是死循环23.有以下程序 #include iostream using namespace std; int a; int fun (); int main () extern in

10、t a; int b; a = 100; b = fun(); coutbend1; return 0; int fun) extern int a; return (10*a ; 其程序运行后的输出结果是(分数:2.00)A.100B.10C.1000D.1000024.下列关于模板形参的描述中,错误的是_。(分数:2.50)A.模板形参表必须在关键字 template 之后B.模板形参表必须用括弧()括起来C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参25.假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法并返回相加结果,该成员函数的

11、声明语句为_。(分数:2.50)A.AB operator+(ABB.AB operator+(ABC.operator+(AB a);D.AB26.将:x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为 _ 。(分数:2.00)A.operator+(operator*(y, z)B.operator+(operator*(y, z)C.operator+(x*(y, z)D.x+(operator*(y, z)27.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*ia=a;则不能正确表示 a 数组元素的表达式是 _。(分数:2.00)A.*ia

12、B.a10C.*aD.aia-a28.有如下程序: # include ioslreclm Using namespace std; class Base public: Base(int x=0):valB(x)coutvalB; Base()coutvalB; Private: int valB; ; class, Derived: public Base public: Dcrived(int x=0,int y=0):Base(x),valD(y) coutvalD; Derived()coutvalD; private: int valD; ; int main() Derived

13、obj12(2,3); return 0; 运行时的输出结果是 _ ,(分数:2.50)A.2332B.2323C.3232D.322329.一个类的友元函数或友元类可以通过成员操作符访问该类的 _ 。(分数:1.00)A.私有成员B.保护成员C.公有成员D.所有成员30.有如下函数模板: templateclass TT square(T x) retum x*x; 其中的参数 T 是_。(分数:1.00)A.函数形参B.函数实参C.模板实参D.模板形参31.计算机软件是_ 。(分数:2.00)A.程序B.数据C.文档D.程序、数据及相关文档的完整集合32.下列关于运算符重载的描述中,错误的

14、是_。(分数:2.50)A.:运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元D.重载口运算符应完成“下标访问”操作33.下面对静态数据成员的描述中,正确的是_。(分数:2.50)A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用34.Sample 是一个类执行下面语句后,调用 Sample 类的构造函数的次数是_。 Sample a2, *p=new Sample;(分数:2.50)A.0B.1C.2D.335.下列关于 goto 语句的描述

15、中,正确的是 _ 。(分数:1.00)A.goto 语句可在一个文件中随意转向B.goto 语句后面要跟一个它所转向的语句C.goto 语句可以同时转向多条语句D.goto 语句可以从一个循环体内转到循环体外36.对于模板定义关键字 class 和 typename 说法不正确的是(分数:2.00)A.程序中的 class 并不能都替换为 typenameB.class 和 typename 都可互相替换C.程序中的 typename 都能替换为 classD.程序中的部分 class 可以替换为 typename二级 C+-238 答案解析(总分:65.00,做题时间:90 分钟)一、选择题

16、(总题数:36,分数:65.00)1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。 其中数据独立性最高的阶段是(分数:1.00)A.数据库系统 B.文件系统C.人工管理D.数据项管理解析:解析:人工管理阶段是在 20 世纪 50 年代中期以前出现的,数据不独立,完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具有高度的物理独立性和一定的逻辑独立性。2.将 x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为_。(分数:2.50)A.operator+(operator*(y,z)B.operator+(operator*

17、(y,z) C.operator+(x*(y,z)D.x+(operator*(y,z)解析:解析 在定义了重载运算符后的函数后,函数 operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用 friend 对该函数进行声明,此函数就称为本类的友元函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“.*”被改写为“operator*”。“+”为成员函数重载,x.operator+。所以“x+y*z”被改写为“x.operator+(operator*(y,z)”。3.需求分析阶段的任务是确定(分数:1.00)A.软件开发方法B.软件开发工具C

18、.软件开发费用D.软件系统功能 解析:解析 考查考生对需求分析的内容的了解。 解题要点 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。 错解分析 选项 A)软件开发方法是在总体设计阶段完成的任务;选项 B)软件开发工具是在实现阶段需完成的任务;选项 C)软件开发费用是在可行性研究阶段需完成的任务: 考点链接 需求分析的任务和它的 6 种方法。4.下列定义语句中,错误的是_。(分数:2.00)A.int px*; B.char*acp10;C.char(*pa

19、c)10;D.int(*p)();解析:5.C+语言中,编译过程后生成的文件类型为 _ 。(分数:2.00)A.*.cppB.*.obj C.*.hD.*.exe解析:6.有如下程序: #includeiostream using namespace std; class C1 public: C1()cout1; ; class C2: public C1 public: C2()cout2; ; int main() C2 cb2; C1*cb1; return 0; 运行时的输出结果是_。(分数:2.50)A.121B.21 C.211D.12解析:解析 在基类与派生类中,析构函数在派生

20、类中先调用,而本题有两个不同类对象,对于 cb2 需先调 c2 的析构函数,再调 cl 的析构函数。而对于*cb1 由于没有指针性析构函数,它将不参加传递数据。7.下列选项合法的标识符是_。(分数:2.50)A.1_1B.1-1C._11 D.1_ _解析:解析 C 语言中标识符命名的规则是:标识符只能由字母、数字和下画线组成,第一个字符必须为字母或下画线。所以选项 C 正确。8.下列关于运算符重载的描述中,错误的是_。(分数:1.00)A.可以通过运算符重载在 C+中创建新的运算符 B.赋值运算符只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象D.重载类型转换运

21、算符时不需要声明返回类型解析:解析 运算符的重载是针对 C+中原有运算符进行的,不能通过重载创造新的运算符。9.下列程序的输出结果是_。 #includeiostream using namespace std; int main() char a=“Hello,Test“; char*p=a; while(*p) coutchar(*p+“A“-“a“); else cout *p; p+; return 0; (分数:1.00)A.hello,testB.Hello,TestC.HELLO,TEST D.hELLO,tEST解析:解析 用一个指针变量 p 指向字符数组 a,在 while

22、循环中,当不指向数组尾时,将小写字母转换为大写字母,然后将其输出。10.下面叙述错误的是 _ 。(分数:1.00)A.基类的 protected 成员在派生类中仍然是 protected 的 B.基类的 protected 成员在 public 派生类中仍然是 protected 的C.基类的 protected 成员在 private 派生类中是 privated 的D.基类的 protected 成员不能被派生类的对象访问解析:11.下列各组类型声明符中,含义相同的一组是_。(分数:1.00)A.unsigned long int 和 longB.signed short int 和 sh

23、ort C.unsigned short 和 shortD.short int 和 int解析:解析 本题考查整型变量的类型,A、C 选项中前者为无符号的,后者为有符号的,D 选项中short int 为 2 个字节,int 为 4 个字节。12.下列成对的表达式中,运算符“/”的意义相同的一对是 _ 。(分数:2.00)A.8/3 和 8.0/3.0B.8/3.0 和 8/3C.8.0/3 和 8/3D.8.0/3.0 和 8.0/3 解析:13.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,

24、那么第一趟划分后的结果为_。(分数:2.50)A.23,13,51,57,66,26,81,69,76 B.13,23,26,51,57,66,81,76,69C.23,13,51,57,26,66,81,69,76D.23,13,51,57,81,26,66,69,76解析:解析 快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。14.有如下四个语句: cout“A“setfIll(“*“)leftsetw(7)“B“endl; couts

25、etfill(“*“)leftsetw(7)“A“B“endl; cout“A“serfill(“*“)rightsetw(7)“B“endl; coutsetfill(“*“)rightsetw(7)“A“B“endl; 其中能显示 A*B 的是_。(分数:1.00)A.和B.和C.和 D.和解析:解析 本题考查 C+流的使用。setfill()的作用是设置填充字符;left 的作用是使输出数据在指定宽度内左对齐;right 的作用是使输出数据在指定宽度内右对齐。15.为了提高函数调用的实际运行速度,可以将较简单的函数定义为_。(分数:2.50)A.内联函数 B.重载函数C.递归函数D.函数

26、模板解析:解析 内联函数一般是程序代码少于 10 行的函数,在编译过程中,直接在调用点处被展开不会因函数调用带来巨大的系统开销,因此能提高实际运行速度。16.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:1.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:解析 数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 C。17.类的析构函数的作用是 _。(分数:2.00)A.一般成员函数B.类的初始化C.对象的初始化

27、D.删除对象创建的所有对象 解析:18.对于算法的每一步,指令必须是可执行的。算法的 _ 要求算法在有限步骤之后能够达到预期的目的。(分数:2.00)A.可行性 B.有穷性C.正确性D.确定性解析:19.若有函数调用“fun(x*y,3,max(a,b,c)”,则 fun 的实参个数为_。(分数:2.00)A.3 B.4C.5D.6解析:20.有如下程序: #includeiostream using namespace std; class A public: A()cout“A“; A()cout“C“; ; class B:public A public: B()cout“G“; B()

28、cout“T“; ; int main() B obj; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.GATCB.AGTC C.GACTD.AGCT解析:21.一个满二叉树其深度为 4,则其叶子节点的个数为 _ 。(分数:1.00)A.8 B.16C.32D.4解析:解析 若深度为 k,则叶子节点的个数为 2k-1,这是满二叉树的性质之一。22.若有如下语句 #includeiostream.h void main( ) int x=3; do x=x-2; coutx; while(!(-x); 则上面程序段(分数:1.00)A.输出的是 1B.输出的是 1 和-2

29、 C.输出的是 3 和 0D.是死循环解析:解析 do-while 语句的一般格式为 do 循环体语句 while(表达式);先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行 x=x-2,即为 1。判断表达式的值,!(-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为 0,结束循环。23.有以下程序 #include iostream using namespace std; int a; int fun (); int main () extern int a; int b; a = 100; b = fun(); cou

30、tbend1; return 0; int fun) extern int a; return (10*a ; 其程序运行后的输出结果是(分数:2.00)A.100B.10C.1000 D.10000解析:解析 本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器,外部)。先来了解外部变量:外部变量用关键字 extern 表示。由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。定义a 为外部变量是告诉编译程序, a 是一个外部变量,并要求系统为 a 分配一个固定的永久存储空间。a 的值在整个程序

31、的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。在此程序中,在第二行定义了一个外部变量 a,主函数 main 给外部变量赋的初始值为 100,当调用函数 fun()时,外部变量 a 的值传到函数 fun()中,因此函数所返回的值为 100*10=1000。24.下列关于模板形参的描述中,错误的是_。(分数:2.50)A.模板形参表必须在关键字 template 之后B.模板形参表必须用括弧()括起来 C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参解析:解析 主要考查函数模板

32、的定义。声明一个函数模板的格式为“tcmplate模板形参表声明函数声明”,其中具有 typename参数名、class参数名、类型修饰参数名三种形式,形参用“”括起来。25.假定要对类 AB 定义加号操作符重载成员函数,实现两个 AB 类对象的加法并返回相加结果,该成员函数的声明语句为_。(分数:2.50)A.AB operator+(ABB.AB operator+(AB C.operator+(AB a);D.AB解析:解析 加法运算为双目运算,若作为 AB 类的成员函数重载,则第一个操作数就是类 AB 的对象本身,括号中含有一个参数,即另一个操作数。由于要返回相加结果,必须有返回值类型

33、 AB。26.将:x+y*z 中的“+”用成员函数重载,“*”用友元函数重载应写为 _ 。(分数:2.00)A.operator+(operator*(y, z)B.operator+(operator*(y, z) C.operator+(x*(y, z)D.x+(operator*(y, z)解析:解析 在定义了重载运算符后的函数后,函数 operator+重载了运算符“+”。如果在类以外的其他地方定义了一个函数,在类体中用 friend 对该函数进行声明,此函数就称为本类的友员函数。“*”用友元函数重载就是运算符函数不作为成员函数,而把它放在类外,“*”被改写为“operator*”。“

34、+”为成员函数重载,x.operator+。所以 x+y*z 被改写为“x.operator+(operator*(y,z)”。27.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*ia=a;则不能正确表示 a 数组元素的表达式是 _。(分数:2.00)A.*iaB.a10 C.*aD.aia-a解析:28.有如下程序: # include ioslreclm Using namespace std; class Base public: Base(int x=0):valB(x)coutvalB; Base()coutvalB; Private: int va

35、lB; ; class, Derived: public Base public: Dcrived(int x=0,int y=0):Base(x),valD(y) coutvalD; Derived()coutvalD; private: int valD; ; int main() Derived obj12(2,3); return 0; 运行时的输出结果是 _ ,(分数:2.50)A.2332 B.2323C.3232D.3223解析:解析 本题使用析构函数。29.一个类的友元函数或友元类可以通过成员操作符访问该类的 _ 。(分数:1.00)A.私有成员B.保护成员C.公有成员D.所有

36、成员 解析:解析 在 C+中,如果想让类中的成员数据可以被其他函数访问,可以通过友元函数声明来分享类中的资源。除了友元函数外,还有友元类。类的友元函数对类的属性和方法的访问能力等同于类的成员函数。30.有如下函数模板: templateclass TT square(T x) retum x*x; 其中的参数 T 是_。(分数:1.00)A.函数形参B.函数实参C.模板实参D.模板形参 解析:解析 本题 x 为函数形参,选项 A 错误;函数实参和模板实参只有在函数模板被调用并实例化的时候才可知,选项 B、C 错误;T 是模板形参,选项 D 正确。答案为 D 选项。31.计算机软件是_ 。(分数

37、:2.00)A.程序B.数据C.文档D.程序、数据及相关文档的完整集合 解析:解析 计算机软件是包括程序、数据及相关文档的完整集合。32.下列关于运算符重载的描述中,错误的是_。(分数:2.50)A.:运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元 D.重载口运算符应完成“下标访问”操作解析:解析 除了“、*、*、:、?:”这五个运算符外,其他运算符都可以重载。“、()、”以及所有的类型转换运算符只能作为成员函数重载。作为成员函数重载时,应完成“下标访问”操作,使得向指定下标处的元素赋值或取值成为可能。33.下面对静态数据成员的描述中,正确的

38、是_。(分数:2.50)A.静态数据成员是类的所有对象共享的数据 B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象调用解析:34.Sample 是一个类执行下面语句后,调用 Sample 类的构造函数的次数是_。 Sample a2, *p=new Sample;(分数:2.50)A.0B.1C.2D.3 解析:解析 创建数组对象时,因为数组的长度为 2,调用 2 次构造函数。动态创建对象指针时,再调用一次构造函数。35.下列关于 goto 语句的描述中,正确的是 _ 。(分数:1.00)A.goto 语句可在一个文件中随意转向B.g

39、oto 语句后面要跟一个它所转向的语句C.goto 语句可以同时转向多条语句D.goto 语句可以从一个循环体内转到循环体外 解析:解析 goto 语句也可以跳出循环和 switch 语句,goto 语句无条件地转移程序的执行控制。它总是与一标号相匹配,其形式为:goto 标号;,标号是用户自定义的标识符,它可以处于 goto 语句的前面,也可以处于其后,但标号必须与 goto 语句处于同一个函数中。定义标号时,由一个标识符后面跟一个冒号组成。36.对于模板定义关键字 class 和 typename 说法不正确的是(分数:2.00)A.程序中的 class 并不能都替换为 typenameB.class 和 typename 都可互相替换 C.程序中的 typename 都能替换为 classD.程序中的部分 class 可以替换为 typename解析:解析 在 C程序中的 typename 是都可以替换为 class 的,但 class 不能都替换为 typename。

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

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

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