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

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

1、国家二级( C+)机试模拟试卷 116及答案与解析 一、选择题 1 下列排序方法中,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 2 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 3 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 “是程序调 试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,

2、排除测试的随意性 4 下列叙述中正确的是 ( )。 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 5 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 6 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 7 下列排序方法中,最坏情况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 8 软件按

3、功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 c)教务管理系统 ( C)汇编程序 9 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 ”是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 10 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 ( )。 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦合性提高内聚性有利于提高模块的独立性 ( C)耦合性

4、是指一个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 11 数据库应用系统中的核心问题是 ( )。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D) 数据库管理员培训 12 有两个关系 R, S如下: 由关系 R通过运算得到关系S,则所使用的运算为 ( )。 ( A)选择 ( B)投影 ( C)插入 ( D)连接 13 将 E-R图转换为关系模式时,实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 c)关系 ( C)域 14 字面常量 42、 4 2、 42L的数据类型分别是 ( )。 ( A) long、 double、

5、int ( B) long、 float、 int ( C) int、 double、 long ( D) int、 float、 long 15 执行下列语句段后,输出字符 “水 ”的个数是 ( )。 for(int i=50; i1; -i) cout using namespace std; class A public: static int a; void init()a=1; A(int a=2)init(); a+; ; int A: a=0; A obj; int main() cout using namespace std; class test private: int

6、a; public: test()tout using namespace std; class Point public: static int number; public: Point()number+; 一 Point()number-; ; int Point: number=0: int main() Point*ptr; P0int A, B; Point*ptr_point=new Point3; ptr=ptr_pomt; Point C: eout using namespaee std; class Sample friend long fun(Sample s); pu

7、blic: Sample(10ng a)x=a; private: long x; ; long fun(Sample s) if(s x using namespaee std; class A public: A(int i)x=i; void dispa()eout using namespace std; class Music public: void setTitle(char * str)strcpy(title, str); protected: char type10; private: char title20; ; class Jazz: public Music pub

8、lic: void set(char*str) strcpy(type, “Jazz“); strcpy(title, str); ; 下列叙述中正确的是 ( )。 ( A)程序编译正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 和 都出错 39 有如下程序: #include using namespaee std; class Book public: Book(char*t=“)strcpy(title, t); private: char title40; ; class Novel: public Book public: Novel(cha

9、r* t=“): Book(t) char ag Category()constreturn“文学 “; ; int main() Book*pb; pb=new Novel(); coutCategory(); delete pb; return 0; 若程序运行时输出结果是 “文学 ”,则横线处缺失的语句是 ( )。 ( A) char ag Category(); ( B) char*Category()const; ( C) virtual char*Category()const; ( D) virtual char木 Category()const=0; 40 如下函数模板: te

10、mplateT square(T x)retum x * x; 其中 T是 ( )。 ( A)函数形参 ( B)函数实参 c)模板形参 ( C)模板实参 41 下列函数模板的定义中,合法的是 ( )。 ( A) templateT abs(T x)return xT abs(T x)retum xabs(T x)return x using namespace std; class Studentlnfo protected: ERROR *found* char Name; int Age; int ID; int CourseNum; float Record; public: Stude

11、ntlnfo(char*name, int Age, int ID, int courseNum, float record); ERROR *found* void Studentlnfo() float AverageRecord() return Record CourseNum; void show()const coutID=ID; CourseNum=courseNum; Record=record; int main() Studentlnfo st(“Smith“, 21, 99999, 12, 970); st show(); return 0; 三、简单应用题 45 请使用

12、 VC6或使用 答题 菜单打开考生文件夹 proj2下的工程 proj2,该工程中包含一个程序文件 main cpp,其中有坐标点类 point、线段类 Line和三角形类Triangle的定义 ,还有 main函数的定义。程序中两点间距离的计算是按公式d= 实现的,三角形面积的计算是按公式f= 。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: Side 1:9 43398 Side 2: 5 Side 3: 8 area: 20 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 #include

13、#include using namespace std; class Point坐标点类 public: const double x, y; Point(double x=0 0, double y=0 0): x(x), y(y) *found* double distaneeTo(_) const 到指定点的距离 return sqrt(x-p x)*(xp x)+(yp y)*(yp y); ; class Line线段类 public: const Point p1, p2;线段的两个端点 *found* Line(Point pl, Point p2): _ double len

