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

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

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

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

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

    1、二级 C+笔试 73 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.不能作为函数重载的判断依据的是(分数:2.00)A.constB.返回类型C.参数个数D.参数类型2.设 a 和 b 均为 double 型变量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是(分数:2.00)A.6.500000B.6C.5.500000D.6.0000003.下列叙述中正确的是(分数:2.00)A.用 E-R 图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R

    2、 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型4.有如下类的定义。空格处的语句是 class MyClass _int x,y; public: MyClass(int a=0,int b=0) x=a; y=b; staticvoidchange() x-=10; y-=10; ;(分数:2.00)A.staticB.constC.privateD.不需要填入内容5.下列关于类中成员函数特征的描述中错误的是(分数:2.00)A.类的成员函数一定是内联函数B.类的成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的6.关系表中的

    3、每一横行称为一个(分数:2.00)A.元组B.字段C.属性D.码7.以下函数实现的功能是 void fun(char*s) char*p,*q,temp; p=s; q=s+strlen(s)-1; while(pq) temp=*p; *p=*q; *p=temp; p+; q-; (分数:2.00)A.将一个字符串首尾颠倒B.计算字符串的长度C.统计字符串中的空格个数D.将字符串中的小写字母变成大写字母8.设有以下定义和程序: #includeiostream.h classA1 public: void show1() cout“classA1”end1; ; classA2:publi

    4、c A1 public: void show2() cout“classA2“end1; ; class A3:protected A2 public: voidshow3() cout“class A1”end1; ; void main() A1obj1; A2obj2; A3obj3; 则以下不合语法的调用语句是(分数:2.00)A.obj1show1();B.obj2show1();C.obj3show1();D.obj2show2();9.有以下程序 #includeiostream using namespace std; class Base private: char c; p

    5、ublic: Base(char n):c(n) Base() coutc; ; class Derived:public Base private: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main() Derived obj(x); return 0; 执行后的输出结果是(分数:2.00)A.xyB.yxC.xD.y10.有以下程序: #includeiostream #includemath using namespace std; class point private: double x

    6、; double y; public: point(double a,double B) x=a; y=b; friend double distance (point a,point B) ; ; double distance (point a,point B) return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); int main() point p1(1,2); point p2(5,2); coutdistance(p1,p2)end1; return 0; 程序运行后的输出结果是(分数:2.00)A.1B.5C.4D.611.以下程

    7、序的输出结果是 #includeiostream using nameSpace std; int main() cout.fill(*); coutwidth(5); couthex100end1; return 0; (分数:2.00)A.*100B.*64C.100*D.64*12.有如下程序 #includeiostream using nameSpace std; class base public: vinual void f1() cout“F1 Base“; virtual void f2() cout“F2Base“; ; class derive:public base v

    8、oid f1() cout“F1Derive“; void f2(int x) cout“F2Derive“; ; int main() base obj1,*p; derive obj2; p=C.obj3show1(); D.obj2show2();解析:解析 本题考核派生类的使用以及访问权限问题。C+中,通过类的对象只能访问类的公有成员,不能访问类的保护成员和私有成员。A2 是 A1 的公有派生类,A3 是 A2 的保护派生类,所以类 A1 的成员函数 show1()在类 A3 中呈现保护属性,不能通过 A3 类的对象访问。9.有以下程序 #includeiostream using n

    9、amespace std; class Base private: char c; public: Base(char n):c(n) Base() coutc; ; class Derived:public Base private: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main() Derived obj(x); return 0; 执行后的输出结果是(分数:2.00)A.xy B.yxC.xD.y解析:解析 本题考核继承与派生中继承基类的数据成员与成员函数。在 C+中,由于析构函数不能被

    10、继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数 main结束时,派生类 Derived 对象 obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。10.有以下程序: #includeiostream #includemath using namespace std; class point private: double x; double y; public: point(double a,doubl

    11、e B) x=a; y=b; friend double distance (point a,point B) ; ; double distance (point a,point B) return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); int main() point p1(1,2); point p2(5,2); coutdistance(p1,p2)end1; return 0; 程序运行后的输出结果是(分数:2.00)A.1B.5C.4 D.6解析:解析 本题考核友元函数的应用。分析程序:类 point 中定义了两个私有成员 x 和

    12、 y,以及一个友元函数 distance。从而,函数 distance 可以访问类 point 中的任何成员。在函数 distance 中,返回值为 sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)。由此可知,函数 distance 的功能是计算 a、b两点之间的距离。在主函数 main 中,先定义两点: p1(1,2)和 p2(5,2)。然后调用函数 distance 计算两点之间的距离为 4,所以程序最后输出为 4。11.以下程序的输出结果是 #includeiostream using nameSpace std; int main() cout.f

    13、ill(*); coutwidth(5); couthex100end1; return 0; (分数:2.00)A.*100B.*64 C.100*D.64*解析:解析 本题考核格式控制数据的输入输出。语句“cout.fill(*);”是将填充字符设置成*,在输出数据时,如果数据宽度小于设置的宽度,则空闲位置要用*填满,语句“cout.width(5);”是将数据的输出宽度设置成 5,关键字 hex 的作用是将整数按十六进制输出,即输出 64,又由于初始状态为右对齐,所以程序最终输出*64。12.有如下程序 #includeiostream using nameSpace std; clas

    14、s base public: vinual void f1() cout“F1 Base“; virtual void f2() cout“F2Base“; ; class derive:public base void f1() cout“F1Derive“; void f2(int x) cout“F2Derive“; ; int main() base obj1,*p; derive obj2; p=元素 b 出栈后,元素 c,d 进栈,栈中有 3 个元素,分别为 a,c,d:元素 d,c 出栈后,元素 e,f 进栈,栈中有 3 个元素,分别为 a,e, f;最后,元素 f,e,a 出栈

    15、,栈为空。 可以看出,进栈的顺序为 a,b,c,d,e,f,出栈的顺序为 b,d,c,f,e,a,满足题目要求。每次进栈操作后,栈中最多有 3 个元素,所以,为了顺利完成这些操作,栈的容量应至少为 3。本题的正确答案为 A。14.有以下程序 #includeiostream using namespace std; int a; int fun(); int main() extern int a; int b; a=100; b=fun(); coutbend1; return 0; int fun() extern int a; return(10*A) ; 其程序运行后的输出结果是(分数

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

    17、序中,在第二行定义了一个外部变量 a,主函数 main 给外部变量赋的初始值为 100,当调用函数 fun()时,外部变量 a 的值传到函数 fun()中,因此函数所返回的值为 100*10=1000。15.在结构化方法中,软件功能分解属于下列软件开发中的阶段是(分数:2.00)A.概要设计 B.需求分析C.详细设计D.编程调试解析:解析 概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结构(如确定模块及模块间的关系)。设计过程通常分为以下几步:提出可选择方案;选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划:最后提交概要设计文档。软件功能分解属于概要设计阶段。本题的

    18、正确答案为 A。16.在进行了任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是(分数:2.00)A.fail B.eofC.badD.good解析:解析 C+中可以用文件流对象的下列成员函数来判别文件流的当前状态。函数 is open()判定流对象是否与一个打开的文件相联系,若是,返回 true,否则返回 false;函数 good()刚进行的操作成功时返回 true,否则返回 false:函数 fail()与 good()相反,刚进行的操作失败时返回 true,否则返回false:函数 bad()如果进行了非法操作返回 true,

    19、否则返回 false;函数 eof()进行输入操作时,若到达文件尾返回 true,否则返回 false。其中,eof 函数只能用于输入流操作。17.关于在调用模板函数时实参的使用,下列表述中正确的是(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析 模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。在调用一个模

    20、板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用和括起来的参数表)或从模板函数实参表(用()括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略:或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。由此可

    21、知只有 D) 选项的说法是正确的。18.若有以下程序: #includeiostream using namespace std; class Base public: Base() x=O; int x; ; Class Derived1:virtual public Base public: Derived1() x=10; ; class Derived2:Virtual public Base public: Derived2() x=20; ; class Derived:public Derived1,protected DeriVed2 ; int main() Derived

    22、obj; coutObj.xend1; return 0; 该程序运行后的输出结果是(分数:2.00)A.10B.20 C.30D.0解析:解析 本题考核虚基类。本题中,虽然 Derived1 和 Derived2 都是由共同的基类 x 派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员 x 只存在一份拷贝,不论在类Derived1 修改,还是在类 Derived2 中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derived obj”时,就会先调用虚基类 Base 的构造函数,使得 x=0,然后执行类 Derived1 的构造函数使得 x=10,再执行类

    23、Derived2 的构造函数,使得 x=20。最后输出 x 的值为 20。19.下列关于 this 指针的叙述中,正确的是(分数:2.00)A.this 指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this 时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this 指针D.this 指针表示了成员函数当前操作的数据所属的对象 解析:解析 本题考核 this。类的每一个成员函数都有一个隐含定义的常量指针,称为 this 指针。它是成员函数所属对象的指针,它指向类对象的地址。成员函数可以通过这个指针知道自己属于哪一个对象。当对一个对象调用成员函数时,编译程序先将对象的地

    24、址赋值给 this 指针,然后调用成员函数,每次成员函数存取数据时,则隐含使用 this 指针。但是在使用 this 指针时需要注意的是:this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象。this 指针一般用于返回当前对象自身;静态成员函数没有 this 指针。因为类只有一个静态成员函数实例,所以使用 this 指针没有什么意义。在静态成员函数中使用 this 指针会引起编译错误。20.下列叙述中正确的是(分数:2.00)A.程序设计过程中的主要工作是编制程序B.程序设计的主要目标是编制出运行结果正确的程序C.不良的程序设计风格会增加程序的复杂性 D.上述三种说法都不对解析

    25、:解析 程序设计过程中包括很多步骤,编制程序只是其中的一步。所以,选项 A 错误。 程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程序是不够的,还应养成良好的程序设计风格。所以,选项 B 错误。 程序设计的根本目标是要降低程序的复杂性和提高程序的可读性。而程序的复杂性主要来自以下两个方面:问题固有的复杂性;不良的设计风格人为增加了程序的复杂性。所以,良好的设计风格对于降低程序的复杂性是很重要的,并且,好的设计风格是好的程序风格的基本保证。选项 C 正确。21.有如下程序: #includeiostream using namespace std; class Base priva

    26、te: char c; piblic: Base(char n):c(n) Base() coutC; ; class DeriVed:public Base private: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ;int main() Derived obj(x); return 0; 执行上面的程序将输出(分数:2.00)A.xy B.yxC.xD.y解析:解析 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的

    27、析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数 main 结束时,派生类 Derived 对象。obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。22.设有以下语句,对 a 数组元素的引用中(其中 0=i10)不正确的是 int a10=0,1,2,3,4,5,6,7,8,9,*p=a;(分数:2.00)A.ap-aB.*(&C.pD.*(*(a+) 解析:解析 本题考核数组与指针。A 选项中,p 为指针,数组名 a 代表数组的首地址,所以 p-a 就是指针到数组首地址的偏移量。B 选项中,&ai是取数组

    28、a 中第 i 个元素的地址,而对于*(&ai,由指针运算符*的运算规则可知,语句*(&ai就是返回地 址&ai空间中存放的值,也即 ai。C) 选项,由于指针 p 已指向数组 a,所以 pi就等于 ai。这是常用的一种数组元素引用方式。D) 选项是以指针方式对数组元素进行引用,由于 a 只是代表数组的首地址,并不是指针,所以表达式*(*(a+i)是错误的,正确的引用应该为:*(*(p+i)。23.带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化(分数:2.00)A.与虚基类下面的派生类个数有关B.多次C.二次D.一次 解析:解析 本题考核虚

    29、基类以及构造函数。使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类对象。虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化(最派生类的构造函数的成员初始化列表中必须列出对虚基类构造函数的调用,否则,表示使用该虚基类的缺省构造函数)。由于最派生类总是相对,因此,从虚基类直接或间接派生的派生类中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但只有用于建立对象的最派生类的构造函数才调用虚基类的构造函数,此时最派生类的所有基类中列出的对虚基类的构造函数的调用在执行过程中都被忽略,从而保证对虚基类子对象只初始化一次。24.for(int x=0,y=0;!x&y=

    30、5;y+)语句执行循环的次数是(分数:2.00)A.0B.5C.6 D.无数次解析:解析 本题考核 for 循环语句。题中 x=0,则!x 永远为真,对于条件表达式“!x&y=5”只考虑“y=5”,由于每次循环 y 都增加 1,而且 y 从 0 开始到 5。所以可知总共循环了 6 次。25.数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是(分数:2.00)A.线性链表B.二叉链表C.栈与队列 D.循环队列解析:解析 线性链表是线性表的链式存储结构:二叉链表是二叉树的链式存储结构:栈与队列分别是特殊的线性表:循环队列是队列的一种顺序存储结构。可知,线性链表、二叉链表、循环队列均属

    31、于存储结构,而栈与队列属于逻辑结构。选项 C 为正确答案。26.下列有关拷贝构造函数的描述中错误的是(分数:2.00)A.拷贝构造函数是一种构造函数B.拷贝构造函数与一般的构造函数一样,可以设置多个形参 C.每一个类中都必须有一个拷贝构造函数D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象。解析:解析 本题考核拷贝构造函数的概念。拷贝初始化构造函数实际上也是构造函数,它是在初始化时被调用,将一个已知对象的数据成员的值拷贝给正在创建的另一个同类的对象。拷贝构造函数具有的特点是:拷贝构造函数也是一种构造函数,因此函数名与类相同,并且不能指定函数返回类型;只有一个参数,是对同类的某个

    32、对象的引用; 每一个类中都必须有一个拷贝构造函数。如果类中没有声明拷贝构造函数,编译器会自动生成一个具有上述形式的公有的拷贝构造函数。27.设有语句:char str1=“string“,str28,*str3,*str4=“string“;,则下列对库函数 strcpy 调用不正确的是(分数:2.00)A.strcpy(str1,“Hello1“);B.strcpy(str2,“Hello2“);C.strcpy(str3,“Hello3“); D.strcpy(str4,“Hell04“);解析:解析 本题考核函数调用。函数 strcpy 的函数原型为:char*strcpy (char*

    33、strDest,const char*trSrC) ;,其功能是复制 strSrc 所有字符到 strDest,并返回 strDest。根据函数 strcpy 的原型可知选项 A) 、B) 和 D) 的调用都是正确的。在 C) 选项中,由于指针*str3 没有初始化其字符长度,容易引起访问越界,故是不正确的。28.在模块化程序设计中,按功能划分模块的原则是(分数:2.00)A.各模块的功能尽量单一,且各模块之间的联系尽量的少 B.各模块的功能尽量单一,且各模块之间的联系尽量紧密C.各模块应包括尽量多的功能D.各模块应包括尽量多的输入输出操作解析:解析 模块化设计是指把一个大程序按人们能理解的大

    34、小规模进行分解。划分模块的基本原则是使每个模块都易于理解。按照人类思维的特点,按功能来划分模块最为自然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的联系尽量少。所以,选项 A 正确:选项 B 错误;选项 C 错误。本题的正确答案为 A。29.有如下数组声明:int value30;,下标值引用错误的是(分数:2.00)A.value30 B.value0C.value10D.value20解析:解析 本题考核对数组的引用。在 C+语言中,数组的下标是从 0 开始的,最大的下标值比所定义的数组长度的值小 1。同时需要注意的是,C+语言中,编译和执行时并不检查数组下标是否越界。因此

    35、value30在编译阶段是正确的,但是在运行时会出现错误。30.算法的时间复杂度是指(分数:2.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数 解析:解析 算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。选项 A 错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项 B 错误。算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不

    36、同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。 选项 C 错误,因为根据一个算法所编制出的程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题的正确答案为 D。31.如果算符函数调用格式的表达式:x.operator-(operator+(y,0)中的“-”是作为成员函数重载的,“+”是作为友元函数重载的,那么该表达式还可以表示为:()(分数:2.00)A.x-y+ B.x-(+C.(x+)-yD.+x-y解析:解析 本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符 +,且 c1、c2都是

    37、该类的对象,则 c1.operator+(c2)与 c1+c2 含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与 c1+c2 含义相同。同时一元运算符“+”重载函数调用中采用了虚拟参数,说明+为后缀的,所以其等价的表达式为“x-y+”。32.面向对象程序设计将数据和( )放在一起,作为一个相互依存、不可分割的整体来处理。(分数:2.00)A.对数据的操作 B.信息C.数据隐藏D.数据抽象解析:解析 面向对象语言包含 3 个要素,即对象、类和继承。这 3 个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。33.下列叙述中

    38、正确的是(分数:2.00)A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单以及运行结果D.软件包括程序、数据和文档 解析:解析 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。用一个等式表示,则为: 软件=程序+文档+数据 选项 A、B、C 错误,正确答案是 D。34.有如下程序: #includeiostream using namespace std; class point int x,y; public: point(int vx,int vy) x=vx; y=vy; point() x=0; y=0; point op

    39、erator+(point p1) point p; int px=x+p1.x; int py=y+p1.y; return point(px,py); point operator-(point p1) point p; int px=x-p1.x; int py=y-p1.y; return point(px,py); void print() coutx“,“yend1; ; int main() point p1(10,10),p2(20,20); p1=p1+p2; p1.print(); retrun 0; 执行后的输出结果是(分数:2.00)A.10,10B.20,20C.10

    40、,20D.30,30 解析:解析 本题主要考查 C+中运算符重载的机制与实现。运算符重载函数一般分为成员函数形式和友元函数形式,这两种形式都可以访问类中的私有成员。本题中的运算符重载形式为成员函数形式。 程序在类 point 中声明了私有数据成员 int x 和 int y,并定义了两种形式的构造函数以完成对对象的初始化;之后,程序对运算符“+”进行了重载,另其输入参数为类 point 的对象,输出为操作符“+”右侧该对象的私有数据成员 x 和 y 与操作符“+”左侧同类型对象的私有数据成员 x 和 y 的加和:print()函数则输出对象中数据成员的值。程序 main()函数中,实例化了类

    41、point 的两个对象 p1 和 p2,并完成对对象的初始化。在语句“p1=p1+p2;”中,由于操作符“+”左右两端的操作数为 point 类的对象,复合类point 定义中的操作符“+”的重载函数,因此程序将调用重载后的操作符函数,并返回两 point 对象数据成员的加和值,覆盖对象 p1 的数据成员。因此 print()函数输出对象 p1 的数据成员值应该为:x=10+20=30,y=10+20=3035.在最坏情况下,下列排序方法中时间复杂度最小的是(分数:2.00)A.冒泡排序B.快速排序C.插入排序D.堆排序 解析:解析 在最坏情况下:冒泡排序需要的比较次数为 n(n-1)/2;快

    42、速排序需要的比较次数也为 n(n-1)/2:插入排序需要的比较次数也为 n(n-1)/2;堆排序需要比较的次数为 O(nlog2n)。可知,在最坏情况下,堆排序的时间复杂度最小,本题的正确答案为 D。二、B填空题/B(总题数:14,分数:28.00)36.在长度为 n 的线性表中查找一个表中不存在的元素,需要的比较次数为U 【1】 /U。(分数:2.00)填空项 1:_ (正确答案:n)解析:解析 在长度为 n 的线性表中查找一个表中不存在的元素,需要的比较次数为 n。37.在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为U 【2】 /U。(分数:2.00)填空项 1:

    43、_ (正确答案:消息)解析:解析 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。38.源程序文档化要求程序应加注释。注释一般分为序言性注释和U 【3】 /U(分数:2.00)填空项 1:_ (正确答案:功能性注释)解析:解析 注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明:功能性注释的位置一般嵌在源程序体之中,主要描述其后的语句或程序做什么。39.数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于U 【4】 /U。(分数:2.00)填空项 1:_ (正确答案:格式化模型)解

    44、析:解析 层次模型与网状模型属于格式化模型。40.在关系运算中,U 【5】 /U运算是在给定关系的某些域上进行的运算。(分数:2.00)填空项 1:_ (正确答案:投影)解析:解析 在关系运算中,投影运算是在给定关系的某些域上进行的运算。41.若 a=12,b=14,c=0,则表达式“(y=(aB) ?a:B) C) ?y:c”的值为U 【6】 /U。(分数:2.00)填空项 1:_ (正确答案:14)解析:解析 本题考核运算符的应用。条件运算符是一种在两个表达式中选择一个的操作,它是 C+中惟一的三元运算符。在本题中,先计算(aB) ?a:b,因为 ab,所以条件表达式的值为 0,因此y=b

    45、=14,而 yc 的逻辑值为真,所以表达式的值为 y 的值,即 14。42.下面程序的输出结果为U 【7】 /U。 #includeiostream using namespace std; void initialize (int print No,int state=0); void initialize(int printNo=1,int state); int main() initialize(); retum 0; void initialize (int printNo,int state) coutprintNo“,“stateend1; (分数:2.00)填空项 1:_ (正

    46、确答案:1,0)解析:解析 本题考核带有缺省值的函数,本题中函数 initialize()进行了两次函数原型的说明,使本来不带默认值的形参带上默认值。由于主函数中调用 initialize()时没有给定实参,所以函数自动调用其参数缺省值。输出 1 和 0。43.下列程序的输出结果是U 【8】 /U #includeiostream using namespace std; int &get Var(int*pint) return *pint; int main() int a=10; getvar(&A) =20; coutaend1; return 0; (分数:2.00)填空项 1:_

    47、(正确答案:20)解析:解析 本题考核引用的使用。题中函数 getVar 返回的为实参的引用,即将 a 的引用赋值为 20,所以最后输出 a 的值为 20。44.若有以下程序: #includeiostream using namespace std; class Base public: void who()cout“Base“end1; class Derived1:public Base public: void who()cout“Derived“end1; ; int main() Base *p; Derived1 obj1; p=&obj1; pwho();return 0; 则该程序运行后的输出结果是U 【9】 /U(分数:2.00


    注意事项

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




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

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

    收起
    展开