1、国家二级 C+机试(选择题)模拟试卷 65及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)算法的时间复杂度与空间复杂度没有直接关系 2 下列叙述中正确的是 ( A)循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中的元素个数随队尾指针的变化而动态变 化 ( D)以上说法都不对 3 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,则该
2、二叉树中的总结点数为 ( A) 219 ( B) 229 ( C) 230 ( D) 231 4 对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 ( A) 9 ( B) 10 ( C) 45 ( D) 90 5 构成计算机软件的是 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 6 软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是 ( A)测试 ( B)设计 ( C)可行性研究 ( D)实现 7 下面不能作为结构化方法软件需求分析工具的是 ( A)系统结构图 ( B)数据字典 (DD) ( C)数据流程图 (DFD
3、图 ) ( D)判定表 8 在关系模型中,每一个二维表称为一个 ( A)关系 ( B)属性 ( C)元组 ( D)主码(键) 9 若实体 A和 B是一对多的联系,实体 B和 C是一对一的联系,则实体 A和 C的联系是 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的 操作是 ( A)选择 ( B)投影 ( C)交 ( D)并 11 Windows环境下,由 C+ 源程序文件编译而成的目标文件的扩展名是 ( A) obj ( B) exe ( C) cpp ( D) out 12 字符串 “8+a=bnr“ 的
4、长度为 ( A) 14 ( B) 7 ( C) 9 ( D) 16 13 有如下程序: #include using namespace std; int main() int f,f1=1,f2=1; for(int i=0;i using namespace std; int main() int a10; for(int* p=a;p using namespace std; void f1(int x=y; y=z; void f2(int x, int y) int z=x+y; x=y; y=z; int main() int x=10,y=26; f1(x,y); f2(x,y)
5、; cout using namespace std; class XA int a; public: static int b; XA(int aa):a(aa) b+; XA() int get() return a; ; int XA:b=0; int main() XA d1(2),d2(3); cout #include using std:cout; class Point public: friend double distance(const Point Point(int xx=0,int yy=0): x(xx), y(yy) private: int x, y; ; do
6、uble distance(const Point int main() Point p0,p1(3,4); cout #include using namespace std; class Wheel public: Wheel(string s=“W“):name(s) cout using namespace std; class Point public: int GetXY() return x+y; protected: void SetXY(int a,int b) x=a;y=b; private: int x,y; ; class Circle:public Point pu
7、blic: int GetR() return radius; int GetAll() return GetXY()+radius; protected: void SetR(int r) radius=r; private: int radius; ; int main() Circle c; c.GetXY(); / c.SetXY(3,4); / c.GetR(); / c.GetAll(); / return 0; 在标注号码的语句行中存在语法错误的是 ( A) ( B) ( C) ( D) 35 有如下程序: #include using namespace std; class
8、Appliance public: Appliance() Appliance() cout #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtual string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woo
9、f“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal 若要求以 int 型数据 9 作为函数实参调用该模板,并返回一个 double 型数据,则该调用应表示为 ( A) FUN(9) ( B) FUN ( C) FUN(9) ( D) FUN(double) 39 下列有关 C+ 流的表述中,错误的是 ( A) C+ 流操作符 setw 设置的输出宽度永久有效 ( B) C+ 流操作
10、符 endl 可以实现输出的回车换行 ( C)利用 C+ 流处理文件 I/O 时,要包含头文件 fstream ( D)利用 C+ 流进行输入操作时, eof() 函数用于检测是否到达文件尾 40 有如下 4个语句: coutAsetfill(*)leftsetw(7)Bendl; coutsetfill(*)leftsetw(7)ABendl; coutAsetfill(*)rightsetw(7)Bendl; coutsetfill(*)rightsetw(7)ABendl; 其中执行时显示 A*B 的是 ( A) 和 ( B) 和 ( C) 和 ( D) 和 国家二级 C+机试(选择题)
11、模拟试卷 65答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为 D。 2 【正确答案】 A 【试题解析】 在循环队列中,用队尾指针 rear指向 队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化, A正确。 3 【正确答案】 B 【试题解析】 二叉树中,度为 0的节点数等
12、于度为 2的节点数加 1,即 n2=n0-1,叶子节点即度为 0,则 n2=79,总结点数为 n0+n1+n2=80+70+79=229,答案为B。 4 【正确答案】 C 【试题解析】 冒泡法是在扫描过程中 逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选 C。 5 【正确答案】 D 【试题解析】 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选 D。 6 【正确答案】 C 【试题解析】 开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计 3个阶
13、段,实施则包括编码和测试两个阶段, C不属于开发阶段。 7 【正确答案】 A 【试题解析】 结构化 方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。 8 【正确答案】 A 【试题解析】 关系模型采用二维表来表示,即每个二维表称为一个关系。 9 【正确答案】 B 【试题解析】 A和 B为一对多的联系,则对于 A中的每一个实体, B中有多个实体与之联系,而 B与 C为一对一联系,则对于 B中的每一个实体, C中之多有一个实体与之联系,则可推出对于 A中的每一个实体, C中有多个实体与联系,所以为一对多联系。 10 【正确答案】 D 【试题解析】 关系 T中的元素与关系 R和关系 S中
14、不同元 素的总和,因此为并操作。 11 【正确答案】 A 【试题解析】 C+程序开发过程包括编辑、编译、链接、运行和调试。编译完成后链接之前会生成后缀为 obj的目标文件,所以答案为 A。 12 【正确答案】 B 【试题解析】 本题考查字符常量中转义字符常量, n,r为转义字符,只占一个字节,所以该字符串的长度为 7。选项 B正确。 13 【正确答案】 D 【试题解析】 本题考查 for循环,当 i为 0时, f1变为 1, f2变为 3;当 i为 2时, f1变为 3, f2变为 5;当 i为 4时, f1变为 5, f2变为 11,即 f为 11,所以答案为 D。 14 【正确答案】 C
15、【试题解析】 本题考查使用指针对一维数组赋值,可以看出一维数组的元素值为下标 *2+1,所以 a2=2*2+1=5,a8=8*2+1=17,那么 a2+a8=22。 C选项错误。 15 【正确答案】 D 【试题解析】 本题考查除号 /,当除号两边都是整数时,得出的结果为整数, 2/3等于 0,所以结果为 0, D选项正确。 16 【正确答案】 B 【试题解析】 函数 f1调用 f2,如果 f2定义在 f1之后,那么必须将 f2的函数原型声明放在 f1之前,如果 f2定义在 f1之前,那么不需要 f2函数原型声明。所以B选项正确。 17 【正确答案】 D 【试题解析】 本题主要考查运算符重载函数
16、,运算符重载函数既可以定义为类的成员函数也可以定义为类的友元函数,所以 D选项错误。 18 【正确答案】 D 【试题解析】 在类体中定义的成员函数, C+系统会自动将它们作为内联函数处理,而在类外定义的成员函数,系统并不把它们默认为内联函数,使用 inline也是内联函数,所以共有 2个内联函数 f1和 f4, D选项正确。 19 【 正确答案】 B 【试题解析】 本题考查重载减法运算符,重载运算符的一般形式为: 函数类型 operator 运算符名称 (参数列表 ) 对运算符的重载处理 根据定义规则,只有 B选项正确。 20 【正确答案】 C 【试题解析】 参数传递有三种: 传值 (valu
17、e),传址 (address),和传引用 (reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,函数 f2就属于传值调用,所以不会改变 y的值。 传址时父函数将变量的地址传递给子函数,这样 子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。 f1函数属于传引用调用,所以 y的值在执行完函数后变为了 36, C选项正确。 21 【正确答案】 A 【试题解析】 本题考查类型转换函数,其一般形式如下: operator 类型名 () 实现转换的语句
18、 在函数名前面不能指定函数类型,函数没有参数,所以 A选项正确。 22 【正确答案】 D 【试题解析】 本题考查运算符重载,不能重载的运算符只有 5个 : .、 .*、 :、sizeof、 ?:。 C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数,只有 D选项正确。 23 【正确答案】 D 【试题解析】 本题考查如何引用类的数据成员,本题中要引用类的非静态数据成员,可以直接引用,所以 A选项正确。 24 【正确答案】 C 【试题解析】 本题考查类的静态数据成员,题目中定义了类的静态数据成员 b,当执行定义两个对象时执行构造函数,构造函数执行 b+,所以 b最
19、终为 2,而d1.get()为 2, d2.get()为 3,最终 结果为 7, C选项正确。 25 【正确答案】 C 【试题解析】 本题考查类的析构函数的定义,析构函数 (destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做 “清理善后 “ 的工作(例如在建立对象时用 new开辟了一片内存空间,应在退出前在析构函数中用 delete释放)。 以 C+语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符,例如 stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有
20、一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以 C选项错误。 26 【正确答案】 D 【试题解析】 本题考查继承使用的关键字,属于基础知识,使用 D选项为继承使用的关键字。 27 【正确答案】 A 【试题解析】 运行时多态与虚函数有关。派生类的对象可以认为是基类的对象,但基类的对象不是其派生类的对象。因此, C+允许一个基类对象的指针指向其派生类对象,但不允许一个派生类对象指向其基类对象。在调用虚函数的过 程中指针和引用会起到一定的作用。 28 【正确答案】 C 【试题解析】 本题考查友元函数,本题中定义的 show不能直接访问
21、 Base里的私有成员。 29 【正确答案】 B 【试题解析】 本题考查构造函数的定义,构造函数名为类的名称,所以只有 B选项正确。 30 【正确答案】 D 【试题解析】 当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,所以 正确使用 this指针。 31 【正确答案】 D 【试题解析】 本题 考查构造函数的应用,题目中定义对象 p0时,执行默认构造函数,得出 x和 y都为 0,定义对象 p1(3,4),得到 x和 y分别是 3,4,执行distance(p1,p0)后得出 5。 32 【正确答案】 C 【试题解析】 定义 Bicycl
22、e bike时,执行 Wheel的构造函数输出 FR,然后执行Bicycle的构造函数输出 G,最后执行析构函数,一次执行派生类的析构函数输出G,再输出基类的析构函数输出 RF,最终输出 FRGGRF,选项 C正确。 33 【正确答案】 D 【试题解析】 本题考查派生类的定义, 题目中基类有 4个成员,派生类都继承下来,派生类本身有 2个成员,所以总共有 6个成员, D选项正确。 34 【正确答案】 B 【试题解析】 本题考查派生类对基类成员的访问属性,派生类公用继承基类的保护成员,在派生类中也变为了保护成员,只能在派生类内访问,不能在类外访问,所以 B选项错误。 35 【正确答案】 B 【试
23、题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数,4、执行基类的析构函数,所以本题中定义 room1时,程序结束时先调用派 生类析构函数输出 T41,然后执行基类的析构函数输出 A,而定义对象指针,并不会调用构造函数,所以什么也不输出,所以结果为 T41A, B 选项正确。 36 【正确答案】 B 【试题解析】 本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行类class的 Type函数,输出 Dog,然后输出 speak,然后执行派生类的 Speak函数输出 Voice,最后输出 -,同理 cat输出类似
24、,所以结果为 B选项正确。 37 【正确答案】 D 【试题解析】 函数模板是一个抽象函数,使用模板定义的函 数可以有返回值,函数模板的虚拟类型参数并不是函数参数。只有 D选项正确。 38 【正确答案】 C 【试题解析】 本题中要求返回值为 double行,那么 T1就是 double型, T2默认为 int,所以只有 C选项正确。 39 【正确答案】 A 【试题解析】 C+操作符 endl可以实现输出的回车换行的功能;在处理文件 I/O时,要包含头文件 iostream,是为了说明引用的参数或函数的位置;函数 eof()用来检测是否到达文件尾,如果到达件尾返回非 0值,否则返回 0。 40 【正确答案】 C 【试题解析】 本题考查输入输出格式的控制,只有 和 可以输出符合题目要求的格式,所以 C选项正确。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1