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

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

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

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

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

    1、国家二级(C+)机试-试卷 7-1 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA2.下列符号中不属于 C+关键字的是( )。(分数:2.00)A.friendB.namespaceC.continueD.byte3.有如下程序: #include using namespace std; class CD

    2、 public: CD() coutGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A.B.C.D.10.一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是(分数:2.00)A.一对多B.一对一C.多对一D.多对多11.有如下程序: #include using namespace std; void fun(int c=a; a=b; b=c; int main() int

    3、x,y; x=1; y=2; fun(x,y); coutopen(“file.dat“);16.下列字符中,可以出现在合法的 C+标识符中的是(分数:2.00)A.:B.C. class AA public: virtual void disp() coutGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A.B.C.D.28.下列关于货币数据类型的叙述中,错误的是(分数:2.00)A.DOUBLEB.abcC._5_D.x

    4、yz29.在 C+中,编译系统自动为一个类生成默认构造函数的条件是(分数:2.00)A.该类没有定义任何公有构造函数B.该类没有定义任何无参构造函数C.该类没有定义任何构造函数D.该类没有定义任何成员函数30.某二叉树中有 15 个度为 1 的结点,16 个度为 2 的结点,则该二叉树中总的结点数为(分数:2.00)A.32B.46C.48D.4931.有如下类定义: class Base public: void fun() coutfun();C.Base:fun();D.fun();32.有如下类定义: class Base public: int a; protected: int b

    5、; private: int c; ; class Derived: public Base protected: int d; ;若 obj 是类 Derived 的对象,以下语句编译正确的是(分数:2.00)A.obj.a;B.obj.b;C.obj.c;D.obj.d;33.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.autoB.externC.registerD.static34.有如下程序: #include using namespace

    6、std; class Music public: void setTitle(char* str) strcpy(title, str); protected: char type10; private: char title20; ; class Jazz : public Music public: void set(char* str) strcpy(type, “Jazz“); / strcpy(title, str); / ; 下列叙述中正确的是( )。(分数:2.00)A.程序编译正确B.程序编译时语句出错C.程序编译时语句出错D.程序编译时语句和都出错35.已知枚举类型声明语句为

    7、:enum COLOR WHITE, YELLOW, GREEN=5, RED, BLACK=10 ;则下列说法中错误的是( )。(分数:2.00)A.枚举常量 YELLOW 的值为 1B.枚举常量 RED 的值为 6C.枚举常量 BLACK 的值为 10D.枚举常量 WHITE 的值为 136.有如下类定义: class Cup public: Cup(double val,string cr=“red“):price(val),color(cr) / Cup(); / private: string color; / double price=5.8; / ;在标注号码的语句行中存在语法错

    8、误的是(分数:2.00)A.B.C.D.37.负责数据库中查询操作的数据库语言是( )。(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言38.如果派生类以 protected 方式继承基类,则原基类的 protected 成员和 public 成员在派生类中的访问属性分别是(分数:2.00)A.public 和 publicB.public 和 protectedC.protected 和 publicD.protected 和 protected39.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n1)/2 的排序方法是( )。(分数:2.00

    9、)A.快速排序B.冒泡排序C.直接插入排序D.堆排序40.有如下类声明和函数声明 class Base int m; public: int n; protected: int p; ; class Derived: public Base int k; friend void f(Derived d); ;则在函数 f 中通过 d 可访问类数据成员的个数是(分数:2.00)A.1B.2C.3D.4二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,其中有矩形类 Rectangle、函数 show 和主函数 ma

    10、in 的定义。程序中位于每个“ERROR*found*”下一行的语句有错误,请力11 以改正。改正后程序的输出结果应该是:Upperleft=(1,8),downright:(5,2),areal=24注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostream#includecmathusingnamespacestd;classRectangledoublex1ty1;左上角坐标 doublex2,y2;右下角坐标public:ERROR*found*Rectangle(doublex1,y1;doublex2,y2)this-x1=x

    11、1;this-y1=y1;thiS-x2=x2;this-y2=y2;doublegetXl()constreturnx1;doublegetYl()constreturny1;doublegetX2()constreturnx2;doublegetY2()constreturny2;doublegetHeight()constreturnfabs(y1y2);doublegetWidth()constfreturnfabs(x1x2);doublearea()constreturngetHeight()*getWidth();ERROR*found*voidshow(Rectangler)c

    12、onstcout“Upperleft=(“;ERROR*found*coutrx1”,”ry1”),downright=(“rx2“,“ry2;cout“),area=“rarea()“end1;intmain()Rectanglerl(1,8,5,2);show(r1);return0;(分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 prog2 下的工程 prog2,此工程中包含一个程序文件mmncpp,其中有“班级”类 Class 和“学生”类 Student 的定义,还有主函数 main 的定义。在主函数中定义了两个

    13、“学生”对象,他们属于同一班级。程序展示,当该班级换教室后,这两个人的教室也同时得到改变。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:改换教室前:学号:0789 姓名:张三班级:062113 教室:521 学号:0513 姓名:李四班级:062113 教室:521 改换教室后:学号:0789 姓名:张三班级:062113 教室:311 学号:0513 姓名:李四班级:062113教室:311 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。#includeiostreamusingnamespacestd;classClass(“班级”类pu

    14、blic:Class(constchar*id,constchar*room)strcpy(classid,id);f*found*constchar*getClassID()constreturnclassid;返回班号*found*constchar*getClassroom()const_返回所在教室房号voidchangeRoomTo(constchar*newroom)改换到另一个指定房号的教室strcpy(classroom,new_room);private:charclassid20;班号 charclassroom20;所在教室房号;classStudent“学生”类 cha

    15、rmyid10;学号 charmyname20;姓名Class class CD public: CD() coutGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A. B.C.D.解析:解析:本题考查派生类对基类的继承二义性问题,类 Satellite 公用继承 Task 和 Displayed,两个基类中都有 GetValue 函数,所以引起二义性,A 选项错误。10.一个运动队有多个队员,一个队员仅属于一个运动队,一个

    16、队一般都有一个教练,则实体运动队和队员的联系是(分数:2.00)A.一对多 B.一对一C.多对一D.多对多解析:解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。实体运动队和队员的关系为 1:m 联系,故 A 选项正确。11.有如下程序: #include using namespace std; void fun(int c=a; a=b; b=c; int main() int x,y; x=1; y=2; fun(x,y); coutopen(“file.dat“);解析:解析:本题考查对文件流输入的操作,可

    17、以调用文件流的成员函数 pen,一般形式如下:文件流对象.open(磁盘文件名,输入/输出方式)。根据以上格式,可以判断 A 选项错误。16.下列字符中,可以出现在合法的 C+标识符中的是(分数:2.00)A.:B.C. class AA public: virtual void disp() coutGetValue(); / sp-Task:GetValue(); / sp-Displayed:GetValue(); / sp-Draw(); / 在标注号码的语句行中,对类中成员访问存在二义性的是(分数:2.00)A. B.C.D.解析:解析:本题考查派生类对基类的继承二义性问题,类 Sa

    18、tellite 公用继承 Task 和 Displayed,两个基类中都有 GetValue 函数,所以引起二义性,A 选项错误。28.下列关于货币数据类型的叙述中,错误的是(分数:2.00)A.DOUBLEB.abc C._5_D.xyz解析:解析:C+的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。选项 B 错误,答案选 B。29.在 C+中,编译系统自动为一个类生成默认构造函数的条件是(分数:2.00)A.该类没有定义任何公有构造函数B.该类没有定义任何无参构造函数C.该类没有定义任何构造函数 D.该类没有定义任何成员函数解析:解析:C+中,只有当一个类没有定义构造函数时,

    19、编译器才会自动生成一个默认构造函数,一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数;答案为 C。30.某二叉树中有 15 个度为 1 的结点,16 个度为 2 的结点,则该二叉树中总的结点数为(分数:2.00)A.32B.46C.48 D.49解析:解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为 0 的结点(即叶子结点)总是比度为 2 的结点多一个。由 16 个度为 2 的结点可知叶子结点个数为 17,则结点结点总数为 16+17+15=48,C 选项正确。31.有如下类定义: class Base public:

    20、 void fun() coutfun();C.Base:fun(); D.fun();解析:解析:基类 Base 和派生类 Derived 中使用同一名字的成员函数 fun,所以在派生类 Derived 的作用域中,派生类 Derived 中的 fun 函数会屏蔽基类 Base 中的 fun 函数,即 Base 的 fun 函数对 Derived 不可见,这是因为编译器在查找名字 fun 时,首先在 Derived 中找到,这样编译器就不再继续查找,所以若想在 Derived 中调用 Base 的 fun 函数,必须显式的说明 fun 函数属于 Base,这里使用作用域运算符访问被屏蔽的 f

    21、un,调用语句为:Base:fun();答案为 C。32.有如下类定义: class Base public: int a; protected: int b; private: int c; ; class Derived: public Base protected: int d; ;若 obj 是类 Derived 的对象,以下语句编译正确的是(分数:2.00)A.obj.a; B.obj.b;C.obj.c;D.obj.d;解析:解析:类 Derived 以 public 方式继承 Base,所以 a 在 Derived 中是 public 成员,b 在 Derived 中是 prot

    22、ected 成员,c 对 Derived 不可见;所以对类 Derived 对象 obj 可见的成员为 a,答案为 A。33.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.auto B.externC.registerD.static解析:解析:变量的存储方法分为静态存储和动态存储两大类,包含 4 种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。变量如果没有说明存储类型,那么默认就是 auto。34.

    23、有如下程序: #include using namespace std; class Music public: void setTitle(char* str) strcpy(title, str); protected: char type10; private: char title20; ; class Jazz : public Music public: void set(char* str) strcpy(type, “Jazz“); / strcpy(title, str); / ; 下列叙述中正确的是( )。(分数:2.00)A.程序编译正确B.程序编译时语句出错C.程序编译

    24、时语句出错 D.程序编译时语句和都出错解析:解析:本题考查公用继承和保护继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。保护成员不能被类外访问,但是可以被派生类的成员函数访问。Type 成为派生类的保护成员,可以被派生类访问,title 仍为基类私有,派生类不能直接访问。所以答案为 C。35.已知枚举类型声明语句为:enum COLOR WHITE, YELLOW, GREEN=5, RED, BLACK=10 ;则下列说法中错误的是( )。(分数:2.00)A.枚举常量 YELLOW 的值为 1B.枚举常量 RED 的值为 6

    25、C.枚举常量 BLACK 的值为 10D.枚举常量 WHITE 的值为 1 解析:解析:C+语言规定枚举常量的默认值依次等于 0,1,n-l。也可以给枚举常量赋初值,方法是:在枚举常量的后面跟上“=整型常量“,在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为 D。36.有如下类定义: class Cup public: Cup(double val,string cr=“red“):price(val),color(cr) / Cup(); / private: string color; / double price=5.8;

    26、 / ;在标注号码的语句行中存在语法错误的是(分数:2.00)A.B.C.D. 解析:解析:本题考查如何初始化对象,其中类的数据成员是不能再声明类时初始化的,所以 D 选项错误,在定义类的同时对数据成员 price 进行赋值是错误的。37.负责数据库中查询操作的数据库语言是( )。(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言 D.数据控制语言解析:解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。38.如果派生类以 protec

    27、ted 方式继承基类,则原基类的 protected 成员和 public 成员在派生类中的访问属性分别是(分数:2.00)A.public 和 publicB.public 和 protectedC.protected 和 publicD.protected 和 protected 解析:解析:本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,派生类保护继承基类,那么基类中的私有成员不可访问,基类的保护成员和公用成员变成了派生类的保护成员。所以 D 选项正确。39.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n1)/2 的排序方法是( )。(分数:2.00)A

    28、.快速排序B.冒泡排序C.直接插入排序D.堆排序 解析:解析:除了堆排序算法的比较次数是 O(nlog 2 n),其他的都是 n(n1)/2。40.有如下类声明和函数声明 class Base int m; public: int n; protected: int p; ; class Derived: public Base int k; friend void f(Derived d); ;则在函数 f 中通过 d 可访问类数据成员的个数是(分数:2.00)A.1B.2C.3 D.4解析:解析:公有继承中,派生类不改变基类的成员访问权限(private 成员除外),即基类的 public

    29、 成员在派生类中是 public 成员,基类的 protected 成员在派生类中是 protected 成员;另外友元函数可以访问类的 private 成员、protected 成员和 public 成员,所以 f 函数中 d 可以访问的数据成员有:n、p、k;m 对派生类不可见;答案为 C。二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,其中有矩形类 Rectangle、函数 show 和主函数 main 的定义。程序中位于每个“ERROR*found*”下一行的语句有错误,请力11 以改正。改正后程序的

    30、输出结果应该是:Upperleft=(1,8),downright:(5,2),areal=24注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostream#includecmathusingnamespacestd;classRectangledoublex1ty1;左上角坐标 doublex2,y2;右下角坐标public:ERROR*found*Rectangle(doublex1,y1;doublex2,y2)this-x1=x1;this-y1=y1;thiS-x2=x2;this-y2=y2;doublegetXl()const

    31、returnx1;doublegetYl()constreturny1;doublegetX2()constreturnx2;doublegetY2()constreturny2;doublegetHeight()constreturnfabs(y1y2);doublegetWidth()constfreturnfabs(x1x2);doublearea()constreturngetHeight()*getWidth();ERROR*found*voidshow(Rectangler)constcout“Upperleft=(“;ERROR*found*coutrx1”,”ry1”),dow

    32、nright=(“rx2“,“ry2;cout“),area=“rarea()“end1;intmain()Rectanglerl(1,8,5,2);show(r1);return0;(分数:2.00)_正确答案:(正确答案:(1)Rectangle(double x1, double y1, double x2, double y2) (2)void show(Rectangle r) (3)cout r.getX1() “ , “ r.getY1() “),down right=(“ r.getX2() “ , “ r.getY2();)解析:解析:(1)主要考查考生对构造函数的掌握,函数

    33、的参数要使用“,“隔开,不能使用“;“。 (2)主要考查考生对 const 函数的掌握,程序中调用函数 r.area(),该函数修改了成员值,因此不能使用 const。 (3)主要考查考生对成员函数的掌握,类外函数不能直接调用类的私有成员,只能通过成员函数调用。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 prog2 下的工程 prog2,此工程中包含一个程序文件mmncpp,其中有“班级”类 Class 和“学生”类 Student 的定义,还有主函数 main 的定义。在主函数中定义了两个“学生”对象,他们属于同一班级。程序展示,当该班

    34、级换教室后,这两个人的教室也同时得到改变。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:改换教室前:学号:0789 姓名:张三班级:062113 教室:521 学号:0513 姓名:李四班级:062113 教室:521 改换教室后:学号:0789 姓名:张三班级:062113 教室:311 学号:0513 姓名:李四班级:062113教室:311 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。#includeiostreamusingnamespacestd;classClass(“班级”类public:Class(constchar*id,

    35、constchar*room)strcpy(classid,id);f*found*constchar*getClassID()constreturnclassid;返回班号*found*constchar*getClassroom()const_返回所在教室房号voidchangeRoomTo(constchar*newroom)改换到另一个指定房号的教室strcpy(classroom,new_room);private:charclassid20;班号 charclassroom20;所在教室房号;classStudent“学生”类 charmyid10;学号 charmyname20;姓名Class for (int i = 0; i size; i+)/判断数组元素 if (vi != other.vi) return false; return true;)解析:解析:主要考查考生对数组的掌握,函数 bool ValArray:equals(const ValArray& other)要求判断两个数组是否相等,先判断数组长度,如果长度相同再根据数组元素依次判断。


    注意事项

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




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

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

    收起
    展开