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

    【计算机类职业资格】国家二级C++机试(运算符重载)模拟试卷5及答案解析.doc

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

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

    【计算机类职业资格】国家二级C++机试(运算符重载)模拟试卷5及答案解析.doc

    1、国家二级 C+机试(运算符重载)模拟试卷 5及答案解析(总分:42.00,做题时间:90 分钟)一、选择题(总题数:21,分数:42.00)1.运算符重载是对已有的运算符赋予多重含义,因此( )。(分数:2.00)A.可以对基本类型(如 int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符D.C+中已经有的所有运算符都可以重载2.关于运算符重载,下列表述中正确的是( )。(分数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声

    2、明返回类型D.可以通过运算符重载来创建 C+中原来没有的运算符3.通过运算符重载,可以改变运算符原有的( )。(分数:2.00)A.操作数类型B.操作数个数C.优先级D.结合性4.下列运算符中,不能被重载的是( )。(分数:2.00)A.,下列关于这个函数的叙述中,错误的是( )。(分数:2.00)A.这是运算符的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值15.在表达式 x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是( )。(分数:2.00)A.。perator+有两个参数,

    3、operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数D.operator+有一个参数,operator*有一个参数16.有如下程序: #inc1udeiostream using namespace std; c1ass Comp1ex double re,im; public: Comp1ex(double r,double i):re(r), im(i) double real()constreturn re, double image()constreturn im; Comp1ex im

    4、+=aim; return *this; ;ostream cout(x+=y)end1; retum 0; 执行这个程序的输出结果是( )。(分数:2.00)A.(1,2)B.(2,3)C.(3,5)D.(3,1)17.有如下的运算符重载函数定义: double operator +(int i,int k) return double(i+k); 但定义有错误,对这个错误最准确的描述是( )。(分数:2.00)A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的B.两个 int型参数的和也应该是 int型,而这里将+的返回类型声明为 doubleC.没有将运算符重载函数声明为某个类

    5、的友元D.C+已经提供了求两个 int型数据之和的运算符+,不能再定义同样的运算符18.下面程序中对一维坐标点类 Point进行运算符重载 #inc1udeiostream using namespace std; c1ass Point public: Point(int val)x=val,) Pointreturn *this; Point operator+(int)Point old=*this; H(*this);return old;) Int GetX()const return x, private: int X; ); int main() Point a(10); cou

    6、nt(+a)GetX(); couta+GetX(); retum0; 编译和运行情况是( )。(分数:2.00)A.运行时输出 1011B.运行时输出 1111C.运行时输出 1112D.编译有错19.下列运算符函数中肯定不属于类 FunNumber的成员函数的是( )。(分数:2.00)A.int operator(FunNumber);B.FunNumber operator0;C.FunNumberoperator(int),D.int operator(FunNumber; FunNumber);20.下列是重载乘法运算符的函数原型声明,其中错误的是( )。(分数:2.00)A.My

    7、Class operator*(double,double);B.MyClass operator*(double,MyClass);C.MyClassoperator*(MyClass,double);D.MyClass operator*(MyClass,MyClass);21.己知 Value是一个类,Value 是 Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( )。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v=value, int i);C.Value operat

    8、or+(Value vint i=0);D.Value operator+(Value v=value,int i=0),国家二级 C+机试(运算符重载)模拟试卷 5答案解析(总分:42.00,做题时间:90 分钟)一、选择题(总题数:21,分数:42.00)1.运算符重载是对已有的运算符赋予多重含义,因此( )。(分数:2.00)A.可以对基本类型(如 int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载 C+中已经有的运算符,不能定义新运算符 D.C+中已经有的所有运算符都可以重载解析:解析:此题考查的是运算符重载。运算符重载是针对 C+

    9、语言原有的运算符进行的,并不能创造新的运算符。2.关于运算符重载,下列表述中正确的是( )。(分数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型 D.可以通过运算符重载来创建 C+中原来没有的运算符解析:解析:此题考查的是运算符重载的概念。C+语言规定,“,”、“*”、“”、“”和“?:”这五个运算符不能被重载,故选项 A错误;运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项 B说法是错误的;运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项 D错误。3.通过运算符重

    10、载,可以改变运算符原有的( )。(分数:2.00)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析:此题考查的是运算符重载。运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。故本题选项 A正确。4.下列运算符中,不能被重载的是( )。(分数:2.00)A.,下列关于这个函数的叙述中,错误的是( )。(分数:2.00)A.这是运算符的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析:此题考查的是运算符的重载。运算符“”有一元和二元两种,在本题中它作为一个二元运算符,所以它不能更新对象

    11、的数据成员,也不能调用该类中没有 const修饰的成员函数。15.在表达式 x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是( )。(分数:2.00)A.。perator+有两个参数,operator*有两个参数B.operator+有两个参数,operator*有一个参数C.operator+有一个参数,operator*有两个参数 D.operator+有一个参数,operator*有一个参数解析:解析:此题考查的是运算符的重载。运算符可重载成员函数,也可重载为友元函数。当重载为成员函数时,运算符重载函数的形参个数要比运算符操作数的个数少一个:

    12、当重载为友元函数时,其参数个数应与操作数的个数相同。16.有如下程序: #inc1udeiostream using namespace std; c1ass Comp1ex double re,im; public: Comp1ex(double r,double i):re(r), im(i) double real()constreturn re, double image()constreturn im; Comp1ex im+=aim; return *this; ;ostream cout(x+=y)end1; retum 0; 执行这个程序的输出结果是( )。(分数:2.00)A

    13、.(1,2)B.(2,3)C.(3,5)D.(3,1) 解析:解析:此题考查了运算符重载应用。因为 x和 y都是 Comp1ex类的对象,Comp1ex 类中已经重载了+=运算符,表达式 x+=y就等价与 xoperator+=(y),执行后得到(3,1);按着计算 cout(x+=y),其等价子调用 operator(cout,(x+=y),最后输出结果是(3,1)。17.有如下的运算符重载函数定义: double operator +(int i,int k) return double(i+k); 但定义有错误,对这个错误最准确的描述是( )。(分数:2.00)A.+只能作为成员函数重载

    14、,而这里的+是作为非成员函数重载的B.两个 int型参数的和也应该是 int型,而这里将+的返回类型声明为 doubleC.没有将运算符重载函数声明为某个类的友元D.C+已经提供了求两个 int型数据之和的运算符+,不能再定义同样的运算符 解析:解析:此题考查的是运算符的重载。C+语言规定,不能作为非成员函数重载的运算符有=、()、以及所有的类型转换运算符,故选项 A错误:运算符重载对返回值类型没有限制,故选项 B错误;C+并不强制要求非成员重载的运算符一定是某个类的友元,所以 C选项错误:题目中重载的“+”运算符的两个参数都是 int类型,而 C+已经提供了求两个 int型数据之和的运算符+

    15、,编译器无法区分应该调用哪一个,所以应该选择 D选项。18.下面程序中对一维坐标点类 Point进行运算符重载 #inc1udeiostream using namespace std; c1ass Point public: Point(int val)x=val,) Pointreturn *this; Point operator+(int)Point old=*this; H(*this);return old;) Int GetX()const return x, private: int X; ); int main() Point a(10); count(+a)GetX();

    16、couta+GetX(); retum0; 编译和运行情况是( )。(分数:2.00)A.运行时输出 1011B.运行时输出 1111 C.运行时输出 1112D.编译有错解析:解析:此题考查的是重载增 l运算符“+”。此题中,Point第 2条输出语句,首先创建了一个 Point对象 old保存自身,然后通过语句+(*this);调用前缀+的重载函数,因为返回值是改变前保存的 old对象,故仍输出 11。19.下列运算符函数中肯定不属于类 FunNumber的成员函数的是( )。(分数:2.00)A.int operator(FunNumber);B.FunNumber operator0;

    17、C.FunNumberoperator(int),D.int operator(FunNumber; FunNumber); 解析:解析:此题考查的是运算符“”的重载。“”运算符有一元和二元两种,且均可以重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元数减 1:重载为非成员函数时,形参个数一般和运算符元数相等。所以,“”运算符重载为成员函数时,参数可以是 0个或 1个:而重载为非成员函数时,参数个数可以是 1个或 2个。所以 D选项,肯定是重载为非成员函数。20.下列是重载乘法运算符的函数原型声明,其中错误的是( )。(分数:2.00)A.MyClass operat

    18、or*(double,double); B.MyClass operator*(double,MyClass);C.MyClassoperator*(MyClass,double);D.MyClass operator*(MyClass,MyClass);解析:解析:此题考查的是运算符重载。本题中,选项 A重载运算符“*”使用的形参是两个 double,而系统中的“*”运算原本就能计算两个 double,所以这样违反了重载函数的原则,当执行 a*b这样的表达式时,系统不能识别是否执行运算符重载函数。故答案是 A选项。21.己知 Value是一个类,Value 是 Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( )。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v=value, int i); C.Value operator+(Value vint i=0);D.Value operator+(Value v=value,int i=0),解析:解析:此题考查的是重载加法运算符“+”。“+”是二元运算符,其第一操作数是对象本身,i 为第二操作数,由此可知选项 B正确。


    注意事项

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




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

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

    收起
    展开