【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc

上传人:rimleave225 文档编号:1318187 上传时间:2019-10-17 格式:DOC 页数:43 大小:96.50KB
下载 相关 举报
【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc_第1页
第1页 / 共43页
【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc_第2页
第2页 / 共43页
【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc_第3页
第3页 / 共43页
【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc_第4页
第4页 / 共43页
【计算机类职业资格】2019年计算机等级考试二级C++语言程序设计考前冲刺试题(1)及答案解析.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、2019 年计算机等级考试二级 C+语言程序设计考前冲刺试题(1)及答案解析(总分:100.00,做题时间:120 分钟)一、单项选择题(总题数:40,分数:40.00)1.数据的存储结构是指(分数:1.00)A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式C.数据在计算机中的顺序存储方式D.存储在计算机外存中的数据2.将 E-R 图转换到关系模式时,实体与实体间的联系可以表示成(分数:1.00)A.属性B.关系C.键D.域3.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为(分数:1.00)A.125B.n/ZC.nD.n+14.树是结点的集合,它的根结点的数目是

2、(分数:1.00)A.有且只有 1 个B.1 或多于 1C.0 或 1D.至少有 2 个5.设 R 是一个二元关系,S 是一个三元关系,则下列运算中正确的是(分数:1.00)A.R-SB.RSC.RSD.RS6.关于结构化程序设计原则和方法的描述错误的是(分数:1.00)A.选用的结构只允许有一个入口和一个出口B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C.不允许使用 GOTO 语句D.语言中所没有的控制结构,应该采用前后一致的方法来模拟7.对关系 S 和 R 进行集合运算,结果中既包含 S 中的所有元组也包含 R 中的所有元组,这样的集合运算称为(分数:1.00)A.并运算B.交运

