欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1324541       资源大小:83.50KB        全文页数:29页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C+笔试-302 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.设有定义:class Cpublic:int ValUe;int X,*p;则以下引用形式中,正确的是( )。(分数:2.00)A.xvalue;B.xC:value;C.pA()cout“2”;Class B:public:Apublic:B()cout“3”;)B()cout“4”;Void main()B b;(分数:2.00)A.1234B.1324C.1342D.314213.使用白盒测试法时,确定测试数据应该根据( )和指定的覆盖标准。(分数:2.00)A.

    2、程序的内部逻辑B.程序的复杂结构C.使用说明书D.程序的功能14.有如下类定义:class Foopublic:Foo(intv):value(v) /Foo() /private:Foo() /int value0; /;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D.15.下面关于数组的初始化正确的是( )。(分数:2.00)A.charstr=a,b,CB.charstr2a,b,cC.charstr23:a,b,c,d),e,fD.charstr():a,b,c16.下面有关重载函数的描述中正确的是( )。(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函

    3、数形幸个数必须不同C.重载函数必须具有不同的形参列表D.重载函数名可以不同17.在数据库设计中,将 E-R 图转换为关系模式的过程属于( )。(分数:2.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段18.下面是关于派生类声明的开始部分,其中正确的是( )。(分数:2.00)A.class virtual B:public AB.virtual class B:public AC.class B:public A virtualD.class B:virtual publicA19.有以下程序:#includeiostreamusing namespace std;#d

    4、efinePl 3.14Class Pointprivate:int x,y;public:Point(int a,int b)Xa;y:b;int getx()return x;int gety()return y;class Circle:public Pointprivate:int r;public:Circle(int a,int b,int c):Point(a,b)rc;int getr()return r;double area()return PI*r*r;int main()Circle c1(5,7,10);coutc1.area()endl;return 0;程序执行后

    5、的输出结果是( )。(分数:2.00)A.314B.157C.78.5D.153.8620.下列说法正确的是( )。(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义21.下列关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明D

    6、.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型22.下列字符串中,正确的 C+标识符是( )。(分数:2.00)A.foo-lB.2bC.newD._25623.下列叙述中正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率24.下列是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+(Fraction

    7、,Fraction);B.Fraction operator-(Fraction);C.Fraction(分数:2.00)A.25B.30C.20D.1526.设 R 是一个二元关系,S 是一个三元关系,则下列运算中正确的是( )。(分数:2.00)A.R-SB.RSC.RSD.RS27.下列关于多态性的描述,错误的是( )。(分数:2.00)A.C+语言中的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态绑定28.结构化程序设计的 3 种基本结构是( )。(分数:2.00)A.过程、子程序和

    8、分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移29.类模板 templateclass Tclass x,其中友元函数 f 对特定类型 T(如 int),使函数 f(xint)成为 xint模板类的友元,则其说明为( )。(分数:2.00)A.friend voidf();B.friend voidf(xT);C.friend voidA:f();D.friend void CT:f(xT);30.有以下程序:#includeiostreamusing namespace std;class MyClasspublic:MyClass(int n)number=n;/拷贝构

    9、造函数MyClass(MyClasspublic:example(int B.a=b+;void print()aa+1 couta“;void print()constcouta“;void main()example x(3);Const example y(2);x.print();y.print();(分数:2.00)A.2 2B.4 3C.4 2D.3 235.已知 char a iht b;float c;double d;则表达式 a*b+c-d 结果为( )。(分数:2.00)A.doubleB.intC.floatD.char二、填空题(总题数:15,分数:30.00)36.

    10、在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。(分数:2.00)填空项 1:_37.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是 1。(分数:2.00)填空项 1:_38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_39.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示,用带空心圆的箭头表示传递的是数据。(分数:2.00)填空项 1:_40.数据库系统其内部分为三级模式,即概念模式、内模式和外模式,其中, 1 是用户的

    11、数据视图,也就是用户所见到的数据模式。(分数:2.00)填空项 1:_41.将一个函数声明为一个类的友元函数必须使用关键字_。(分数:2.00)填空项 1:_42.若有函数 fun(x,y),并且已经使函数指针变量 p 指向函数 fun,则使用 p 调用函数 fun 的方法是_。(分数:2.00)填空项 1:_43.C+语句 constchar *constp”hello”;,所定义的指针 p 和它所指的内容都不能被 1。(分数:2.00)填空项 1:_44.类中包含了一个静态成员函数,则 main 函数中和 P.f1(P);语句具有同样功能的语句为_。#includeiostream.hcl

    12、ass Mpublic:M(int A)Aa;B+a;static void f1(M m);private:int A;static int B;void M:f1(M m)cout“A=“m.A(end1;cout“B”m.Bend1;int M:B10;void main()M P(5);P.f1(P);(分数:2.00)填空项 1:_45.下面是一个栈类的模板,其中 push 函数将元素 i 压入栈顶,pop 函数弹出栈顶元素栈初始为空,top值为 0,栈项元素在 stacktop-中,在下面横线处填上适当语句,完成栈类模板的定义。templateclass Tclass Tstack

    13、enumsize1000;Tstacksize;int top;public:Tstack():top(0)void push(const T Tpop()if(top=0)exit(1);/栈空时终止运行return_;(分数:2.00)填空项 1:_46.对于下面定义的类 MyClass,请在函数 f()中添加对象成员把 n 的值修改为 50。Class MyClassPublic:MyClass(int x)n=x;)Void SetNum(int nl)nnl;private:int n;int f()MyClass*ptr=new MyClass(45);(分数:2.00)填空项 1

    14、:_47.在下列的程序的横线处填上适当的语句,使该程序的输出为 12。#includeiostream.husing namespace std;class Basepublic:int a,b;Base(int i)ai;;class Derived:public Baseint a;public:Derived(int x):Base(x),b(x+1);void show()_;/输出基类数据成员 a 的值。coutbendl;void main()Derived d(1);d.show();return 0;(分数:2.00)填空项 1:_48.在 MyClass 类的定义中,对赋值运

    15、算符进行重载。请将横线处缺失的部分补充完整。_MyClass:operator(const MyClassA()cout“2”;Class B:public:Apublic:B()cout“3”;)B()cout“4”;Void main()B b;(分数:2.00)A.1234B.1324C.1342 D.3142解析:解析 本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用墓类的析构函数。13.使用白盒测试法时,确定测试数据应该根据( )和指定的覆盖标准。(分数:2.00)A.程序的内部

    16、逻辑 B.程序的复杂结构C.使用说明书D.程序的功能解析:解析 白盒测试是把测试对象看成一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。14.有如下类定义:class Foopublic:Foo(intv):value(v) /Foo() /private:Foo() /int value0; /;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D. 解析:解析 本题考查的是类的定义。C+语言规定,在类体由不允许对所定义的数据成员进行初始化。

    17、15.下面关于数组的初始化正确的是( )。(分数:2.00)A.charstr=a,b,C B.charstr2a,b,cC.charstr23:a,b,c,d),e,fD.charstr():a,b,c解析:解析 本题考查的是字符数组的初始化。选项 B 中用 3 个元素初始化大小为 2 的数组,越界了;选项 C 中应该是 2 行 3 列的数组,题中使用 3 行 2 列初始化,选项 D 中数组合后应用方括号。16.下面有关重载函数的描述中正确的是( )。(分数:2.00)A.重载函数必须具有不同的返回值类型B.重载函数形幸个数必须不同C.重载函数必须具有不同的形参列表 D.重载函数名可以不同解

    18、析:解析 所谓函数重载,是指同一个函数名可以对应多个函数的实现,进行函数重载时,要求同名函数的参数个数上不同,或者参数类型上不同。17.在数据库设计中,将 E-R 图转换为关系模式的过程属于( )。(分数:2.00)A.需求分析阶段B.逻辑设计阶段 C.概念设计阶段D.物理设计阶段解析:解析 数据库设计阶段主要包括儒朱分析、概念设计、逻辑设计和物理设计。其中逻辑设计的主要工作是将 E-R。图转换为关系模式。18.下面是关于派生类声明的开始部分,其中正确的是( )。(分数:2.00)A.class virtual B:public AB.virtual class B:public AC.cla

    19、ss B:public A virtualD.class B:virtual publicA 解析:解析 C+中,虚基类说明格式为:class类名:virtual继承方式基类名其中,virtual 是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。19.有以下程序:#includeiostreamusing namespace std;#definePl 3.14Class Pointprivate:int x,y;public:Point(int a,int b)Xa;y:b;int getx()return x;int gety()return y;class Circ

    20、le:public Pointprivate:int r;public:Circle(int a,int b,int c):Point(a,b)rc;int getr()return r;double area()return PI*r*r;int main()Circle c1(5,7,10);coutc1.area()endl;return 0;程序执行后的输出结果是( )。(分数:2.00)A.314 B.157C.78.5D.153.86解析:解析 本程序设计了一个点类 Point,包含了横,纵两个坐标数据 x 和 y,由它派生出了圃类Circle,并加入了新的数据成员,即一个半径 r

    21、 和一个求圆面积的函数成员 area。在主函数 main 中,首先定义了一个圃 Circle 类的对象 c1,并通过它的构造函数初始化其数据成员。由此可知,其半径 r 的值为 10,所以其面积为 PI*10*10=314,即对象 c1 的函数成员 area 的返回值为 314。20.下列说法正确的是( )。(分数:2.00)A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字 inline 定义解析:解析 本题考查的是内联函数的定义,引入内联函数

    22、是为了解决程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,如果不加 inline 关键字,则编译器会将在类说明部分定义的任何函数都被认定为内联函数。21.下列关于虚函数的描述中,正确的是( )。(分数:2.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明 D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型解析:解析 在成员函数声明的前面加上 virtual 关键宇

    23、印把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不是静态成员函数。在派生类中可以重新定义从基类继承下来的虚函数,在派生类中重定义虚函数时,函数名、形参表和返回值类型必须保持不变。22.下列字符串中,正确的 C+标识符是( )。(分数:2.00)A.foo-lB.2bC.newD._256 解析:解析 第一个字符必须是字母或下划线,中间不能有空格,在第一个字母后,可以是任意字母、下划线和数字组成的字符序列;标识符的长度是任意的,但特定的编译系统能够识别的标识符长度是有限的。一般不要超过 31 个字符;标识符中大小写字母是有区别的;用户定义标识符时,不要采用系统的保留字。23.下列叙述中

    24、正确的是( )。(分数:2.00)A.一个逻辑数据结构只能有一种存储结构B.逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 解析:解析 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,共处理的效率是不同的。24.下列是重载为非成员函数的运算符函数原型,其中错误的是( )。(分数:2.00)A.Fraction operator+(Fractio

    25、n,Fraction);B.Fraction operator-(Fraction);C.Fraction(分数:2.00)A.25 B.30C.20D.15解析:解析 由主函数 main 入手,定义外部变量 x 和 y,调用函数 add。因为 x,y 为外部变量,所以“int x(20),y (5);”的赋值在 add 也是有效的,即 add 函数的运算结果为 25。26.设 R 是一个二元关系,S 是一个三元关系,则下列运算中正确的是( )。(分数:2.00)A.R-SB.RS C.RSD.RS解析:解析 关系的交()、并()和差(-)运算要求两个关系是周元的,显然作为二元的 R 和三元

    26、S 只能做笛卡尔积运算。27.下列关于多态性的描述,错误的是( )。(分数:2.00)A.C+语言中的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现 D.实现运行时多态性的机制称为动态绑定解析:解析 编译时的多态性是通过函数重载和模板体现的,运行时的多态性是通过虚函数体现的。28.结构化程序设计的 3 种基本结构是( )。(分数:2.00)A.过程、子程序和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:解析 程序的 3 种基本控制结构包括顺序、选择和重复(循环),这 3 种结构就足以表达出各种其他

    27、形式的结构。29.类模板 templateclass Tclass x,其中友元函数 f 对特定类型 T(如 int),使函数 f(xint)成为 xint模板类的友元,则其说明为( )。(分数:2.00)A.friend voidf();B.friend voidf(xT); C.friend voidA:f();D.friend void CT:f(xT);解析:解析 声明一个函数模板的格式:template模板形参表声明函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。30.有以下程序:#includeiostrea

    28、musing namespace std;class MyClasspublic:MyClass(int n)number=n;/拷贝构造函数MyClass(MyClassobj3 作为实参被传入,函数 fun 返回一个对象时,系统用返回值初始化一个匿名对象时调用了拷贝构造函数。总共调用 4 次。31.执行语句:coutsetfill(*)Setw(10)setfill(#)left123“OK”end 后将输出( )。(分数:2.00)A.123* * * * * * * OKB.123# # # # # # # OK C.123* * * * * * * * OK* * * * * * *

    29、 *D.123# # # # # # # #OK# # # # # # # #解析:解析 函数 setfill(char c)用于设置填充字符,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用填充字符填满,设置的填充符一直有效,直到再次填充字符为止,如题中调用函数setfill(*)将填充字符设置为*,后又调用函数 setfill(#)将填充字符设置为#。函数setw(int n)用于设置输入输出宽度,宽度设置的效果只对一次输入或输出有效,在完成一次数据的输出成输入后,宽度设置自动恢复为 0,如题中语句以宽度 10 输出嗽据“123”后,字符串“OK”的输出宽度就自动恢复为 0 了。而

    30、且题中输出的对齐方式为在输出宽度内左对齐。本题结果为 123# # # # # # OK。32.语句 ofstream f(“DAT(分数:2.00)A.DAT”,ios_base:app|ios_base:binary);的功能是建立流对象 f,并试图打开文件 DATADAT并与之连接,而且( )。A若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件B.若文件存在,将其截为空文件,若文件不存在,打开失败C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析 C+中可以在定义文件沈对象的同时打开文件,

    31、也可以在定义文件流对象以后用 open 函数打开文件。可以通过构造函数或 open 函数的第 2 个参数,确定文件的打开模式。33.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( )。(分数:2.00)A.125B.n/2C.n D.n+1解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键宇进行比较,直到两者相特,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。34.下面程序的输出结果是( )。#includeiostream.hC

    32、lass exampleint a;public:example(int B.a=b+;void print()aa+1 couta“;void print()constcouta“;void main()example x(3);Const example y(2);x.print();y.print();(分数:2.00)A.2 2B.4 3C.4 2 D.3 2解析:解析 “+”是右结合的,所以先赋值为 3,最后输出 3+1;常成员函数只有常对象才能调用,所以输出 2。35.已知 char a iht b;float c;double d;则表达式 a*b+c-d 结果为( )。(分数:

    33、2.00)A.double B.intC.floatD.char解析:解析 本题考查混合运算表达式类型,由表达式中具有最高优先级的类型所确定,所以答案为A。二、填空题(总题数:15,分数:30.00)36.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。(分数:2.00)填空项 1:_ (正确答案:自顶向下。)解析:解析 程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些于目标作为过渡。上述方法概括为:自顶向下,逐步细化。37.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储

    34、结构必须是 1。(分数:2.00)填空项 1:_ (正确答案:顺序存储戊顺序方式存储。)解析:解析 二分法查找对表的、要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_ (正确答案:类。)解析:解析 在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。39.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示,用带空心圆的箭头表示传递的是数据。(分数:2.00)填空项 1:_ (正确答案:模块。)解析:解析 矩形表示的是模

    35、块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。40.数据库系统其内部分为三级模式,即概念模式、内模式和外模式,其中, 1 是用户的数据视图,也就是用户所见到的数据模式。(分数:2.00)填空项 1:_ (正确答案:外模式。)解析:解析 数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法,概念模式是数据库系统中全局数据逻辑结构的描述,外模式是用户的数据视图,也就是用户所见到的数据模式。41.将一个函数声明为一个类的友元函数必须使用关键字_。(分数:2.00)填空项 1:_ (正确答案:

    36、friend。)解析:解析 定义友元函数的方式是在类定义中用关键宇 friend 说明该函数,其格式为:friend类型友元函数名(参数表);42.若有函数 fun(x,y),并且已经使函数指针变量 p 指向函数 fun,则使用 p 调用函数 fun 的方法是_。(分数:2.00)填空项 1:_ (正确答案:(*p)(x,y)。)解析:解析 一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向读函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。 函数指

    37、针变量定义的一般形式为:类型说明符(*指针变量名)();其中“类型说明符”表示被指函数的返回值的类型。“(*指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。43.C+语句 constchar *constp”hello”;,所定义的指针 p 和它所指的内容都不能被 1。(分数:2.00)填空项 1:_ (正确答案:改变。)解析:解析 本题考查的是定义常量的关键字 const,由 const 定义的变量的值不可以再改变,所以定义时必须进行初始化。44.类中包含了一个静态成员函数,则 main 函数中和 P.f1(P);语句具有同样功能的语句为_。#i

    38、ncludeiostream.hclass Mpublic:M(int A)Aa;B+a;static void f1(M m);private:int A;static int B;void M:f1(M m)cout“A=“m.A(end1;cout“B”m.Bend1;int M:B10;void main()M P(5);P.f1(P);(分数:2.00)填空项 1:_ (正确答案:M:f1(P);。)解析:解析 由于 f1 是类 M 的静态成员函数,即说明类 M 的任何对象都共享一份 f1,因此,不仅可以从对象那里访问 f1,还可以用域操作符:通过类名来访问。45.下面是一个栈类的模

    39、板,其中 push 函数将元素 i 压入栈顶,pop 函数弹出栈顶元素栈初始为空,top值为 0,栈项元素在 stacktop-中,在下面横线处填上适当语句,完成栈类模板的定义。templateclass Tclass Tstackenumsize1000;Tstacksize;int top;public:Tstack():top(0)void push(const T Tpop()if(top=0)exit(1);/栈空时终止运行return_;(分数:2.00)填空项 1:_ (正确答案:stack-top或 stacktop-=1)或 stacktop=top-1。)解析:解析 本题考

    40、查的是堆栈数据结构。分析题目,首先利用函数 void push(const T。)解析:解析 本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“-”。47.在下列的程序的横线处填上适当的语句,使该程序的输出为 12。#includeiostream.husing namespace std;class Basepublic:int a,b;Base(int i)ai;;class Derived:public Baseint a;public:Derived(int x):Base(x),b(x+1);void show()_;/输出基类数据成员 a 的值。cout

    41、bendl;void main()Derived d(1);d.show();return 0;(分数:2.00)填空项 1:_ (正确答案:eoutBase:a。)解析:解析 本题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。本题要求结果是输出 12,分析题目,首先调用基类的构造函数,然后是调用子对象的构造函数,横线处要求输出基类成员 a 的值,填入 toutBase:a 即可。48.在 MyClass 类的定义中,对赋值运算符进行重载

    42、。请将横线处缺失的部分补充完整。_MyClass:operator(const MyClass返回;如果参数被声明为指向同类对象的引用妨指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是则不做任何处理;如果被赋值对象占用了动态空间,应选释放这些资源,以便接收新的资源,如果参数被声明为指针成引用,通常应加上 const 修饰;一个类如果需要重载运算符=,通常也就需要定义自身特有的复制构造函数,反之亦然。49.下列程序的输出结果是_。#includeiostream)using namespace Std;Class Testpublic:Test()cnt+;Test()cnt-;sta

    43、ticint Count()return cnt;private:static int cnt;int Test:cnt0;int main()coutTest:Count();Test t1,t2;Test*pT3new Test;Test*pT4new Test;coutTest:Count();delete pT4;delete pT3;coutTest:Count()endl;return 0;(分数:2.00)填空项 1:_ (正确答案:042。)解析:解析 C+中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成

    44、员用 static 说明为静态的,N0 这个类成员只有一个拷贝并被这个类的所有对象所共享。类 Test 的静态成员 cnt,初始值为 0,所以执行语句”coutTest:Count()“;”后输出 0。然后程序创建了两个对象 t1 和 t2;以及两个对象指针并调用 new 来初始化指针,所以 cnt 的值变成了 4。然后程序将对象指针 pT4、pT3 delete 了,此时将分别调用析构函数将 cnt 的减 1,所以最后输出 cnt 的值为 2。50.有以下程序:#includeiostreamusing namespace std;class Basepublic:Base()K0;int

    45、x;class Derivedl:virtual public Basepublic:Derivedl()x10;class Derived2:virtua1 public Basepublic:Derived2()x20;class Derived;public Derivedl,protected Derived2;int main()Derived obj;coutobj.xendl;return 0;该程序运行后的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:20。)解析:解析 本题中,虽然 Derived1 和 Derived2 由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x 只存在一份拷贝,不论在类 Derived1 中修改,还是在类 Derived2 中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obi;”时,就会先调用虚基类 Base 的构造函数,使得 x=0,然后执行类 Derived1 的构造函数使得 x=10,再执行类 Derived2 的构造函数,使得 x20。最后输出 x 的值为 20。


    注意事项

    本文(【计算机类职业资格】二级C++笔试-302及答案解析.doc)为本站会员(feelhesitate105)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开