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

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

1、国家二级( C+)机试模拟试卷 82及答案与解析 一、选择题 1 程序流程图中带有箭头的线段表示的是 ( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 下列字符串中,不可以用做 C+标识符的是 ( )。 ( A) y_2006 ( B) _TEST_H ( C) Return ( D) switch 3 有如下程序: #include using namespace std; class test private: int a; public: test() cout #include using namespace std; class MyBag publi

2、c: MyBag(string br,string cr):brand(br),color(cr) +count; MyBag() -count; static int GetCount() return count; private: string brand,color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“,“Gray“),two(“Micky“,“Red“); cout using namespace std; class AA public: AA() cout using nam

3、espace std; int main() int sum = 0; for(int i = 0; i fun(); ( C) Base:fun(); ( D) fun(); 20 下列关于模板形参的表述中,错误的是 ( A)下列关于模板形参的表述中,错误的是 ( B)模板形参表中只有一个参数时,可以省略两边的括号 ( C)可以用关键字 class修饰模板形参 ( D)可以用关键字 typename修饰模板形参 21 下列有关函数重载的叙述中,错误的是 ( )。 ( A)函数重载就是用相同的函数名定义多个函数 ( B)重载函数的参数列表必须不同 ( C)重载函数的返回值类型必须不同 ( D)

4、重载函数的参数可以带有默认值 22 有如下程序: #include using namespace std; class Part public: Part(int x=0):val(x) cout #include using namespace std; int main( ) cout #include using namespace std; class Wheel public: Wheel(string s=“W“):name(s) cout1) return (2*n-1)*x-P(x,n-1)-(n-1)*P(x,n-2)/n; 若执行函数调用表达式 P(1.3,2),函数 P

5、被调用的次数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 30 面向对象方法中,实现对象的数据和操作结合于统一体中的是 ( A)结合 ( B)封装 ( C)隐藏 ( D)抽象 31 有如下程序: #include using namespace std; void fun(int i) cout using namespace std; class Base protected: Base() cout usingnamespacestd; classPoint public: ERROR*found* Point(doublex, doubley)_x(x), _y (y) d

6、oubleGetX()constreturnx; doubleGetY()constreturn-y; ERROR*found* voidMove(doublexOff, double yOff)const _x+=xOff; _y+=yOff; protected: double_x,_y; ; intmain() Pointpt(1 5, 2 5); pt Move(2 5, 1 5); ERROR*found* 以下语句输出 pt成员 _x和 _y的值 cout #include usingnamespacestd; intInvert(char*str) *found* _; whil

7、e(*str!= 0) *found* intdigital=_; num=num*10+digital; *found* returnnum; intmain() char*str=newchar10; coutstr; coutd; m setElement(i, j,d); voidMatrix: transpose() *333*666*intmain()Matrixm; readFromFile(“, m);m show(“Beforetranspose: “); m transpose(); m show(“Aftertranspose: “);writeToFile(“, m);

8、 return0; 国家二级( C+)机试模拟试卷 82答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C)。 2 【正确答案】 D 【试题解析】 本题考查 C+标识符的命名规则,其规则有如下几点: 所有标识符必须由字母、数字或下画线组成 ,且必须由字母或下画线开头; 所有标识符不能使用 C+已有的关键字; 大、小写字母表示不同意义,即代表不同的标识符。选项 C中虽然 return是关键字,但因首字母大、小写不同,也可用于标识符,但不建议使用。故答案为 D。 3 【正确答案】 D 【试题

9、解析】 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象 A(3),对象带着参数,所以执行带参数的构造函数,输出 3,然后执行析构函数,输出 destructor。所以本题答案为 D。 4 【正确答案】 D 【试题解析】 软件测试 是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。 5 【正确答案】 A 【试题解析】 本题考查字符串的定义, A选项中,定义了一个字符,而用字符串赋值,所以错误, C选项定义了字符数组,但是赋值的字符串实际上有 6个字符,所以赋值错误, D选项定义了一个字符串指针数组,赋值错误