3、算C.差运算D.积运算8.下列叙述中正确的是(分数:1.00)A.在面向对象的程序设计中,各个对象之间具有密切的关系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述三种说法都不对9.结构化程序设计的三种基本结构是(分数:1.00)A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移10.在数据库设计中,将 E-R 图转换为关系模式的过程属于(分数:1.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段11.在 C+语言中函数返回值的类型是由( )决定的。(分数:1.00)A.

4、调用该函数时系统临时B.return 语句中的表达式类型C.定义该函数时所指定的函数类型D.调用该函数时的主调函数类型12.下列描述正确的是(分数:1.00)A.表示 mn 为 true 或 mnB.friendvoidf(x);C.friendvoidA:f();D.friendvoidC:f(x);17.类 MyClass 的定义如下:classMyClasspublic:MyClass()value=0;SetVariable(inti)valtic=i;private:intvalue;MyClass*P,my;p=则对下列语句序列正确的描述是(分数:1.00)A.语句 p=是把对象

5、my 赋值给指针变量 PB.语句 MyClass*P,my;会调用两次类 MyClass 的构造函数C.对语句*P.SetVariable(5)的调用是正确的D.语句 P-SetVariable(5)与语句 my.SetVariable(5)等价18.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内19.如果表达式-x/y 中的“-”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式

6、,该表达式还可表示为(分数:1.00)A.operator/(x.operator-(),y);B.operator/(operator-(x),y);C.X.operator-().operator/(y);D.y.operator/(operator-(x);20.已知类 A 有公用数据成员 a,并重载了=运算符,且有 Aobj2;constA*ptr=newA;,则下列语句错误的是(分数:1.00)A.ptr-a=100;B.ptr=C.ptr+;D.obj2=*ptr;21.可以用 P.a 的形式访问派生类对象 P 的基类成员 a,其中 a 是(分数:1.00)A.私有继承的公有成员B

7、.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员22.下面程序的运行结果为#includeclassAintnum;public:A(inti)num=i;)A(Avoidprint()coutstr;D.cin.read(str,strlen(str);24.下列程序的输出结果为#includeclassTestClasspublic:TestClass()val+;static,intval;intTestClass:val=0;voidmain()TestClasscsl;cout。下列表述中错误的是(分数:1.00)A.中有可能包含关键字 intB.中有可能包含自定义标

8、识符C.中衣可能包含字符*D.中可能包含37.Sample 是一个类,执行下面语句后,调用 Sample 类的构造函数的次数是Samplea2,*p=newSample;(分数:1.00)A.0B.1C.2D.338.有如下两个类定义:classXXprivate:doublex1;protected:doublex2;public:doublex3;claseYY:protectedXXprivate:doubley1;protected;doubley2;public:doubley3;在类 YY 中保护成员变量的个数是(分数:1.00)A.1B.2C.3D.439.下列关于运算符重载的描

9、述中,错误的是(分数:1.00)A.可以通过运算符重载在 C+中创建新的运算符B.赋值运算符只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象D.重载类型转换运算符时不需要声明返回类型40.下列关于类模板的描述中,错误的是(分数:1.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数二、程序改错题(总题数:1,分数:18.00)41.使用 VC+6.0 打开考生文件夹下的源程序文件 1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为TC1TC2注意:不要改动 m

10、ain 函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/*error*的下面。试题程序:#include#include structTCO/*error*virtualvoidfun();classTCl:publicTCOvoidfun()coutfun();/*error*p=*obj2;p-fun();return;(分数:18.00)_三、简单应用题(总题数:1,分数:24.00)42.使用 VC+6.0 打开考生交件夹下的源程序文件 2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(intN4)的功能是用 4 个数字,组成互不相同且无重复数字的 3 位

11、数,并将满足所有条件的数字输出到屏幕,并且每输出一个 3 位数就换一行。程序分析:可填在百位、十位、个位的数字都是 1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0,则也去掉。试题程序:#includevoidfun(intN4)intmain()intN4=1,2,3,0;fun(N):return0;(分数:24.00)_四、综合应用题(总题数:1,分数:18.00)使用 VC+6.0 打开考生文件夹下的源程序文件 3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(分数:18)(1).基类 People 完成打印功能,定义其中的打印函

12、数为虚函数,请在注释 1 后添加适当的语句。(分数:4)_(2).类 Boy 继承于 People,在构造函数中设置性别为 1,请在注释 2 后添加适当的语句。(分数:4)_(3).类 Girl 继承于 People,在构造函数中设置性别为 0,请在注释 3 后添加适当的语句。(分数:5)_(4).实现函数 fun,用于传递不同的类型,打印出性别,请在注释 4 后添加适当的语句。输出的内容如下:Sex=BoySex=Girl注意:除在指定位暨添加语句之外,请不要改动程序中的其他内容。试题程序:#includeclassPeoplepublic:/*1*voidprint()intsex;cla

13、ssBoy:publicPeoplepubliC:Boy()/*2*voidprint()coutn 为 true 或 mniso:out 是为输出而打开。14.下列各类函数中,不是类的成员函数的是(分数:1.00)A.构造函数B.抽象类C.派生类 D.以上都不对解析:构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而友元函数则是为了增加类的访问灵活性而允许其他类的成员函数或全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。15.下面关于数组的初始化正确的是(分数:1.00)A.charstr=a,b,e B.charstr2=a,

14、b,e)C.charstr23=a,b,C,d,e,fD.charstr()=a,b,C解析:本题考查的是字符数组的初始化。选项 B 中用三个元素初始化大小为 2 的数组,越界了;选项 C 中应该是2 行 3 列的数组,题中使用 3 行 2 列初始化;选项 D 中数组应用方括号。16.类模板 templateclassX,其中友元函数 f 对特定类型 T(如 int),使函数 f(x)成为 x 模板类的友元,则其说明为(分数:1.00)A.friendvoidf();B.friendvoidf(x); C.friendvoidA:f();D.friendvoidC:f(x);解析:声明一个函数

15、模板的格式 template函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。17.类 MyClass 的定义如下:classMyClasspublic:MyClass()value=0;SetVariable(inti)valtic=i;private:intvalue;MyClass*P,my;p=则对下列语句序列正确的描述是(分数:1.00)A.语句 p=是把对象 my 赋值给指针变量 PB.语句 MyClass*P,my;会调用两次类 MyClass 的构造函数C.对语句*P.SetVariable(5)的调用是正

16、确的D.语句 P-SetVariable(5)与语句 my.SetVariable(5)等价 解析:语句 p=是把对象 my 的地址值赋给指针变量 P。语句 MyClass*P,my;,由于 P 只是一个指向对象的指针,因此定义指针 P 不调用构造函数,所以此语句只调用一次构造函数。对成员函数的引用可以通过两种形式:指针-成员函数(形参表)或者对象名.成员函数名(形参表)。18.下面关于 break 语句的描述中,不正确的是(分数:1.00)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.brea

17、k 语句可用于 if 条件判断语句内 解析:本题考查 break 语句的使用。break 可以结束 switch 语句和 for 循环语旬,但是不能使用在条件判断语句内。19.如果表达式-x/y 中的“-”和“/”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为(分数:1.00)A.operator/(x.operator-(),y);B.operator/(operator-(x),y); C.X.operator-().operator/(y);D.y.operator/(operator-(x);解析:本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算

18、符+,且 c1、c2 都是该类的对象,则 c1.operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则 operator+(c1,c2)与c1+c2 含义相同。同理,运算符“/”作为友元函数重载,则(-x)/y 与表达式 operator/(x),y)相同。前缀运算符“-”作为友元函数重载,则-x 与 operator-(x)相同,所以组合起来是operator/(operator-(x),y);,即 B 选项。20.已知类 A 有公用数据成员 a,并重载了=运算符,且有 Aobj2;constA*ptr=newA;,则下列语句错误的是(分数:1.00)A.pt

19、r-a=100; B.ptr=C.ptr+;D.obj2=*ptr;解析:本题考查 const 修饰符的作用。注意,const 位置不同,其修饰的部分也是不同的。本题中 const 修饰的是 ptr 所指的对象本身,所以,ptr 可以重新指向新的对象,而 ptr-a 则无法被更新。21.可以用 P.a 的形式访问派生类对象 P 的基类成员 a,其中 a 是(分数:1.00)A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员 解析:只有公有继承的公有成员才能被派生类的对象直接访问,其他的情况都会因为访问权限问题产生错误。22.下面程序的运行结果为#inclu

20、declassAintnum;public:A(inti)num=i;)A(Avoidprint()coutstr;D.cin.read(str,strlen(str); 解析:本题考查 cin 流对象的几种成员函数 get,getline,read 及流提取符的使用规则。24.下列程序的输出结果为#includeclassTestClasspublic:TestClass()val+;static,intval;intTestClass:val=0;voidmain()TestClasscsl;cout TestClasscs2;TestClasscs3,cs4;cout (分数:1.00)

21、A.O3B.13C.14 D.24解析:由主函数 main 入手,定义 TestClass 类的对象 cs1,执行 cs1.va1,其中 va1 为静态变量,根据intTestClass:val=0;初始化,TestClass 中的 TestClass()val+;构造函数执行后,val 值为 1。主函数中接着定义对象 cs2,cs3,cs4。执行 cout。25.有以下类定义:classMyClassprivate:intid;chargender;char*phone;public:MyClass():id(0),gender(#),phone(NULl)MyClass(intn0,cha

22、rge=#,char*ph=NULL)id=no;gender=ge;phone=ph;下列类对象定义语句中错误的是(分数:1.00)A.MyClassmyObj;B.MyClassmyObj(11,“13301111155“); C.MyClassmyObj(12,m);D.MyClassmyObj(12);解析:本题考查构造函数的应用。对象建立用初始化列表对数据成员进行时。列表中的参数类型要与构造函数中形参类型一致。B 选项中第二个参数为 13301111155,是字符串,而构造函数中第二个形参为 char 型,两者不一致造成错误。26.下列是关于派生类声明的开始部分,其中正确的是(分数:

23、1.00)A.classvirtualB:publicAB.virtualclassB:publicAC.classB:publicAvirtualD.classB:virtualpublicA 解析:声明派生类的一般形成为 class 派生类名:继承方式基类名。其中继承方式包括 public、private 和protected。而 virtual 为 C+中的关键字,所以选项 C 错。虚函数的使用方法是在基类用 virtual 声明成员函数为虚函数。27.如果类 A 被说明成类 B 的友元,则(分数:1.00)A.类 A 的成员即类 B 的成员B.类 B 的成员即类 A 的成员C.类 A

24、的成员函数不得访问类 B 的成员D.类 B 不一定是类 A 的友元 解析:本题考查的是友元类的定义:类 A 为类 B 的友元类,则类 A 的所有成员函数都是类 B 的友元函数,但反之则不一定成立。28.下列关于虚基类的描述,错误的是(分数:1.00)A.设置虚基类的目的是为了消除二义性B.虚基类的构造函数在非虚基类之后调用 C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基

25、类的构造函数先于非虚基类的构造函数执行。29.下列关于多态性的描述,错误的是(分数:1.00)A.C+语言中的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现 D.实现运行时多态性的机制称为动态绑定解析:编译时的多态性是通过函数重载和模板体现的,运行时的多态性是通过虚函数体现的。30.若有如下程序:#includeusingnamespacestd;classTestClasslprivate:inta;public:TestClassl(inti)a=i:voiddisp( )cout ;classTestClass2pri

26、vate:intb:public:TestClass2(intj)b=j;voiddisp()cout ;classTestClass3:publicTestClass2,publicTestClasslprivate:intc;public:TestClass3(intk):TestClass1(k-2),TestClass2(k+2)c=k:voiddisp()TestClasssl:disp();TestClasss2:disp();cout ;intmain()TestClass30bj(10);obj.disp();return0;程序执行后的输出结果是(分数:1.00)A.10,10,10B.10,12,14C.8,10,12D.8,12,10 解析:首先定义 TestClass3 的对象 obj,参数为 10。其中 TestClass3 为 TestClass1 和 TestClass2 的派生类。然后调用 disp 成员函数。disp 中首先执行 TestClassl:disp();,然后执行 TestClass2:disp();,最后执行输出语句 cout。31.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为

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

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

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