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

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

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

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

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

    1、国家二级(C+)机试模拟试卷 177 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA2.下列叙述中正确的是( )。(分数:2.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的

    2、动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n 2 )C.O(log 2 n)D.O(nlog 2 n)4.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间5.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.事

    3、件驱动C.模块调用D.数据流6.在软件开发中,需求分析阶段可以使用的工具是( )。(分数:2.00)A.N-S 图B.DFD 图C.PAD 图D.程序流程图7.在面向对象方法中,不属于“对象”基本特点的是( )。(分数:2.00)A.一致性B.分类性C.多态性D.标识唯一性8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。(分数:2.00)A.一对一B.一对多C.多对一D.多对多9.在数据管理技术发展的三个阶段中,数据共享最好的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10.有三个关系 R、S 和 T 如下: (分数:2.00)A

    4、.笛卡尔积B.交C.并D.自然连接11.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.double*const point;12.if 语句的语法格式可描述为: 格式 1:if() 或 格式 2:if() else 关于上面的语法格式,下列表述中错误的是( )。(分数:2.00)A.条件部分可以是一个 if 语句,例如 if(if(a=O)B.语句部分可以是一个 if 语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位

    5、置,语句功能不变D.语句部分可以是一个循环语句,例如 if()while()13.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是( )。(分数:2.00)A.*p+9B.*(p+8)C.*p+=9D.p+814.有如下程序段: int i=0,j=1; int &r=i; r=j; int*p=&i; *p=&r; 其中会产生编译错误的语句是( )。(分数:2.00)A.B.C.D.15.下列字符串中,不可以用做 C+标识符的是( )。(分数:2.00)A.y_2006B._TFEST-HC.RetumD.switch16.为了取代

    6、 C 中带参数的宏,在 C+中使用( )。(分数:2.00)A.重载函数B.内联函数C.递归函数D.友元函数17.通过运算符重载,可以改变运算符原有的( )。(分数:2.00)A.操作数类型B.操作数个数C.优先级D.结合性18.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。(分数:2.00)A.autoB.extemC.registerD.static19.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是( )。(分数:2.00)A.int operator

    7、-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber);20.若有下面的函数调用: fun(a+b,3,max(n1,b) 则 fun 的实参个数是( )。(分数:2.00)A.3B.4C.5D.621.关于运算符重载,下列表述中正确的是( )。(分数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型D.可以通过运算符重载来创建 C+中原来没有的运算符22.有如下

    8、程序: #include using namespace std; int main() void function(double val); double val; function(val); coutfun();D.fun();29.有如下程序: #inehde using nanmapace std; class arclass public: arclass()toutfunc1(); p-func2(); delete p; return 0; 执行这个程序的输出结果是( )。(分数:2.00)A.B1B2B.A1A2C.B1A2D.A1B237.关于在调用模板函数时模板实参的使用

    9、,下列表述中正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略38.关于关键字 class 和 typename,下列表述中正确的是( )。(分数:2.00)A.程序中的 typename 都可以替换为 classB.程序中的 class 都可以替换为 typenameC.在模板形参表中只能用 typename 来声明参数的

    10、类型D.在模板形参表中只能用 class 或 typename 来声明参数的类型39.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是( )。(分数:2.00)A.ios_base:curB.ios base:begC.ios_base:outD.ios base:end40.下列关于 C+流的描述中,错误的是( )。(分数:2.00)A.coutA表达式可输出字符 AB.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstremnD.以 ios_base:out 模式打开的文件不存在时,将自动建立一个新文件二、基本操作题(总题数:1,分数:2.0

    11、0)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,此工程中含有一个源程序文件 proj1epp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Constructor called The value is 10 Copy constructor called The value is 10 Destructor called Destructor called 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。 proj1cpp #includeiost

    12、ream using namespace std; class MyClass public: ERROR*found* MyClass(int i) value=i;tout“Constructor called“endl; ERROR*found* MyClass(const MyClass p) value=pvalue; cout“Copy constructor called“endl: void Print() cout“The value is“ valueendl; ERROR *found* voidMyClass() cout“Destructor called“endl;

    13、 private: int value; ; int main() MyClass obj1; objlPrint(); MyClass obj2(objl); obj2Print(); return 0; (分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,该工程中包含一个程序文件maincpp,其中有坐标点类 point、线段类 Line 和三角形类 Triangle 的定义,还有 main 函数的定义。程序中两点间距离的计算是按公式 d= 实现的,三角形面积的计算是按公式 f= (分数:

    14、2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中包含了类 IntegerSet 和主函数 main 的定义。一个 IntegerSet 对象就是一个整数的集合,其中包含 0 个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组 elem 的前若干单元中。成员函数 add 的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数 remove 从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数 remove。在 main 函数中给出了一组测试数据,此时程

    15、序的正确输出结果应为: 2 3 4 5 27 28 31 66 75 2 3 4 5 6 27 28 31 66 75 2 3 4 5 6 19 27 28 31 66 75 3 4 5 6 19 27 28 31 66 75 3 4 5 6 19 27 28 31 66 75 要求: 补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 outdat 中。输出函数 WriteTOFile 已经编译为 obj 文件,并且在本程序中调用。 IntegorSeth #ifndef INTEGERSET #define INTEGERSET

    16、#includeiostream using namespace std; const int MAXELEMENTS=100: 集合最多可拥有的元素个数 class IntegerSet int elemMAXELEMENTS; 用于存放集合元素的数组 int counter;用于记录集合中元素个数的计数器 public: IntegerSet():counter(0) 创建一个空集合 IntegerSet(int data,int size); 利用数组提供的数据创建一个整数集合 void add(int element); 添加一个元素到集合中 void remove(int eleme

    17、nt); 删除集合中指定的元素 int getCount()constreturn counter; 返回集合中元素的个数 int getElement(int i)constreturn elemi;返回集合中指定的元素 void show()const; ; void WriteToFile(char*); #endif maincpp #include“IntegerSeth“ #includeiomanip IntegerSet:IntegerSet(int data,int size):counter(0) for(int i=0;isize;i+) add(datai); void

    18、 IntegerSet:add(int element) int j; 从后往前寻找第一个小于等于 element 的元素 for(j=counter;j0;j-) if(element=elemj 一 1)break; 如果找到的是等于 element 的元素,说明要添加的元素已经存在,直接返回 if(j0) if(element=elemj-1)return; 如果找到的是小于 element 的元素,j就是要添加的位置 该元素及其后面的元素依次后移,腾出插入位置 for(int k=counter;kj;k-) elemk=elemk-1; elemj=element;将 element

    19、 插入到该位置 counter+; 计数器加 1 void IntegerSet:remove(int element) *333* *666* void IntegerSet:show()const for(int i=0;igetCount();i+) coutsetw(4)getElement(i); coutendl: int main() int d=5,28,2,4,5,3,2,75,27,66,31; IntegerSet S(d,11); Sshow(); sadd(6); sshow(); sadd(19); sshow(); sremove(2); sshow(); sad

    20、d(4); sshow(); WriteToFile(“ “); return 0; (分数:2.00)_国家二级(C+)机试模拟试卷 177 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(分数:2.00)A.12345ABCDEB.EDCBA54321 C.ABCDE12345D.54321EDCBA解析:解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择 B。2.下列叙述中正确的是( )。(分数:2

    21、.00)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定 解析:解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以 A 错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以 B 与 c 错误。3.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n 2 )C.O(log 2 n) D.O(nlo

    22、g 2 n)解析:解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较 log 2 n 次,而顺序查找需要比较 n 次。4.下列叙述中正确的是( )。(分数:2.00)A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间解析:解析:链式存储结构既可以针对线性结构也可以针对非线性结构,所以 B 与 c 错误。链式存储结构中每个结点都由数据域与指针域

    23、两部分组成,增加了存储空间,所以 D 错误。5.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.事件驱动C.模块调用D.数据流 解析:解析:数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。6.在软件开发中,需求分析阶段可以使用的工具是( )。(分数:2.00)A.N-S 图B.DFD 图 C.PAD 图D.程序流程图解析:解析:在需求分析阶段可以使用的工具有数据流图 DFD 图,数据字典 DD,判定树与判定表,所以选择 B。7.在面向对象方法中,不属于“对象”基本特点的是( )。(分数:2.00)A.一致性 B.分类性C.多态性

    24、D.标识唯一性解析:解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择 A。8.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。(分数:2.00)A.一对一B.一对多 C.多对一D.多对多解析:解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。9.在数据管理技术发展的三个阶段中,数据共享最好的是( )。(分数:2.00)A.人工管理阶段B.文件系统阶段C.数据库系统阶段 D.三个阶段相同解析:解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。

    25、其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 C。10.有三个关系 R、S 和 T 如下: (分数:2.00)A.笛卡尔积B.交C.并D.自然连接 解析:解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T 关系中的有序组可知 R 与 S 进行的是自然连接操作。11.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=256;B.const double*point;C.int const buffer=256;D.d

    26、ouble*const point; 解析:解析:const 是一个 C+关键字,用于限定不允许改变的变量。选项 B 是指向常量的指针,定义时可以不初始化;选项 D 是指针常量,定义时必须初始化。故答案为 D。12.if 语句的语法格式可描述为: 格式 1:if() 或 格式 2:if() else 关于上面的语法格式,下列表述中错误的是( )。(分数:2.00)A.条件部分可以是一个 if 语句,例如 if(if(a=O) B.语句部分可以是一个 if 语句,例如 if()if()C.如果在条件前加上逻辑非运算符!并交换语句 1和语句 2的位置,语句功能不变D.语句部分可以是一个循环语句,例

    27、如 if()while()解析:解析:本题考查 if 语句,if 语句的条件部分不能嵌套 if 语句,所以 A 选项错误;B 选项就是 if语句嵌套;C 选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D 选项也正确。13.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9 的表达式是( )。(分数:2.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析:本题考查指向数组的指针,本题中指针变量 p 指向数组 a,那么*p 的值就是 1,即表示数组的第一个元素,那么数值为 9 的表达式就是将指针向后移动 8 个地址,

    28、即 p+8 指向的是数组元素值为 9,所以数值为 9 的表达式是*(p+8)。14.有如下程序段: int i=0,j=1; int &r=i; r=j; int*p=&i; *p=&r; 其中会产生编译错误的语句是( )。(分数:2.00)A. B.C.D.解析:解析:本题考查指针和引用。为引用,使用正确;中&r 表示一个地址,而*p 已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。15.下列字符串中,不可以用做 C+标识符的是( )。(分数:2.00)A.y_2006B._TFEST-HC.RetumD.switch 解析:解析:本题考查 C+标识符的命名规则,其规则有如下几点:

    29、所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;所有标识符不能使用 C+已有的关键字;大、小写字母表示不同意义,即代表不同的标识符。选项 C 中虽然 return 是关键字,但因首字母大、小写不同,也可用于标识符,但不建议使用。故答案为 D。16.为了取代 C 中带参数的宏,在 C+中使用( )。(分数:2.00)A.重载函数B.内联函数 C.递归函数D.友元函数解析:解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,即类似于宏。17.通过运算符重载,可以改变运算符原有的( )。(分数:

    30、2.00)A.操作数类型 B.操作数个数C.优先级D.结合性解析:解析:重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。18.在函数中,可以用 auto、extern、register 和 static 这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是( )。

    31、(分数:2.00)A.auto B.extemC.registerD.static解析:解析:变量的存储方法分为静态存储和动态存储两大类,包含 4 种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。变量如果没有说明存储类型,那么默认就是 auto。19.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是( )。(分数:2.00)A.int operator-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumbe

    32、r,FunNumber); 解析:解析:本题考查运算符重载的一些规则:一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数;双目运算符=、()、-不能重载为类的友元函数;类型转换函数只能定义为一个类的成员函数,而不能定义为类的友元函数;若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好;若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数;当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用);如果左边的操作数必须是一个不同类的对象,或者是一个内部类型的对象,该

    33、运算符函数必须作为一个友元函数来实现。所以答案为 D。20.若有下面的函数调用: fun(a+b,3,max(n1,b) 则 fun 的实参个数是( )。(分数:2.00)A.3 B.4C.5D.6解析:解析:本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n-1,b)分别为其中的 3 个实参。故答案为 A。21.关于运算符重载,下列表述中正确的是( )。(分数:2.00)A.C+已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型 D.可以通过运算符重载来创建 C+中原来没有的运算符解析:解析:重载运算

    34、符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 C。22.有如下程序: #include using namespace std; int main() void function(double val); double val; function(val); coutfun();D.fun();解析

    35、:解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出 Base:fun,则必须调用基类的公用成员函数 fun,所以使用 Base:fun();来调用基类的成员函数 fun。29.有如下程序: #inehde using nanmapace std; class arclass public: arclass()toutfunc1(); p-func2(); delete p; return 0; 执行这个程序的输出结果是( )。(分数:2.00)A.B1B2B.A1A2C.B1A2 D.A1B2

    36、解析:解析:本题考查虚函数。虚函数指在基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。题中定义了一个派生类对象 B,并使用类 A 的对象指针指向 B,由于基类 A 中的 func1 为虚函数,所以会执行派生类的 func1,输出 B1,而基类中的 func2 不是虚函数,所以 p-func2()会执行基类的 func2,输出 A2。故答案为 C。37.关于在调用模板函数时模板实参的使用,下列表述中正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参

    37、数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析:在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“”也可以不要,因此选项 D 错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。38.关于关键字 class 和 typename,下列表述中正确的是( )。(分数:2.00)A.

    38、程序中的 typename 都可以替换为 class B.程序中的 class 都可以替换为 typenameC.在模板形参表中只能用 typename 来声明参数的类型D.在模板形参表中只能用 class 或 typename 来声明参数的类型解析:解析:程序中的 typename 都可以替换为 class,但程序中的 class 不可以全部替换为 typename。在模板类型形参中除了 typename 和 class 以外,也可以用常规类型来声明参数的类型,所以 c、D 选项错误。39.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是( )。(分数:2.00)A.ios_ba

    39、se:cur B.ios base:begC.ios_base:outD.ios base:end解析:解析:streamoff 定义于 iostreamh 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:ios:beg:(文件开头)、ios:cur:(文件当前位置)、ios:end:(文件结尾)。40.下列关于 C+流的描述中,错误的是( )。(分数:2.00)A.coutA表达式可输出字符 A B.eof()函数可以检测是否到达文件尾C.对磁盘文件进行流操作时,必须包含头文件 fstremnD.以 ios_base:out 模式

    40、打开的文件不存在时,将自动建立一个新文件解析:解析:本题考查 C+流,想要输出字符“A”,则应该是 cout“A”,所以本题答案为 A。二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,此工程中含有一个源程序文件 proj1epp。其中位于每个注释“ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Constructor called The value is 10 Copy constructor called The value is 10 Destructor ca

    41、lled Destructor called 注意:只修改注释“ERROR *found*”的下一行语句,不要改动程序中的其他内容。 proj1cpp #includeiostream using namespace std; class MyClass public: ERROR*found* MyClass(int i) value=i;tout“Constructor called“endl; ERROR*found* MyClass(const MyClass p) value=pvalue; cout“Copy constructor called“endl: void Print(

    42、) cout“The value is“ valueendl; ERROR *found* voidMyClass() cout“Destructor called“endl; private: int value; ; int main() MyClass obj1; objlPrint(); MyClass obj2(objl); obj2Print(); return 0; (分数:2.00)_正确答案:(正确答案:(1)MyClass(int i=10) (2)MyClass(const MyClass&p) (3)MyClass()解析:解析:(1)考查构造函数参数默认值,题目要求输

    43、出语句:The value is 10,从主函数中可以看出,obj1 并没有初始化,但是 obj1 调用蹦 nt()函数时它的值为 10,由此可知构造函数的形参有默认值,且值为 10,因此得出语句 MyClass(int i=10)。 (2)主要考查考生对复制构造函数的掌握,复制构造函数的形参都为引用,同时为了不改变形参的值要加上 const,因此得出语句 MyClass(const MyClass&p)。 (3)主要考查考生对析构函数的掌握,析构函数和构造函数一样,前面不能添加任何类型,要把 void 去掉。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单

    44、打开考生文件夹 proj2 下的工程 proj2,该工程中包含一个程序文件maincpp,其中有坐标点类 point、线段类 Line 和三角形类 Triangle 的定义,还有 main 函数的定义。程序中两点间距离的计算是按公式 d= 实现的,三角形面积的计算是按公式 f= (分数:2.00)_正确答案:(正确答案:(1)const Point&p (2)p1(p1),p2(p2) (3)Point p1,Point p2,Point p3 (4)(lengthl()+length2()+length3()2)解析:解析:(1)主要考查考生对函数形参的掌握,由函数的注释可知有本坐标点到达某

    45、个坐标点类的距离,再根据函数体 return sqrt(xpx)*(xpx)+(ypy)*(ypy);可知,该坐标点类名为p,因此可以知道形参为 Point&p,为了不改变该坐标点的值,前面要加上 const。 (2)主要考查考生对构造函数的掌握,对于常变量型私有成员 const Point p1,p2,只能用成员初始化列表进行赋值。 (3)主要考查考生对构造函数的掌握,由空格后面的语句:p1(p1),p2(p2),p3(p3)可知,该构造函数需要进行成员列表初始化,再看类的私有成员 const Point p1,p2,p3,可知 p1,p2,p3 是 Point 类型,因此形参为 Point

    46、 p1,Point p2,Point p3。 (4)主要考查考生对成员函数的掌握,根据函数注释,可知本函数要求计算三角形面积,再看题目的提示:s=(a+b+c)2。可知空格处要填的是三角形的三条边之和除以 2,而求边长的函数已经给出,这里直接调用即可。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中包含了类 IntegerSet 和主函数 main 的定义。一个 IntegerSet 对象就是一个整数的集合,其中包含 0 个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成员数组 elem 的前若干单元中。成员函数 add 的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数 remove 从集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数 remove。在 main


    注意事项

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




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

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

    收起
    展开