14、gth()eonstreturn p1 distanceTo(p2); 线段的长度 ; class Triangle三角形类 public: eonst Point p1, p2, p3;三角形的三个顶点 *found* Triangle(_): p1(p1), p2(p2), p3(p3) double lengthl()eonst边 p1, p2的长度 retum Line(p1, p2) 1ength(); double length2()eonst边 p2, p3的长度 return Line(p2, p3) 1ength(); double length3()eonst边 p3, p

15、l的长度 retum Line(p3, p1) 1ength(); double area()eonst三角形面积 *found* double s=_-; rettlm sqrt(s*(slengthl()*(slength2()*(slength3(); ; int main() Triangle r(Point(0 0, 8 0), Point(5 0, 0 0), Point(0 0, 0 0); eout 四、综合应用题 46 请使用 “答题 ”菜单或使用 VC6打开考生文件夹下的工程 proj3,其中定义了Septinary类 (七进制类 ),来表示一个七进制的数及其相关操作。和十

16、进制的数 “逢十进一 ”类似,七进制的数定义为 “逢七进一 ”。 这里对 Septinary类的数据成员做一下说明: char*data;存放七进 制数的每一位数, data0为最高位。这里假设七进制的位数不超过 99位。 ereateSeptinary函数由构造函数调用,用于将作为参数传入的十进制数转化为七进制数,并将七进制数的每一位存入 data数组中。请编写ereateSeptinary函数使程序可以正确运行。注意: Septinary类中提供了humberToChar成员函数,将一个 0, 6之间的数转化为对应的 ASCII码值。在main函数中给出了一组测试数据,此情况下程序的输出应

17、该是: 243 注意:只需在 *333*和 *666*之间填入所编写的若干语句,不要改动程序中的其他内容。 #include“Septinary h“ Septinary: Septinary(int num) this-data=new char100; this-createSeptinary(hum); Septinary:一 Septinary() if(data!=NULL) deletedata; void Septinary: createSeptinary(int hum) *333* *666* char Septinary: numberToChar(int Bum) if

18、(Bum7) cout #include using namespaee std; class Sepfinary 七进制类 pfivate: char*data; public: Septinary(int num); Septinary(); void createSeptinary(int num); char numberToChar(int hum); void show(); ; void writeToFile(eonst char*path); 国家二级( C+)机试模拟试卷 116答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 冒泡排序与简单插入排序与简单选择排序

19、法在最坏情况下均需要比较 n(n 1)/2次,而堆排序在最坏情况下需要比较的次数是 nlog2n。 2 【正确答案】 C 【试题解析】 编译软件、操作系统、汇编程序都属于系统软件,只有 C)教务管理系统才是应用软件。 3 【正确答案】 A 【试题解析】 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项 A)错误。程序调试的基本步骤有: 错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为 Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的

20、程序、穷举测试不可能、妥善保存测试计划等文件。 4 【正确答案】 D 【试题解析】 栈是先进后出的线性表,所以 A错误;队列是先进先出的线性表,所以 B错误;循环队列是线性结构的线性表,所以 C错误。 5 【正确答案】 A 【试题解析】 栈支持子程序调用。栈是一 种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为 A。 6 【正确答案】 C 【试题解析】 根据二叉树的基本性质 3:在任意一颗二叉树中,度为 O的叶子结点总是比度为 2的结

21、点多一个,所以本题中是 5+1=6个。 7 【正确答案】 D 【试题解析】 冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较 n(n1) 2次,而堆排序在最坏 情况下需要比较的次数是 nlog2n。 8 【正确答案】 C 【试题解析】 编译软件、操作系统、汇编程序都属于系统软件,只有 C教务管理系统才是应用软件。 9 【正确答案】 A 【试题解析】 软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项 A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为 Debug,即排错。软件测试的基本准则有:所

22、有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中 的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。 10 【正确答案】 B 【试题解析】 模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以 A错误, B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以 C与 D错误。 11 【正确答案】 A 【试题解析】 数据库应用系统中的核心问题

23、是数据库的设计。 12 【正确答案】 B 【试题解析】 投影运算是指对于关系内的域指定可引入新的运算。本题中 s是在原有关系 R的内部进行的,是由 R中原有的那些域的列所组成的关系。所以选择B。 13 【正确答案】 C 【试题解析】 从 E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系, E-R图中属性也可以转换成关系的属性。 14 【正确答案】 C 【试题解析】 本题考查整型变量的类型和浮点变量的类型, 42默认为 int型数据, 42后面加上 L后,表示 long型数据, 4 2默认为 double 型数据。 15 【正确答案】 B 【试题解析】 本题考查 for循环语句,

24、 -i表示用之前先减 1,那么这个 for循环语句只有 50到 2时才会输出 “*”,所以总共输出 49次。 16 【正确答案】 A 【试题解析】 本题考查指针和引用。 为引用,使用正确; 中 &r表示一个地址,而 *p 已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。 17 【正确答案】 D 【试题解析】 本题考查 C+基本控制结构, A、 B、 C三个选项中的大括号不 是必须的,而 D选项中的函数体必须使用大括号。 18 【正确答案】 D 【试题解析】 本题考查 C+关键字,属于基本常识,显然 D选项不正确。 19 【正确答案】 C 【试题解析】 所谓函数重载是指同一个函数名可以

25、对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为 C。 20 【正确答案】 A 【试题解析】 重载运算符的规则如下: C+不允许用户 自己定义新的运算符,只能对已有的 C+运算符进行重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为

26、A。 21 【正确答案】 A 【试题解析】 函数参数的 3种传递方式: 将变量名作为形参和实参,即传值方式; 传递变量指针; 引用形参。其中 B、 C选项都是传递变量指针, D选项为引用 形参,所以本题答案为 A。 22 【正确答案】 D 【试题解析】 非成员函数重载用友元函数的形式实现, “一 ”运算符重载分为前置和后置两种重载方式。用友元函数来实现 “-”运算符的重载时,前置 “-”运算符的重载的一般格式为: friendoperator-(ClassName&);后置 +运算符的重载的一般格式为: friendoperator-(ClassName&, int)。所以答案为 D。 23

27、【正确答案】 C 【试题解析】 函数参数的 3种传递方式: 将变量 名作为形参和实参,即传值方式; 传递变量指针; 引用形参。本题中实参 x为传值方式,所以 x的值不会改变; y为引用形参,所以会改变。故本题答案为 C。 24 【正确答案】 C 【试题解析】 C+不能重载的运算符只有 5个,即 “ ”、 “*”、 “: ”、 “?: ”、“sizeof”,故本题答案为 C。 25 【正确答案】 C 【试题解析】 重载运算符的规则如下: C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的

28、优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 c。 26 【正确答案】 A 【试题解析】 类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。 27 【正确答案】 B 【试题解析】 本题考查构造函数,本题中对类中的 a数据成员先是赋值为 0,当定义了对象 obj时,执行构造函数,将 a的值变为了 1,所以输出 l。 28 【正确答案】 B 【试题解析】 类的成员访问权限有 3种: public(公用 )

29、、 protected(保护 )、private(私有 )。 29 【正确答案】 D 【试题解析】 在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。 30 【正确答案】 C 【试题解析】 本题考查 3种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问基类的私有成员。本题答案为 C。 31 【正确答案】 B 【试题解析】 本题考查公用继承 对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即

30、 a为私有变量。所以本题答案为 B。 32 【正确答案】 D 【试题解析】 本题考查默认构造函数和带参数的构造函数以及析构函数,本题中定义了一个对象 A(3),对象带着参数,所以执行带参数的构造函数,输出 3,然后执行析构函数,输出 destructor。所以本题答案为 D。 33 【正确答案】 B 【试题解析】 本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a以及对象数组 b2,共执行 3次构造函数,对象指针不调用构造函数。所以本题答案为 B。 34 【正确答案】 C 【试题解析】 本题考查默认构造函数,题目中定义一个对象 A、 B以及对象数组Point3,又定义了对象 C,共执

31、行 6次构造函数, number变为了 6,所以本题答案为 C。 35 【正确答案】 C 【试题解析】 本题考查默认构造函数,当 i-O、 l时, fun(Sample(i)为 1;当 i-2时, fun(Sample(i)为 2;当 i=3时, fun(Sample(i)为 6;当 i=4 时, fun(Sample(i)为 24;当 i=5时, fun(Sample(i)为 120。所以总和为 154。 36 【正确答案】 C 【试题解析】 本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。在受保护继承

32、中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中 Derivedl 公用继承 Base,所以 编译正确, Derived2保护继承 Base,所以 编译不正确。 37 【正确答案】 C 【试题解析】 本题考查派生类的构造函数和基类的构造函数。本题中类 B继承类 A,定义了一个类 B的对象并初始化 b(2),此时会执行类 B 的构造函数,执行的结果是继承类 A中的私有成员赋值了 12,给类 B自身的数据成员 x赋值了 2,执行 b dispb()后,输出类 A的私有成员 x,输出类 B 自身的数据成员,所以答案为 C。 38 【正确答案】 C 【试题解析】 本题

33、考查公用继承和保护继承对基类成员的访问属性。公 用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。保护成员不能被类外访问,但是可以被派生类的成员函数访问。 Type成为派生类的保护成员,可以被派生类访问, title仍为基类私有,派生类不能直接访问。所以答案为 c。 39 【正确答案】 D 【试题解析】 本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被 “初始化 ”为 0的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对 象,然后通过该指针调用虚函数,实现多

34、态性的操作。所以本题答案为 D。 40 【正确答案】 C 【试题解析】 本题考查模板函数的基本概念,根据模板函数的定义, T 是模板形参,所以答案为 c。 41 【正确答案】 A 【试题解析】 本题考查模板函数的基本概念,根据模板函数的定义,所以答案为A。 42 【正确答案】 B 【试题解析】 本题考查流对象 cin,属于基础知识, cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为 B。 43 【正确答案】 A 【试题解析】 iomanip 中定义的操纵符包括: setfill(ch)用 ch 填充空白、setprecision(n)将浮点精度置为 n、 setw(w)、读写

35、w 个字符的值 showpoint设置小数点。 二、基本操作题 44 【正确答案】 (1)char*Name; (2) Studentlnfo() (3)Studentlnfo: Studentlnfo(char*name, int age, int ID, int courseNum, float record) 【试题解析】 (1)主要考查考生 对动态数组的掌握,由题目可知 Name应该指向一个动态数组,而不是一个有效 char型字符,因此要定义成 char型指针。 (2)主要考查考生对析构函数的掌握,析构函数不需要函数返回类型,应把 void去掉。 (3)主要考查考生对构造函数定义的掌握

36、,构造函数也要使用作用域符号“: ”。 三、简单应用题 45 【正确答案】 (1)const Point&p (2)p1(p1), p2(p2) (3)Point p1, Point p2, Point p3 (4)(lengthl()+length2()+length3() 2 【试题解析】 (1)主要考查考生对函数形参的掌握,由函数的注释可知有本坐标点到达某个坐标点类的距离,再根据函数体 return sqrt(xp x)*(xp x)+(yp y)*(yp y);可知,该坐标点类名为 p,因此可以知道形参为 Point&p,为了不改变该坐标点的值,前面要加上 consto (2)主要考查

37、考生对构造函数的掌握,对于常变量型私有成员 const Point p1,p2,只能用成员初始化列表进行赋值。 (3)主要考查考生对构造函数的掌握,由空格后面的语句: p1(p1), p2(p2),p3(p3)可知,该构造函数需要进行成员列表初始化,再看类的私有成员constPoint p1, p2, p3,可知 p1, p2, p3是 Point类型,因此形参为: Point p1,Point p2, Point p3。 (4)主要考查考生对成员函数的掌握,根据函数注释,可知本函数要求计算三角形面积,再看题目的提示: s=(a+b+c) 2。哥知空格处要填韵是三角形韵三条边之和除以 2,而求

38、边长的函数已经给出,这里直接调用即可。 四、综合应用题 46 【正确答案】 for(int i=count-1; i=pes; i-) elemi+1=elemi; elempos=data; count+: 【试题解析】 主要考查考生对对象处理的掌握,函数 insert的功能是将一个指定的整数 data插入到列表的指定位置 pos 处,原位置处的及其后的所有元素依次向后顺移一个位置。首先通过比较 count与 MAx_SIZE 判断存储空间是否已满,若存储空间已满,直接返回;然后判断插 入的位置是否在当前数组最后元素之后,若是,则紧贴最后元素之后插入新元素即可;最后使用 for循环,将 pos位置及其之后的所有元素向后顺移一位,再将 data插入 pos位置,同时更新 count的值。

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

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

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