[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc

上传人:hopesteam270 文档编号:502539 上传时间:2018-11-29 格式:DOC 页数:29 大小:86.50KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc_第1页
第1页 / 共29页
[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc_第2页
第2页 / 共29页
[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc_第3页
第3页 / 共29页
[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc_第4页
第4页 / 共29页
[计算机类试卷]国家二级(C++)机试模拟试卷86及答案与解析.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 86及答案与解析 一、选择题 1 有如下程序段: int i = 0, j = 1; int / r = j; / int *p = / *p = / 其中会产生编译错误的语句是 ( )。 ( A) ( B) ( C) ( D) 2 有如下类定义: class AA int a; Public: AA(int n=0):a(n) ; class BB :public AA public: BB(int n)_ ; 其中横线处的缺失部分是 ( )。 ( A) :a(n) ( B) :AA(n) ( C) a(n); ( D) a=n; 3 下列叙述中正确的是 (

2、)。 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都是非线性结构 ( D)以上三种说法都不对 4 下列关于函数参数的叙述中,正确的是 ( A)在函数原型中不必声明形参类型 ( B)在调用一个函数时,若函数中修改了形参变量的值,则对应的实参变量的值也被修改 ( C)函数形参的生存期与整个程序的运行期相同 ( D)函数的形参在函数被调用时获得初始值 5 有如下类定义: class Box public: Box(int h,int w,int l):width(w),length(l),height(h) private: int length,width

3、,height; ; Box 类中 3个数据成员的初始化顺序为 ( A) length,height,width ( B) length,width,height ( C) height,width,lenth ( D) width,length,height 6 在关系数据库中,用来表示实体间联系的是 ( A)属性 ( B)二维表 ( C)网状结构 ( D)树状结构 7 运算符重载时必须有所不同的是 ( A)优先级 ( B)结合性 ( C)操作数个数 ( D)操作数类型 8 有如下程序: #include #include using namespace std; class Wheel p

4、ublic: Wheel(string s=“W“):name(s) coutfun(); ( C) Base:fun(); ( D) fun(); 14 有如下程序: #include using namespace std; class AA public: AA(int n) cout using namespace std; class MyClass public: MyClass(int x):val(x) void Print() const cout #include using std:cout; class Point public: friend double dista

5、nce(const Point Point(int xx=0,int yy=0): x(xx), y(yy) private: int x, y; ; double distance(const Point int main() Point p0,p1(3,4); cout using namespace std; class AA char c; public: AA():c(X) AA(char ch):c(ch) AA(AA class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get() return m; int ge

6、t() const return m+n; ; int main() Pair a(3,5); const Pair b(3,5); coutdata;“中, cin是 ( A) C+的关键字 ( B)类名 ( C)对象名 ( D)函数名 39 下面是重载为非成员函数的运算符函数原型,其中错误的是 ( A) MyClassoperator*(MyClass); ( B) MyClassoperator+(MyClass,int); ( C) MyClass ( D) MyClass 40 有如下头文件: int f1(); static int f2(); class MA public: i

7、nt f3(); static int f4(); ; 在所描述的函数中,具有隐含的 this指针的是 ( )。 ( A) f1 ( B) f2 ( C) f3 ( D) f4 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 pmj1下的工程 proj1。此工程中包含源程序文件 main cpp,其中有类 TVSet(“电视机 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”之后 的一行语句有错误,请加以改正。改正后程序的输出结果应该是: 规格: 29英寸,电源:开,频道: 5,音量: 18 规格: 29英寸,电源:关,频道:一 1,音量:一

8、1 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include usingnamespacestd; classTVSet “电视机 ”类 constintsize; intchannel;频道 intvolume;音量 boolon;电源开关: true表示开, false表示关 public: TVSet(intsize): size(size), channel(0), on(false) ERROR*found* intgetSize()constreturnSize; 返回电视机规格 boolisOn()constreturnon; )

9、返回电源开关状态 返回当前音量,关机情况下返回一 1 intgetVolume、 ()const returnisOn()?volume:一 1; ) 返回当前频道,关机情况下返 回一 1 intgetChannel()const returnisOn()?channel:一 1; ) voidturnOnOff()on=!on; 将电源在 “开 ”和 “关 ”之间转换 voidsetChannelTo(intchan) 设置频道 (关机情况下无效 ) if(isOn() chan: 0 chan=0 vol“不能重载为成员函数,选项 B 错误;成员访问操作符 “.“、成员指针访问操作符 “.

10、*“、域操作符 “:“、 sizeof和条件操作符 “?:“是不能重载的,选项 C错误;除了函数调用操作符 “()“外,重载操作符时使用默认参数是非法的,选项 D错误;重载操作符不能改变操作符的优先级别,选项 A正确;答案为 A。 11 【正确答案】 D 【试题解析】 对象数组,就是数组元素是类对象,不管对象数组在哪里定义,如果没有显式的调用构造函数初始化,编译器将使用类的默认构造函数初始化对象元素,这里程序中显式的使用构造函数 Pa(intn)初始化各个元素,所以被调用的构造函数只有 Pa(intn),没有调用默认构造函数和复制构造函数,答 案为 C。 12 【正确答案】 C 【试题解析】

11、扇入指的是调用一个给定模块的模块个数。题干系统中,第 2层模块扇入均为 1,第 3层中功能模块 3.1扇入为 2,其余为 1,故最大扇入为 2, C选项正确。 13 【正确答案】 C 【试题解析】 基类 Base和派生类 Derived 中使用同一名字的成员函数 fun,所以在派生类 Derived 的作用域中,派生类 Derived中的 fun函数会屏蔽基类 Base中的 fun 函数,即 Base的 fun 函数对 Derived 不可见,这是因为编译器在查找名字fun时,首先在 Derived中找到,这样编译器就不再继续查找,所以若想在Derived中调用 Base的 fun 函数,必须

12、显式的说明 fun 函数属于 Base,这里使用作用域运算符访问被屏蔽的 fun,调用语句为: Base:fun();答案为 C。 14 【正确答案】 D 【试题解析】 构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序;初始化执行的次序是根据类定义中成员的声明顺序完成的,初始化列表结束后,再执行函数体;程序创建 CC 对象 c,调用 CC的构造函数,由于在类 CC中, AA类对象 a首先声明,所以先 调用 AA类的构造函数,完成成员a的初始化,输出 “1“,再调用 BB类的构造函数,完成成员 b的初始化,输出“2“,最后执行 CC构造函数的函数体,输出 “3“;答案为

13、D。 15 【正确答案】 D 【试题解析】 C+中使用 new 表达式动态创建对象, new 表达式返回指向新创建对象的指针, D选项将 new 返回的指针赋给整型 const变量,语法错误,答案选D。 16 【正确答案】 C 【试题解析】 类的非静态成员函数都隐含 this 指针,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this指针,选项 D错误;友元函数不属于成员函数,没有 this指针,选项 A、 B 错误;答案为 C。 17 【正确答案】 C 【试题解析】 软件设计常用的工具有:图形工具:程序流程图、 N-S 图、 PAD图、 HIPO;表格工具:判定表;

14、语言工具: PDL(伪码)。另外,在结构化设计方法中,常用的结构设计工具是结构图,故选择 C选项。 18 【正确答案】 C 【试题解析】 只有类定义或者声明在当前定义类前面出现过,数据成员才能被指定为该类类型,类 AA已经完成定义, v1, v2 正确;类不能具有自身类型的数据成员,只要类名出现就可以认为该类已经声明,类的数据成员就可以是指向自身类型的指针或引用,类 BB在声明之后,定义之前是一个不完全类型,其数据成员只能是指向 BB类型的指针或引用, v4正确, v3错误;答案为 C。 19 【正确答案】 D 【试题解析】 模板形参可以由 class 或 typename声明,选项 D错误,

15、答案为D。 20 【正确答案】 D 【试题解析】 本题考查 C+关键字,属于基本常识,显然 D选项不正确。 21 【正确答案】 C 【试题解析】 本题考查常对象、常成员函数及构造函 数。常对象只能调用常成员函数,普通对象调用普通成员函数。所以本题中 obj1为常对象,执行 obj1.print()后,会执行常构造函数,输出 const: val=10;而 obj2为普通对象,执行obj2.print()时,会执行默认构造函数,输出 val=20。故答案为 C。 22 【正确答案】 A 【试题解析】 数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。 23 【正确答案】 B

16、 【试题解析】 本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译 器就会自动为该类型生成默认构造函数,建立一个对象时,系统会自动执行默认构造函数。 24 【正确答案】 A 【试题解析】 本题考查字符输入的流成员函数 getline,函数原型为: 25 【正确答案】 A 【试题解析】 本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以 A选项错误。 26 【正确答案】 D 【试题解析】 本题考 查构造函数的应用,题目

17、中定义对象 p0时,执行默认构造函数,得出 x和 y都为 0,定义对象 p1(3,4),得到 x和 y分别是 3,4,执行distance(p1,p0)后得出 5 27 【正确答案】 B 【试题解析】 栈是按 “先进后出 “的原则组织数据的,数据的插入和删除都在栈顶进行操作。 28 【正确答案】 D 【试题解析】 内联函数的函数定义必须出现在内联函数第一次被调用之前;内联函数可以避免函数频繁调用时的开销,提高程序运行效率;在类定义体内部定义的成员函数,编译器都将其视为内联函数; A、 B、 C正确;内联函数也可以有参数, D错误,答案为 D。 29 【正确答案】 B 【试题解析】 iomani

18、p 是 I/O 流控制头文件; strstream是输入输出字符串流头文件; cstdlib是常用函数库,提供一些函数和符号常量;选项 A、 C、 D错误;fstream是输入输出文件流头文件,答案为 B。 30 【正确答案】 C 【试题解析】 横线处填写的语句,是重载后缀自增运算符 +的函数声明,为了与内置类型一致,后缀自增运算符应该返回旧值,即尚未自增的值,并且应该作为值返回,而不是返回引用,选项 A、 B错 误;另外为了区分运算符的前缀和后缀形式,后缀运算符重载函数需要接受一个额外的 int型形参,选项 D错误;答案为C。 31 【正确答案】 C 【试题解析】 main 函数中,调用 f

19、1函数,创建局部对象 AA(Y),此时形参 a就是 AA(Y)对象,输出 a.value(),即 “Y“, f1 函数执行完之后,需要销毁 AA(Y)对象,调用 AA类的析构函数 AA(),输出 “3“;接着程序调用 f2函数, f2函数创建局部对象的引用 a并初始化指向 AA(),此时引用 a所指对象的成员 c值为“X“,输出为 “X“, f2函数 执行完之后,需要销毁 a所指对象 AA(),调用 AA类的析构函数 AA(),输出 “3“,程序结束;运行结果为: “Y3X3“,答案为 C。 32 【正确答案】 A 【试题解析】 本题考查 if语句, if语句的条件部分不能嵌套 if 语句,所

20、以 A选项错误; B选项就是 if语句嵌套; C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样; D选项也正确。 33 【正确答案】 B 【试题解析】 本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,所以本题中,对象 a为普通对象,执行 a.get()后,会执行默认构造函数,输出 3;对象 b 为常对象,执行 b.get()后,会执行常构造函数,输出 8。 34 【正确答案】 C 【试题解析】 在 E R图中实体集用矩形,属性用椭圆,联系用菱形。 35 【正确答案】 C 【试题解析】 只有类的非静态成员函数才隐含 this 指针,其作用域是类内部,当类的非静态成员

21、函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上 this。所以本题答案为 C。 36 【正确答案】 A 【试题解析】 根据二叉树的 性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个,所以本题中度为 2的结点是 5 1 4个,所以度为 1的结点的个数是 25 5 4 16个。 37 【正确答案】 D 【试题解析】 本题考查运算符重载,重载不能定义新的运算符,且赋值运算符只能重载为成员函数,重载类型转换运算符时,声明返回类型不一定是 void,所以D选项错误。 38 【正确答案】 C 【试题解析】 本题考查提取运算符 ,

22、 cin为对象名,所以 C选项正确。 39 【正确答案】 D 【试题解析】 本题考查 赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以 D选项错误。 40 【正确答案】 C 【试题解析】 只有类的非静态成员函数才隐含 this 指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上 this。所以本题答案为 C。 二、基本操作题 41 【正确答案】 (1) volume = 18; (2)channel = chan; (3)void setVolumeTo(int vol) 【试题解析】 (1)主要考

23、查考生对构造函数的掌握 ,有题目要求输出音量为 18,因此使用构造函数将 volume初始为 18。 (2)主要考查考生对成员函数的掌握 ,满足 if 条件的要设置频道 ,即 clannel=chan。 (3)主要考查考生对 const函数的掌握 ,函数体内存在语句 volume=vol,使变量的值发生改变 ,因此不能用 const定义函数。 三、简单应用题 42 【正确答案】 (1)const Point& p (2)distanceTo(p2) (3)Point(down_right.x, upper_left.y) (4)width() * height() 【试题解析】 (1)主要考查

24、考生对成员函数的掌握 ,根据函数体可知形参应为 const Point& p。 (2)主要考查考生对成员函数的掌握 ,求线段的距离直接调用函数 distanceTo 即可。 (3)主要考查考生对成员函数的掌握 ,函数功能求矩形水平边长度 ,这里程序直接构造Line类型并调用 length 函数。 (4)主要考查考生对成员函数的掌握 ,矩形面积为高乘宽 ,因此 ,调用函数 height和width取得高和宽。 四、综 合应用题 43 【正确答案】 for(inti=1; i0) 当 j大于零时,做相乘操作,即完戍该项的乘方动作 x_value*=x; j-; value+=coefi*x_value; 把 i项的乘方结果乘以该项系数后加进 value中 【试题解析】 题目要求成员 函数 getValue计算多项式的值,多项式中 x的值由参数指定,多项式的值 value为各次项的累加和。由类的定义可知数组 coef 中存储的是各次项的系数,这里使用 for循环来完成题目要求,当次项为 0时,value=coef0。当次项为 1时, value=coef1*x+coef0。依次类推直到 x的最高次数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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