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

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

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

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

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

    1、二级 C+-183 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关2.在结构化程序设计中,模块划分的原则是_。(分数:2.50)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度,模块间具有低耦合度3.下列叙述中正确的是_。(分数:2.50)A.软件测试的主要目

    2、的是发现程序中的错误B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误4.下面选项中不属于面向对象程序设计特征的是_。(分数:2.50)A.继承性B.多态性C.类比性D.封装性5.下列对列的叙述正确的是_。(分数:2.50)A.队列属于非线性表B.队列按“先进后出”的原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据6.对下列二叉树进行前序遍历的结果为_。 (分数:2.50)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZD.ABCDEFXYZ7.某二叉树中有 n 个

    3、度为 2 的结点则该二叉树中的叶子结点数为_。(分数:2.50)A.n+1B.n-1C.2nD.n/28.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是_。(分数:2.50)A井B交C.投影D.笛卡儿乘积9.在 E-R 图中,用来表示实休之间是联系的图形是_。(分数:2.50)A.矩形B.椭圆形C.菱形D.平行四边形10.下列叙述中错误的是_。(分数:2.50)A.在数据库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持11.为了取代 C 中带参数的宏,

    4、在 C+中使用_。(分数:2.50)A.重载函数B.内联函数C.递归函数D.友元函数12.下列关于类定义的说法中,正确的是_。(分数:2.50)A.类定义中包括数据成员和函数成员的声明B.类成员的默认访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义13.下列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:2.50)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数14.

    5、通过运算符重载,可以改变运算符原有的_。(分数:2.50)A.操作数类型B.操作数个数C.优先级D.结合性15.有如下函数模板: template Tclass TT square(T x) (return x*x;) 基中 T 是_。(分数:2.50)A.函数形参B.函数实参C.模板形参D.模板实参16.使用输入/输出操作符 setw,可以控制_。(分数:2.50)A.输出精度B.输出宽度C.对齐方式D.填充字符17.下列字符串中,不可以用作 C+标识符的是_。(分数:2.50)A.y_2006B._TEST_HC.ReturnD.switch18.字面常量 42、4.2、42L 的数据类型

    6、分别是_。(分数:2.50)A.long、double、intB.long、float、intC.int、double、longD.int、float、long19.执行下列语句段后,输出字符“*”的个数是_。 for(int i=50; i1; -i)cout“*“;(分数:2.50)A.48B.49C.50D.5120.有如下程序段: int i=0, j=1; int / r=j;/ int *p=/ *p=/ 基中会产生编译错误的语句是_。(分数:2.50)A.B.C.D.21.有如下函数定义: void func(int a, int b+; 若执行代码段: int x=0, y=1

    7、 func(x, y); 则变量 x 和 y 值分别是_。(分数:2.50)A.0 和 1B.1 和 1C.0 和 2D.1 和 222.有如下程序: #includeiostream using namespace std; class A public stakic int a; void init()a=1; A(int a=2) init(); a+; ; int A:; a=0 A obj; int main() coutobj.a; return 0; 运行时输出的结果是_。(分数:2.50)A.0B.1C.2D.323.下列有关继承和派生的叙述中,正确的是_。(分数:2.50)A

    8、.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现24.下列运算符中,不能被重载的是_。(分数:2.50)A.B.templateclassT abs(T x)return x0?-x;x;C.template Tclass Tabs(T x)return x0?-x;x;D.template T abs(T x)return x0?-x;x;26.在语句 cindata;中,cin 是_。(分数:2.50)A.C+的关键字B.类名C.对象名D.函数名27.有如下程序: #include using namespa

    9、ce std; class test private: int a; public: test()cout“constructor“ENDL; test(int a)coutaendl; test(const test cout“Copy constructor“endl; test()cout“destructor“endl; ; int main() test A(3) return 0; 运行时输出的结果是_。(分数:2.50)A.3B.constructordestruclorC.copy constructordestructorD.3destruclor28.若有如下类声明: cl

    10、ass My Class public: MyClass() cout1; ; 执行下列语句: MyClass a, b2, *p2; 以后,程序的输出结果是_。(分数:2.50)A.11B.111C.1111D.1111129.有如下程序: #includeiostream using namespace std; class Point public: static int number; public: Point()number+; Point()number-; ; imt Point:number=0; void main() Point *ptr; Point A, B; Poi

    11、nt *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; 运行时输出的结果是_。(分数:2.50)A.3B.4C.6D.730.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #includeiostream using namespace std; class Base int a, b; public: Base(int x, int y) a=x; b=y; void show()couta“, “bend

    12、l; class Derived:public Base int c, d; public: Derived(int x, int y, int z, int m):Base(x, y)c=z; d=m; void show()coutc“, “dendl; ; int main() Base B1(50, 50), *pb; Derived D1(10, 20, 30, 40); pb= pb-show(); return 0; 运行时输出的结果是_。(分数:2.50)A.10, 20B.30, 40C.20, 30D.50, 5031.有如下程序: #includeiostream usi

    13、ng namespace std; class A public; A(int i)x=i; void dispa()coutx=“, “; private: int x; ; class B:public A public; B(int i):A(i+10) x=i; voud dispb() dispa():coutxendl; private: int x; ; int main() B b(2); b.dispb() return 0; 运行时输出的结果是_。(分数:2.50)A.10, 2B.12, 10C.12, 2D.2, 232.虚函数支持多态调用,一个基类的指针可以指向派生类

    14、的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #include using namespace std; class Base public: virtual void f()cout“f0+“; void g() cout“g0+“; ; class Derived:public Base public: void f() cout“f+“; void g() cout“g+“; ; int main() Derived d; Base *p= p-f(); p-g(); return 0; 运行时输出的结果是_。(分数

    15、:2.50)A.f+g+B.f0+g+C.f+g0+D.f0+g0+33.下面程序中对一维坐标点类 Point 进行运算符重载: #includeiostream using namespace std; class Point public: Point(int val) x=val; Point return*this; Point operator+(int) Point old=*this, +(*this); return old; int GetX() constreturn x; private: int x; ; int main() Point a(10); cout(+a)

    16、.GetX(); couta+.GETX(); return 0; 编译和运行情况是_。(分数:2.50)A.运行时输出 1011B.运行时输出 1111C.运行时输出 1112D.编译有错34.有如下程序: #includeiostream using namespace std; int main() char str100, *p; cout“please input a string:“; cinsir; p=str; for(int i=0; *p!=“/0“; p+, i+); coutiendl; return 0; 运行这个程序时,若输入字符串为 abcdefg abcd 则输

    17、出结果是_。(分数:2.50)A.7B.12C.13D.10035.有如下程序: #includeiostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long a)x=a; Private: long x; ; long fun(Sample s) if(s.x2)return 1; return s.x*fun(Sample(s.x-a); int main() int sum=0 for(int i=0; i6; i+) sum+=fun (Sample(i);) cout

    18、sum; return 0; 运行时输出的结果是_。(分数:2.50)A.120B.16C.154D.3436.必须用一对大括号括起来的程序段是_。(分数:2.50)A.switch 语句中的 case 标号语句B.if 语句的分支C.循环语句的循环体D.函数的函数体37.以下程序的输出结果是_。 #includeiostream using namespace std; int main() int a=0, i; for(i=1; i5; i+) switch(i) case 0; case 3:a+=2; case 1: case 2:a+=3; default:a+=5; coutae

    19、ndl; return 0; (分数:2.50)A.31B.13C.10D.2038.语句 int*p= p=B.int *p; p=k;C.int *p; *p=D.int *p; *p=k;39.有以下程序: #includeiostream #includecstring using namespace std; int main() char p=“abcdefgh“; coutstrlen(strcpy(p, “12345“)endl; return 0; 执行后输出的结果是_。(分数:2.50)A.8B.12C.5D.740.若有定义:int*p;则下列各选项中,不同于表达式*p=

    20、*p+1;的是_。(分数:2.50)A.*p+B.+*pC.*p+=1D.+(*p)二级 C+-183 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法的效率只与问题的规模有关,而与数据的存储结构无关B.算法的时间复杂度是指执行算法所需要的计算工作量 C.数据的逻辑结构与存储结构是一一对应的D.算法的时间复杂度与空间复杂度一定相关解析:解析 算法的复杂度主要包括时间复杂度和空间复杂度。通常用时间复杂度和空间复杂度来衡量算法效率,算法的时间复杂度就是执行该算法所需要的计算工作量;算法所执行的基本

    21、运算次数与问题的规模有关。而一个算法的空间复杂度,就是执行该算法所需要的内存空间;一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构。2.在结构化程序设计中,模块划分的原则是_。(分数:2.50)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度,模块间具有低耦合度 解析:解析 软件设计通常采用结构化设计方法,模块的独立程度是评价设计好坏的重要度量标准。耦合性与内聚性是模块独立性的两个定性标准。内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量;耦合性是模块间相互连接的紧密程度的度量。一般较优秀的软件设计,应尽量做到高内聚、低耦

    22、合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。3.下列叙述中正确的是_。(分数:2.50)A.软件测试的主要目的是发现程序中的错误 B.软件测试的主要目的是确定程序中错误的位置C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D.软件测试是证明软件没有错误解析:解析 关于软件测试的目的,Grenford J. Myers 在 The Art of So ftware Testing 一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试

    23、。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。4.下面选项中不属于面向对象程序设计特征的是_。(分数:2.50)A.继承性B.多态性C.类比性 D.封装性解析:解析 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。面向对象技术有三个重要特性,即封装性、继承性和多态性。5.下列对列的叙述正确的是_。(分数:2.50)A.队列属于非线性表B.队列按“先进后出”的原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据 解析:解析 队列是一种线性表,它允许在一端进行插入,在另一端进行删除。

    24、允许插入的一端称为队尾,允许删除的另一端称为队头。它又称为“先进先出”或“后进后出”的线性表,体现了“先来先服务”的原则。6.对下列二叉树进行前序遍历的结果为_。 (分数:2.50)A.DYBEAFCZXB.YDEBFZXCAC.ABDYECFXZ D.ABCDEFXYZ解析:解析 前序遍历首先访问根结点,然后遍历左子树,最后遍历右子树。7.某二叉树中有 n 个度为 2 的结点则该二叉树中的叶子结点数为_。(分数:2.50)A.n+1 B.n-1C.2nD.n/2解析:解析 由二叉树的性质知:在任意一棵二叉树中,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。本题中,度为 2 的结

    25、点数为 n,故叶子结点数为 n+1 个。8.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是_。(分数:2.50)A井B交 C.投影D.笛卡儿乘积解析:解析 关系的基本运算有两类:一类是传统的集合运算(并、交、差),另一类是专门的关系运算(选择、投影、连接)。集合的并、交、差:设有两个关系为 R 和 S,它们具有相同的结构,R 和 S 的并是由属于 R 和 S,或者同时属于 R 和 S 的所有元组组成的集合,记作 RS;R 和 S 的交是由既属于 R 又属于S 的所有元组组成的集合,记作 RS;R 和 S 的差是由属于 R 但不属于 S 的所有元组组成的集合,记作 R-S。因此,

    26、在关系运算中,不改变关系表中的属性个数但能减少元组(关系)个数的只能是集合的交了。9.在 E-R 图中,用来表示实休之间是联系的图形是_。(分数:2.50)A.矩形B.椭圆形C.菱形 D.平行四边形解析:解析 该题目主要考的是 E-R 模型的图示法:在 E-R 图中用矩形表示实体,在矩形内写上该实体的名字,这是实体表示法;用椭圆表示属性,在椭圆形内写上该属性的名称,这是属性表示法;用菱形表示联系,这是联系表示法。10.下列叙述中错误的是_。(分数:2.50)A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统

    27、的基础上建立数据库D.数据库系统需要操作系统的支持解析:解析 数据库系统(Database System,DBS),数据独立性是它的一个特点。一般分为物理独立性与逻辑独立性两级。物理独立性指数据的物理结构的改变,如存储设备的变换、存取方式的改变不影响数据库的逻辑结构,从而不引起应用程序的变化。逻辑独立性指数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据联系等不需要相应修改应用程序。所以,在数据系统中,数据的物理结构并不一定与逻辑结构一致。11.为了取代 C 中带参数的宏,在 C+中使用_。(分数:2.50)A.重载函数B.内联函数 C.递归函数D.友元函数解析:解析 在 C

    28、+中,内联函数是为了取代宏而引进的。12.下列关于类定义的说法中,正确的是_。(分数:2.50)A.类定义中包括数据成员和函数成员的声明 B.类成员的默认访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义解析:解析 类成员的默认权限为私有的,数据成员可以声明为私有、公有和保护的。成员函数可以在类体内定义,此时为内联函数。类定义中包括数据成员和成员函数的声明和定义。13.下列关于派生类构造函数和析构函数的说法中,错误的是_。(分数:2.50)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先

    29、调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析 派生类析构函数的调用顺序为:先调用派生类的析构函数再调用基类的析构函数,与派生类构造函数的定义正好相反。14.通过运算符重载,可以改变运算符原有的_。(分数:2.50)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析 运算符的重载不可以改变运算符的优先级和结合性,也不可以改变操作数个数,即单目运算符重载后还是单目运算符,双目运算符重载后还是双目运算符。15.有如下函数模板: template Tclass TT square(T x) (return x*x;

    30、) 基中 T 是_。(分数:2.50)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析 由函数模板的定义可知,T 为模板形参。16.使用输入/输出操作符 setw,可以控制_。(分数:2.50)A.输出精度B.输出宽度 C.对齐方式D.填充字符解析:解析 setw 函数是用来设置输出宽度的,setprecision 函数是设置输出精度的,setfill 是设置字符填充的。设置对齐方式用 left、right、internal 设置。17.下列字符串中,不可以用作 C+标识符的是_。(分数:2.50)A.y_2006B._TEST_HC.ReturnD.switch 解析:解析 在

    31、C+中,标识符只能使用字母、数字、下画线,其中数字不能是首字符,关键字也不能为标识符,标识符是区别大小写的,故答案 D 是正确的。18.字面常量 42、4.2、42L 的数据类型分别是_。(分数:2.50)A.long、double、intB.long、float、intC.int、double、long D.int、float、long解析:解析 C+中默认整数常量为 int 型,默认小数常量为 double 型,也可在整型常量后加 u 或 l(大小写均可),强制其数据类型为 unsigned 和 long 型。19.执行下列语句段后,输出字符“*”的个数是_。 for(int i=50;

    32、i1; -i)cout“*“;(分数:2.50)A.48B.49 C.50D.51解析:解析 for 循环语句只要满足表达式二的值,就执行循环体,i 的初值是 50,执行一次循环体就输出一个*,当 i=1 时跳出循环也就是最好一次输出*的 i 值是 2,一共 49 个*。20.有如下程序段: int i=0, j=1; int / r=j;/ int *p=/ *p=/ 基中会产生编译错误的语句是_。(分数:2.50)A. B.C.D.解析:解析 D 项定义了一个引用指向 i,C 项通过引用将 i 的值赋为 j,B 项将 i 的地址赋值给整型指针 p,A 项是错误的,因为引用的赋值并不是把变量

    33、的值传递给引用,而是把引用指向变量。21.有如下函数定义: void func(int a, int b+; 若执行代码段: int x=0, y=1 func(x, y); 则变量 x 和 y 值分别是_。(分数:2.50)A.0 和 1B.1 和 1C.0 和 2 D.1 和 2解析:解析 fun 函数的第一个参数是值传递,不会改变实参的值,第二个参数是地址传递将实参的值由自加为 2,故选 C。22.有如下程序: #includeiostream using namespace std; class A public stakic int a; void init()a=1; A(int

    34、a=2) init(); a+; ; int A:; a=0 A obj; int main() coutobj.a; return 0; 运行时输出的结果是_。(分数:2.50)A.0B.1 C.2D.3解析:解析 创建全局对象 obj 时调用构造函数 A(int a=2),根据静态数据成员和局部变量的作用范围可知,执行 init()函数时,用的是静态数据成员,赋值为 1;a+时用的是局部变量,即构造函数的参数,此时 a 自加后变为 3,但是这个 a 是局部变量,不能在主函数中输出,故输出的 a 值是静态数据成员。23.下列有关继承和派生的叙述中,正确的是_。(分数:2.50)A.派生类不能

    35、访问基类的保护成员B.作为虚基类的类不能被实例化 C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现解析:解析 派生类不能访问基类的私有成员,保护成员是可以访问的。当基类中有无参构造函数或者没有构造函数时(编译器会生成默认构造函数),派生类可以不向基类的构造函数传递参数。虚函数可以不在派生类中重定义。24.下列运算符中,不能被重载的是_。(分数:2.50)A. B.templateclassT abs(T x)return x0?-x;x;C.template Tclass Tabs(T x)return x0?-x;x;D.template T abs(T x)retur

    36、n x0?-x;x;解析:解析 函数模板的定义格式是:templatetypename T函数声明;程序中 typcname 是可以用 class 替换的,在模板形参表中常规类型也可以声明模板参数类型。26.在语句 cindata;中,cin 是_。(分数:2.50)A.C+的关键字B.类名C.对象名 D.函数名解析:解析 cin 是输入流类的一个对象。27.有如下程序: #include using namespace std; class test private: int a; public: test()cout“constructor“ENDL; test(int a)coutaen

    37、dl; test(const test cout“Copy constructor“endl; test()cout“destructor“endl; ; int main() test A(3) return 0; 运行时输出的结果是_。(分数:2.50)A.3B.constructordestruclorC.copy constructordestructorD.3destruclor 解析:解析 定义对象 A 时,调用含参构造函数,输出 3,并换行。程序结束时调用析构函数输出destructor。28.若有如下类声明: class My Class public: MyClass() c

    38、out1; ; 执行下列语句: MyClass a, b2, *p2; 以后,程序的输出结果是_。(分数:2.50)A.11B.111 C.1111D.11111解析:解析 创建对象 a 时,涮用构造函数输出 1,创建对象数组 b 时,两次调用构造函数输出 11,故答案为 B。29.有如下程序: #includeiostream using namespace std; class Point public: static int number; public: Point()number+; Point()number-; ; imt Point:number=0; void main()

    39、Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; 运行时输出的结果是_。(分数:2.50)A.3B.4C.6 D.7解析:解析 静态数据成员 number=0,创建对象 A、B 时,调用两次构造函数,创建指针对象时,不调用构造函数,用指针动态创建对象数组时三次调用构造函数,创建对象 C 时,再调用构造函数,一共调用了 6 次构造函数,每调用一次构造函数加 1,最后 number 的值为 6,然后输出。30.如果不使用多态机制,

    40、那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #includeiostream using namespace std; class Base int a, b; public: Base(int x, int y) a=x; b=y; void show()couta“, “bendl; class Derived:public Base int c, d; public: Derived(int x, int y, int z, int m):Base(x, y)c=z; d=m; void show()coutc“, “dendl

    41、; ; int main() Base B1(50, 50), *pb; Derived D1(10, 20, 30, 40); pb= pb-show(); return 0; 运行时输出的结果是_。(分数:2.50)A.10, 20 B.30, 40C.20, 30D.50, 50解析:解析 创建基类对象 B1 时,调用构造函数 B1.a=50,B1.b=50。创建指针对象时不调用构造函数。创建派生类对象时调用基类构造函数 B1.a=10,B1.b=20,同时调用派生类构造函数 c=30,d=40。基类的指针指向派生类对象,由于没有使用多态机制,所以基类指针只能访问基类继承成员,故输出显示

    42、时,调研那个的是基类的 show 函数。31.有如下程序: #includeiostream using namespace std; class A public; A(int i)x=i; void dispa()coutx=“, “; private: int x; ; class B:public A public; B(int i):A(i+10) x=i; voud dispb() dispa():coutxendl; private: int x; ; int main() B b(2); b.dispb() return 0; 运行时输出的结果是_。(分数:2.50)A.10,

    43、 2B.12, 10C.12, 2 D.2, 2解析:解析 创建对象 b 时,先调用基类构造函数 A,使得 A 的私有成员 i=i+10=12,再调用 B 的构造函数使得 B 的私有成员 i=2,执行 b.dispb()时,先调用 dispa 函数输出 A 的私有成员 i,再输出 B 的私有成员 i。32.虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序: #include using namespace std; class Base public: virtual void f

    44、()cout“f0+“; void g() cout“g0+“; ; class Derived:public Base public: void f() cout“f+“; void g() cout“g+“; ; int main() Derived d; Base *p= p-f(); p-g(); return 0; 运行时输出的结果是_。(分数:2.50)A.f+g+B.f0+g+C.f+g0+ D.f0+g0+解析:解析 根据题意可知基类指针 p 指向派生类对象,调用虚函数时调用的的是指针所指的实际对象的虚函数(即派生类中重定义的虚函数),故输出“f+”,但通过基类指针调用实函数时

    45、,调用的是基类的函数而非派生类,输出“g0+“。33.下面程序中对一维坐标点类 Point 进行运算符重载: #includeiostream using namespace std; class Point public: Point(int val) x=val; Point return*this; Point operator+(int) Point old=*this, +(*this); return old; int GetX() constreturn x; private: int x; ; int main() Point a(10); cout(+a).GetX(); c

    46、outa+.GETX(); return 0; 编译和运行情况是_。(分数:2.50)A.运行时输出 1011B.运行时输出 1111 C.运行时输出 1112D.编译有错解析:解析 Point int main() char str100, *p; cout“please input a string:“; cinsir; p=str; for(int i=0; *p!=“/0“; p+, i+); coutiendl; return 0; 运行这个程序时,若输入字符串为 abcdefg abcd 则输出结果是_。(分数:2.50)A.7 B.12C.13D.100解析:解析 cin输入字符串时,空格被认为是结束标志。35.有如下程序: #includeiostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long a)x=a; Private: long x; ; lon


    注意事项

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




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

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

    收起
    展开