10、。 6 【正确答案】 C 【试题解析】 本题考查构造函数和析构函数,以及静态数据成员,定义 one,two时,构造函数被执行了两次,所以 count为 2,后续又 定义了一个指针对象,所以 count加 1变为了 3,当删除那个指针对象时,执行析构函数, count减 1,所以是 2,答案 C正确。 7 【正确答案】 C 【试题解析】 两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系( 1:1)、一对多联系( 1:m)、多对一联系( m:1)、多对多联系( m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系( 1:m),答案选 C。 8 【正确答案】 D 【试

11、题解析】 函数可以不需要返回值,即 void 型的,函数可以没有参数,所以AB 选项正确 ,函数可以作为类的成员函数,所以 C正确, D错误。 9 【正确答案】 D 【试题解析】 本题考查派生类的定义,题目中基类有 4个成员,派生类都继承下来,派生类本身有 2个成员,所以总共有 6个成员, D选项正确。 10 【正确答案】 C 【试题解析】 E R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 11 【正确答案】 D 【试题解析】 C+规定,赋值操作符 “=“、下标操作符 “、调用操作符 “()“和成员访问箭头操作符 “-“必须 重载为成员函数,

12、这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,上面四种操作符不能重载为类的友元函数,另外成员访问操作符 “.“不能重载,答案为 D。 12 【正确答案】 A 【试题解析】 main()函数中首先动态创建 AA 类对象,调用 AA 类构造函数,输出 “A“,创建 BB类对象,调用 BB类构造函数,输出 “B“,使用 delete显式销毁AA类对象,调用 AA类析构函数,输出 “A“,程序结束时,销毁 BB类对象,编译器自动调用 BB类析构函数,输出 “B“,整个程序输出结果为: “ABAB“,答案为 A。 13 【正确答案】 A 【试题解析】 二维表中的行称为元组,候选键

13、(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。公司号唯一标识公司,员工号唯一标识员工,而雇佣需要公司号与员工号同时唯一标识,故表的键(码)为(公司号,员工号),故 A选项正确。 14 【正确答案】 B 【试题解析】 protected 方式继承中,基类的 public和 protected 成员在派生类中为 protected 成员,答案为 B。 15 【正确答案】 D 【试题解析】 模板形参可以由 class 或 typename声明,选项 D错误,答案为D。 16 【正确答案】 D 【试题解析】 程序在 for循环中嵌套 wh

14、ile循环。 for循环的初始条件为, sum、 i初值为 0;进入 for循环之后,首先将 sum累加 i,此时 sum、 i仍为 0; while循环中,若 sum小于 100,则将 sum累加 i,继续 while循环;当 sum不满足条件时,退出循环。由于 sum、 i初值为 0,所以 while循环中 sum始终为 0,始终满足循环条件 sum100,所以程 序进入死循环。答案为 D。 17 【正确答案】 C 【试题解析】 C+中,只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数,一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数;答案为 C。 18 【

15、正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。一个运动项目有很多运动员参加,而一个运动员可以参加多项运动项目,故实体项目和运动员之间的联系是多对多, A选项正确 。 19 【正确答案】 C 【试题解析】 基类 Base和派生类 Derived 中使用同一名字的成员函数 fun,所以在派生类 Derived 的作用域中,派生类 Derived中的 fun函数会屏蔽基类 Base中的 fun 函数,即 Base的 fun 函数对 Derived 不可见,这是因为编译器在查找名字fun时

16、,首先在 Derived 中找到,这样编译器就不再继续查找,所以若想在Derived中调用 Base的 fun 函数,必须显式的说明 fun 函数属于 Base,这里使用作用域运算符访问被屏蔽的 fun,调用语句为: Base:fun();答案为 C。 20 【正确答案】 B 【试题解析】 模板形参表两边的尖括号是不能省略的,及时只有一个形参,答案为 B。 21 【正确答案】 C 【试题解析】 所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重

17、载。所以本题答案为 C。 22 【正确答案】 B 【试题解析】 本题考查带参数的构造函数。本题中定义了一个对象 obj,那么执行其构造函数,初始化 p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行 p1,输出 2,然后执行 p2输出 1,然后输出 3,最后一次输出 312。所以本题答案为 B。 23 【正确答案】 D 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式,所以选择D)。 24 【正确答案】 C 【试题解析】 本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,所以 C

18、选项正确。 25 【正确 答案】 D 【试题解析】 本题考查输入输出格式的控制,可以看出 *12.345和 *34.567字段宽度都为 8,所以遗漏处为 setw(8), D选项正确。 26 【正确答案】 A 【试题解析】 本题考查函数重载相关知识, C+允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。返回值类型对区别重载函数没有意义。 27 【正确答案】 C 【试题解析】 定义 Bicyclebike时,执行 Wheel的构造函数输出 FR,然后执行Bicycle的构造函数输出 G,最后执

19、行析构函数,一次执行派生类的析构函数输出G,再输出基类的析构函数输出 RF,最终输出 FRGGRF,选项 C正确。 28 【正确答案】 C 【试题解析】 E R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 29 【正确答案】 C 【试题解析】 内联函数的函数定义必须出现在内联函数第一次被调用之前;内联函数可以避免函数频繁调用时的开销,提高程序运行效率;在类定义体内部定义的 成员函数,编译器都将其视为内联函数; A、 B、 C正确;内联函数也可以有参数, D错误,答案为 D。 30 【正确答案】 B 【试题解析】 对象的基本特点是:标识唯一性、分

20、类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式, B 选项正确。 31 【正确答案】 B 【试题解析】 程序有两个重载 fun函数,函数原型分别为 fun(int)、 fun(char);main 函数中调用 fun(0),由于 0可以精确匹配原型为 fun(int)的函数,所 以 fun(0)将选择原型为 fun(int)的函数,输出 inti/;同理 fun(c)精确匹配原型为 fun(char)的函数,输出 charc/,程序最终输出结果为: inti/charc/;答案为 B。 32 【正确答案】 B 【试题解析】 i

21、os_base:cur是指文件的当前位置; ios_base:end 指向文件尾部;ios_base:beg指向文件开始; ios_base:out文件操作的文件模式;答案为 B。 33 【正确答案】 D 【试题解析】 本题考查 C+标识符的命名规则, 规定如下: 所有标识符可以由字母、数字和下画线组成,且必须以字母或下画线开头; C+的关键字不能作为标识符; 大、小写字母表示不同意义,即代表不同的标识符,如 mun 和 Mun。A选项是 C+的关键字, B 选项不能以数字开头, C选项 “-“不能用于组成标识符。 34 【正确答案】 C 【试题解析】 本题考查派生类的构造函数和析构函数,在定

22、义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数;对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个派生类对象d1,首先执 行基类的构造函数,输出 A;然后执行派生类的构造函数,输出 B。所以答案为 C。 35 【正确答案】 A 【试题解析】 本题考查 C+标识符的命名规则,其规则有如下几点: 所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头; 所有标识符不能使用 C+已有的关键字; 大、小写字母表示不同意义,即代表不同的标识符。选项 B包含了字符 “,选项 C是关键字,选项 D不能以数字开头。故答案为 A。 36 【正确答案】 D

23、 【试题解析】 3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。 37 【正确答案】 B 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B)。 38 【正确答案】 C 【试题解析】 本题考查运算符重载,不能重载的运算符只有 5个: .、 .*、 :、sizeof、 ?:所以本题选 择 C。 39 【正确答

