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

    【计算机类职业资格】国家二级(C++)机试-试卷9-1及答案解析.doc

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

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

    【计算机类职业资格】国家二级(C++)机试-试卷9-1及答案解析.doc

    1、国家二级(C+)机试-试卷 9-1 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.if 语句的语法格式可描述为: 格式 1:if() 或 格式 2:if() else 关于上面的语法格式,下列表述中错误的是( )。(分数:2.00)A.部分可以是一个 if 语句,例如 if(if(a=0)B.部分可以是一个 if 语句,例如 if()if()C.如果在前加上逻辑非运算符!并交换和的位置,语句功能不变D.部分可以是一个循环语句,例如 if()while()2.下列关于派生类构造函数和析构函数的说法中,错误的是( )。(分数:2.00)A.派生

    2、类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数3.有如下语句序列:char str10; cinstr;当从键盘输入“I love this game“时,str 中的字符串是( )。(分数:2.00)A.IlovethisgameB.IlovethiC.IloveD.I4.下列语句中,正确的是(分数:2.00)A.charstr=“abcde“;B.char*str=“abcde“;C.charstr5=“ab

    3、cde“;D.char*str5=“abcde“;5.有如下程序: #include using namespace std; class Base public: void fun() coutfun();C.Base:fun();D.fun();6.设循环队列的存储空间为 Q(1:35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 357.下列关于运算符重载的表述中,错误的是(分数:2.00)A.所有的运算符都可以通过重载而赋予其新的含义B.有的运算符只

    4、能作为成员函数重载C.不得为重载的运算符函数的参数设置默认值D.有的运算符可以作为非成员函数重载8.有如下类定义: class Bag public: Bag(); / void SetSize(string s); / string GetSize() const; / friend void Display(Bag / private: string size; ;在标注号码的 4 个函数中,不具有隐含 this 指针的是(分数:2.00)A.B.C.D.9.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的

    5、D.算法只能被有限的用户使用10.下列关于函数的叙述中,正确的是(分数:2.00)A.C+不允许函数嵌套定义B.C+中所有函数都有返回值C.函数的形参列表一定不能为空D.调用函数时一定会执行完函数体的最后一条语句11.有如下类定义: class Base1 int m; public: Base(int m1): m(m1) ; class Base2 int n; public: Base(int n1): n(n1) ; class Derived: public Base2,public Base1 int q; public: Derived(int m1, int n1, int q

    6、1): q(q1),Base1(m1),Base2(n1); ;在创建一个 Derived 对象时,数据成员 m、n 和 q 被初始化的顺序是(分数:2.00)A.m、n、qB.n、m、qC.q、m、nD.q、n、m12.某二叉树中有 15 个度为 1 的结点,16 个度为 2 的结点,则该二叉树中总的结点数为(分数:2.00)A.32B.46C.48D.4913.有如下类定义: class MyClass public: MyClass(double d=0.0):val(d) _ /运算符函数-的声明 private: double val; ;若要使语句序列 MyClass y(4.6)

    7、,z; z=6.7-y;能够正常运行,横线处的声明语句应为(分数:2.00)A.friendMyClassoperator-(MyClassB.friendMyClassoperator-(double,MyClass);C.friendMyClassoperator-(MyClassD.friendMyClassoperator-(double14.有如下类定义: class Pet char name30; public: Pet(char * n) strcpy(name, n); void bark() coutbark()D.(*p).bark()15. (分数:2.00)A.投影B

    8、.交C.选择D.并16.下列关于 this 指针的描述中,正确的是(分数:2.00)A.下列关于 this 指针的描述中,正确的是B.类的 const 成员函数都有 this 指针C.任何静态成员函数都有 this 指针D.类的非静态成员函数都有 this 指针17.某二叉树的前序序列为 ABCD,中序序列为 DCBA,则后序序列为(分数:2.00)A.BADCB.DCBAC.CDABD.ABCD18.有如下程序: #include using namespace std; void fun(int x=y/4; x+; int main() int x=4,y=5; fun(x,y); co

    9、utstr;当从键盘输入“I love this game“时,str 中的字符串是( )。(分数:2.00)A.IlovethisgameB.IlovethiC.IloveD.I 解析:解析:cin 是 C+预定义的标准输入流对象,cin 用来接收字符串时,遇“空格“、“TAB“、“回车“时都会结束。所以本题答案为 D。4.下列语句中,正确的是(分数:2.00)A.charstr=“abcde“;B.char*str=“abcde“; C.charstr5=“abcde“;D.char*str5=“abcde“;解析:解析:本题考查字符串的定义,A 选项中,定义了一个字符,而用字符串赋值,所

    10、以错误,C 选项定义了字符数组,但是赋值的字符串实际上有 6 个字符,所以赋值错误,D 选项定义了一个字符串指针数组,赋值错误。5.有如下程序: #include using namespace std; class Base public: void fun() coutfun();C.Base:fun(); D.fun();解析:解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,所以派生类可以直接使用基类的公用成员,题目中输出了 Base:fun,所以可以推断派生类一定是调用了基类的 fun 函数,只有 C 选项正确调用了基类的 fun 函数,所以 C 选项正确。6.设循环队列

    11、的存储空间为 Q(1:35),初始状态为 front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为(分数:2.00)A.15B.16C.20D.0 或 35 解析:解析:在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为 D 选项。7.下列关于运算符重载的表述

    12、中,错误的是(分数:2.00)A.所有的运算符都可以通过重载而赋予其新的含义 B.有的运算符只能作为成员函数重载C.不得为重载的运算符函数的参数设置默认值D.有的运算符可以作为非成员函数重载解析:解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以 A 选项错误。8.有如下类定义: class Bag public: Bag(); / void SetSize(string s); / string GetSize() const;

    13、/ friend void Display(Bag / private: string size; ;在标注号码的 4 个函数中,不具有隐含 this 指针的是(分数:2.00)A.B.C.D. 解析:解析:当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,所以正确使用 this 指针。9.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算

    14、法程序的运行时间是有限的。10.下列关于函数的叙述中,正确的是(分数:2.00)A.C+不允许函数嵌套定义 B.C+中所有函数都有返回值C.函数的形参列表一定不能为空D.调用函数时一定会执行完函数体的最后一条语句解析:解析:C+中函数可以不返回任何值,不返回任何值指定返回类型为 void 类型;函数形参表可以为空,但不能省略;函数调用过程中,可能会由于 return 语句或者异常终止执行,不一定会执行完最后一条语句;B、C、D 错误;函数不允许嵌套定义,答案为 A。11.有如下类定义: class Base1 int m; public: Base(int m1): m(m1) ; class

    15、 Base2 int n; public: Base(int n1): n(n1) ; class Derived: public Base2,public Base1 int q; public: Derived(int m1, int n1, int q1): q(q1),Base1(m1),Base2(n1); ;在创建一个 Derived 对象时,数据成员 m、n 和 q 被初始化的顺序是(分数:2.00)A.m、n、qB.n、m、q C.q、m、nD.q、n、m解析:解析:C+中,派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,所以Derived 构造函数的初始化列

    16、表中,最后初始化 q;另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;由于 Derived 类的派生列表中,Base2 在前,所以应该先调用 Base2 的构造函数;这样 Derived 类中初始化顺序为:基类 Base2、基类Base1、数据成员 q;所以数据成员 m、n、q 的初始化顺序为:n、m、q,答案为 B。12.某二叉树中有 15 个度为 1 的结点,16 个度为 2 的结点,则该二叉树中总的结点数为(分数:2.00)A.32B.46C.48 D.49解析:解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中

    17、最大的度称为树的度。对任何一棵二叉树,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。由 16 个度为 2 的结点可知叶子结点个数为 17,则结点结点总数为 16+17+15=48,C 选项正确。13.有如下类定义: class MyClass public: MyClass(double d=0.0):val(d) _ /运算符函数-的声明 private: double val; ;若要使语句序列 MyClass y(4.6),z; z=6.7-y;能够正常运行,横线处的声明语句应为(分数:2.00)A.friendMyClassoperator-(MyClassB.frien

    18、dMyClassoperator-(double,MyClass); C.friendMyClassoperator-(MyClassD.friendMyClassoperator-(double解析:解析:由调用函数 6.7-y 可知,double 类型在运算符“-“的左边,应该作为运算符函数“-“的第一形参,选项 A、C 错误;由于运算符“-“函数并不改变操作数的状态,所以形参应该声明为 const 对象的引用,或者按值传递,参数按引用类型传递可能会改变操作数的状态,选项 D 错误;答案为 B。14.有如下类定义: class Pet char name30; public: Pet(ch

    19、ar * n) strcpy(name, n); void bark() coutbark()D.(*p).bark()解析:解析:Pet 类指针 p 指向 my_dog 对象,通过指针访问类对象的成员函数,与通过指针访问内置类型对象一样,有两种方法:p-bark()、(*p).brak(),选项 A 错误,答案为 A。15. (分数:2.00)A.投影 B.交C.选择D.并解析:解析:用于查询的 3 个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系,题目中从 R 中指定 AB 组成

    20、新的关系 T,故 A 选项正确。选择,从关系中找出满足给定条件的元组的操作称为选择,即结果 T 应该包含 R 中全部属性,故 C 选项错误。假设,R 与 S 经过某种关系得到 T,则并:RS 是将 S 中的记录追加到 R 后面;交:RS 结果是既属于 R 又属于 S 的记录组成的集合。上述两种操作中,关系 R 与 S 以及 T 要求有相同的结构,故 B、D 选项错误。16.下列关于 this 指针的描述中,正确的是(分数:2.00)A.下列关于 this 指针的描述中,正确的是B.类的 const 成员函数都有 this 指针C.任何静态成员函数都有 this 指针D.类的非静态成员函数都有

    21、this 指针 解析:解析:C+中,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this指针,类的非 const 成员函数包括静态成员函数,所以选项 A、C 错误;答案选 B 或 D。17.某二叉树的前序序列为 ABCD,中序序列为 DCBA,则后序序列为(分数:2.00)A.BADCB.DCBA C.CDABD.ABCD解析:解析:二叉树遍历可以分为 3 种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序序列为 ABCD,中序序列为 DCBA,

    22、可知 D 为根结点,ABC 为左侧结点,C 为 D 左子结点,A 为 B 子结点,故后序序列为 DCBA,故 B 选项正确。18.有如下程序: #include using namespace std; void fun(int x=y/4; x+; int main() int x=4,y=5; fun(x,y); cout,所以 B 选项错误。25.下列定义语句中,错误的是(分数:2.00)A.int*p10;B.int*p();C.int(*p)();D.intp*; 解析:解析:本题考查一维数组和指针,A 选项为一维指针数组,B、C 选项为函数指针,D 选项定义指针方式不对,*号应该在

    23、 p 的左边。所以答案为 D。26.有如下类定义: class Cup public: _ /构造函数声明 private: double price; ;其中下划线处缺失的构造函数声明是(分数:2.00)A.voidCup(doubleprice);B.Cup(doublePrice); C.myCup(doubleprice);D.staticCup(doubleprice);解析:解析:本题考查构造函数的定义,构造函数名为类的名称,所以只有 B 选项正确。27.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是

    24、有限的D.算法只能被有限的用户使用解析:解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。28.下列运算符中,可以重载为类的友元函数的运算符是(分数:2.00)A.=B.()CD.“必须重载为成员函数,这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,上面四种操作符不能重载为类的友元函数,另外成员访问操作符“.“不能重载,答案为 D。29.有如下的类声明: #include using namespace std; class AA public: virtual void disp() coutprint();)

    25、解析:解析:(1)主要考查考生对构造函数的掌握情况,默认构造函数的参数值必须从右到左。 (2)主要考查考生对 const 函数的掌握情况,函数体中有语句:x += xOff;,成员变量值改变,因此函数不能使用const。 (3)主要考查考生对指针的掌握情况,由于 p 为指针类型,因此调用成员函数时要使用标识符-。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 pmj2 下的工程 proj2,其中定义了 Employee 类和Manager 类。Employee 用于表示某公司的雇员,其属性包括姓名(name)和工作部分(dept)。Manag

    26、er 是Employee 的公有派生类,用于表示雇员中的经理。除了姓名和工作部分之外,Manager 的属性还包括级别(level)。Employee 类的成员函数 print 用于输出雇员的信息;Manager 类的成员函数 print 负责输出经理的信息。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:Name:SallySmithDept:SMesLevel:2 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiosLream#includestringusingnamespacestcl

    27、;classEmployeepublic:Employee(stringFlame,stringdept):*found*virtualvoidprint()const;stringdept()const返回部门名称*found*virtualEmployee()private:stringname_;stringdept_;classManager:publicEmployeepublic:Nanager(stringname,stringdept,intlevel):*found* virtualvoidprint()const;private:intlevel;voidEmployee:

    28、print()constcout“Name:“name_end1;cout“Dept:“dept_end1;voidNanager:print()const*found*cout“Level:“levelend1;intmain()Employee*erap=newNanacjer(“SallySmith”,”Sales”,2);emp-print:();deleteemp;return0;(分数:2.00)_正确答案:(正确答案:(1)nanle_(naiTle),dept_(dept) (2)returndept_; (3)Employee(name,dept),level_(1evel)

    29、 (4)Employee:print();)解析:解析:(1)主要考查考生对构造函数的掌握,这里使用成员列表初始化法对私有成员初始化。 (2)主要考查考生对成员函数的掌握,题目要求返回部门名称,因此这里是一条返回语句。函数要求返回的类型为 string,因此直接返回 dept_即可。 (3)主要考查考生对构造函数的掌握,因为 Manager 类是Employee 类的派生类,因此它的构造函数要先对基类初始化,应使用成员列表初始化。 (4)主要考查考生对虚函数的掌握,因为 Manager 类是 Errrployee 类的派生类,因此它的 print 函数可以先调用基类的print 函数,再输出自

    30、身要输出的数据,故为 Employee:prim();。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 Matrix 是一个用于表示矩阵的类。operator+的功能是实现两个矩阵的加法运算。例如,若有两个 3 行 3 列的矩阵 则 A 与 B 相加的和为 (分数:2.00)_正确答案:(正确答案:Matrix m; for (int i = 0; i M; i+) for (int j = 0; j N; j+) m.setElement(i, j, (m1.getElement(i,j) + m2.getElement(i,j); return m;)解析:解析:主要考查考生对运算符重载的掌握,本题使用二维数组表示矩阵,使用 for 循环遍历数组的每个元素,将位置一样的两个数组元素相加,放入新的二维数组中。


    注意事项

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




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

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

    收起
    展开