24、案】 A 【试题解析】 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。 40 【正确答案】 A 【试题解析】 参数传递有三种: 传值 (value),传址 (address),和传引用 (reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值。函数 swap的第一个参数就是传值调用,所以它的值不会改变 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函 数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。函数 swa

25、p 的第二个参数就是传引用调用,可以改变其值,所以执行完函数后, b值与 a值相同,即都是 0, A选项正确。 二、基本操作题 41 【正确答案】 (1)Point(doublex, doubley):一 x(x),一 y(y)或 Point(doublex,doubley)x=x; -y=y; (2)voidMove(doublexOff, doubleyOff) (3)cout(pt GetX(), p1 GetY()end1; 【试题解析】 (1)主要考查的是构造函数的成员初始化列表的语法,在成员列表之前必须加 “: ”。 (2)主要考查成员函数中 const的使用,先看 Move函数的

26、函数体: _x+=xOff; _y+=yOff; 可以看到 Point类的两个私有成员一 x和一 y的值都发生了变化,因此 Move函数不能使用 const,因为只有在函数内不改变类的成员的值时才能使用 const。 (3)主要考查私有成员不能被类外函数调用的知识。题目要求输出 pt成员 _x和 _y的值,从 Point类中的函数 doubleGetX()eonstreturn_x; 和doubleGetY()constretum_y; ,可以分别得到 _x和 _y的值,因此这里使用语句cout(pt GetX(), pt GetY()end1;调用成员函数 GetX()和GetY()来实现题

27、目要求。 三、简单应用题 42 【正确答案】 (1)int num = 0 (2)*str (3)str+; 【试题解析】 (1)主要考查考生对成员函数的掌 握 ,num用于存放累加值 ,因此这里要定义 num同时初始化为 0。 (2)主要考查考生对指针的掌握 ,对整型变量 digital赋值字符串 str的第一个字符 ,即将第一个字符的 ASC 码赋给 digital。 (3)考查指针的操作 ,while循环要累加代表整数的字符 ,因此这里指针要指向下一个字符。 四、综合应用题 43 【正确答案】 for(int i = 0; i M; i+) for(int j = 0; j i; j+) int temp = arrayij; arrayij = arrayji; arrayji = temp; 【试题解析】 主要考查考生对二维数组的掌握 ,程序用二维数组表示矩阵 ,编写矩阵转置功能。要实现矩阵的转置 ,只要使矩阵中的元素 arrayij与 arrayji交换 ,程序使用循环语句遍历矩阵元素 ,外层循环用于控制行下标 ,内层循环用于控制列下标。

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

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

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