1、国家二级( C+)笔试模拟试卷 195及答案与解析 1 算法的空间复杂度是指 ( )。 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 下列叙述中正确的是 ( )。 ( A)一个逻辑数据结构只能有一种存储结构 ( B)逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 数据处理的效率 3 下列关于类、对象、属性和方法的叙述中,错误的是 ( )。 ( A)类是对一类相似对象的描述
2、,这些对象具有相同的属性和方法 ( B)属性用于描述对象的状态,方法用于表示对象的行为 ( C)基于同一个类产生的两个对象可以分别设置自己的属性值 ( D)通过执行不同对象的同名方法,其结果必然是相同的 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)可行性分析报告 ( B)集成测试计划 ( C)概要设计说明书 ( D)软件需求规格说明书 5 关于结构化 程序设计原则和方法的描述错误的是 ( )。 ( A)选用的结构只准许有一个入口和一个出口 ( B)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现 ( C)不允许使用 GOTO语句 ( D)语言中所没有的控制结构,应该采用
3、前后一致的方法来模拟 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 国家二级( C+)笔试模拟试卷 195答案与解析 1 【正确答案】 D 【试题解析】 一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行 过程中所需要的额外空间。 2 【正确答案】 D 【试题解析】 数据的存储结构是指
4、数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。 3 【正确答案】 D 【试题解析】 对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可以导致完全不同的行为,该现象称为多态性,这种消息可以是同名的方法。类是具有共同属性、共同方法的对象的集合。 4 【正确答案】 D 【试题解析 】 软件的生命周期分为计划、开发和运行 3个时期。其中计划期包括问题定义和可行性研究。运行的任务是软件维护。开发期包括分析、设计和实施:分析即为需求分析。需求分析的最终结果是生成软件需要规格说明书
5、,可以为用户、分析人员和设计人员之间的交流提供方便。 5 【正确答案】 C 【试题解析】 限制使用 GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用 GOTO语句。其他三项为结构化程序设计的原则。 6 【正确答案】 B 7 【正确答案】 B 【试题解析】 根据二分法查找法需要两次 : 首先将 90与表中间的元素 50进行比较,由于 90大于 50,所以在线性表的后半部分查找。 第二次比较的元素是后半部分的中间元素,即 90,这时两者相等,即查找成功。 8 【正确答案】 D 【试题解析】 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表
6、的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。 9 【正确答案】 C 【试题解析】 通俗而言,所谓 “元 ”就好像表格中有多少列, “元组 ”就好像表格中有多少行。 10 【正确答案】 B 【试题解析】 数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。其中逻辑设计的主要工作是将 E R图转换为关系模式。 11 【正确答案】 B 【试题解析】 此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容
7、。因此本题中,首先调用基类构造函数输出 A,然后调用子对象的构造函数输出 B, p=new A再调用类 A的构造 函数输出 A;析构函数的调用顺序和构造函数的调用顺序相反。 12 【正确答案】 C 13 【正确答案】 A 14 【正确答案】 D 【试题解析】 c+语言中析构函数为符号 “ ”加类名,且析构函数没有返回值和参数,故前不加 void关键字。所以正确的形式应该是 Myclass()。 15 【正确答案】 B 【试题解析】 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它的一般格式是:类名:类名 (cons类名引用对象名 )。当一个类的对象赋值给该类
8、的 另一个对象时,是赋值而不是创建对象,所以不会调用拷贝构造函数。 16 【正确答案】 B 【试题解析】 拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造函数。 17 【正确答案】 D 【试题解析】 因题目中定义的指针 value是指向变量 i的,所以直接利用语句MyClass(int i)valuei,new int(i); 对 value进行赋值即可。 18 【正确答案】 B 19 【正确答案】 A 20 【
9、正确答案】 B 【试题解析】 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。 21 【正确答案】 B 【试题解析】 因为对象 a被定义为常对象,所以 a disp()语句调用的是类的常成员函数 void dispoconst,输出的结果是 disp2。 22 【正确答案】 C 【试题解析】 因为 static void change()为静态函数,静态函数主要访问静态数据,不访问非静态数据。所以函数中访问了数据 y,所以下划线的数据类型应对应为 static。 23 【正确答案】 C 24 【正确答案】 D 【试题解析】 声明
10、派生类的一般形式为: class派生类名:【继承方式】基类名。其中继承方式包括: public, private, protected,而 virtual为 c+中的关键字。虚函数的使用方法是在基类用 virtual声明成员函数为虚函数。 25 【正确答 案】 A 26 【正确答案】 B 27 【正确答案】 D 【试题解析】 如果派生类私有继承基类,不能访问基类中的私有成员,所以A)、 B)是错误的。派生类是对基类的具体化,所以 c)错误的。如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类,即选择 D)。 28 【正确答案】 C 【试题解析】 在建立派生类的时候,并不是简单地把基类
11、的私有成员直接作为派生类的私有成员,把基类的公用成员直接作为派生类的公用成员。涉及如何确定基类的成员在派生类中的访问属性问题,不仅要考虑对基类成员所声 明的访问属性,还要考虑派生类所声明的对基类的继承方式,根据这两个因素共同决定基类成员在派生类中的访问属性。所以本题选择 c)。 29 【正确答案】 C 30 【正确答案】 D 【试题解析】 由主函数 main入手,定义了类 D对象 obj。其中 D为类 B和 C的公有继承, A是 C的虚基类。题目中要求的输出结果为 “ABCD”,依次为类 A,类 B,类 c类 D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证 A只被继承一
12、次,输出一个 A,所以不但需要声明 A为 C的虚基类,同样也要声明 A为 B的虚基类。 31 【正确答案】 A 【试题解析】 在基类中用 virtual声明成员函数为虚函数,所以 A是正确的。纯虚函数是在声明虚函数时被 “初始化 ”为 0的虚函数。纯虚函数是一种特殊的虚函数,它没有具体的实现。静态数据成员函数只能在类外进行初始化。 32 【正确答案】 C 【试题解析】 如果在类以外的其他地方定义了一个函数,在类体中用 friend对该函数进行声明,此函数就称为本类的友元函数。因为函数为 void fun(),根据友元定义补全语句为 “friend voidfun(); ”。 33 【正确 答案
13、】 C 34 【正确答案】 C 【试题解析】 此题考查的知识点是字面常量。对于整型字面常量,只要没有超过c+中整数所能表示的范围, c+将自动按整数来存储此数,也可以通过在整型字面常量后添加 u或 1来指定无符号整数或长整数来存储;对于实型字面常量, c+将自动按照双精度数来存储,也可以通过在实型字面常量后添加 f来指定按单精度数存储。 35 【正确答案】 C 【试题解析】 此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般 函数的参数压栈和退栈操作,所以选项 A)错误;即使没有使用 inline说明,编译器也会将在类的说明部分定
14、义的函数认定为内联函数,所以选项 B)错误;内联函数只是比普通函数有更高的执行效率。 36 【正确答案】 线性结构 【试题解析】 一个数据结构是线性结构还是非线性结构,判断依据是数据结构前后件关系的复杂程度,而与其所使用的存储结构是没有关系的。在一个非空的队列中,每一个元素只有一个前件和后件,因此它属于线性结构。 37 【正确答案】 队尾 【试题解析】 在队列中,允许插入的一端叫做 “队尾 ”,允许删除的一端叫做 “队头 ”。 38 【正确答案】 32 39 【正确答案】 22, 19, 13, 6, 24, 38, 43, 32 【试题解析】 根据快速排序的定义,取第一个元素 24为依据,将
15、小于 24的置于其前面,大于 24的置于其后面,则可得到快速排序第一趟的结果。 40 【正确答案】 19 41 【正确答案】 (*p)(x, y) 【试题解析】 一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址 (或称入口地址 )赋予一个指针变量,使该指针变量 指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为 “函数指针变量 ”。函数指针变量定义的一般形式为:类型说明符 (*指针变量名 )();其中 “类型说明符 ”表示被指函数的返回值的类型。 “(*指针变量名 )”表示 ”后面的变量是定义的指针变量。最后
16、的空括号表示指针变量所指的是一个函数。 42 【正确答案】 8 43 【正确答案】 int Point: countP=0: 44 【正确答案】 3 45 【正确答案】 public 【试题解析】 运算符可以重载为成员 函数或友元函数,但是应该把函数说明为公有的,以便各个量都能引用。 46 【正确答案】 inc或整型 【试题解析】 此题考查的是指针的声明语句。在声明语句中,变量前加 “”即声明为指针类型变量,题目中变量 b定义的只是普通的整型变量,不是指针,所以应填入 int或整型。 47 【正确答案】 *p 48 【正确答案】 4 49 【正确答案】 tb 【试题解析】 此题考查的是对象的定义。对象的定义格式如下:类名对象名 (参数表 );所以题目中的 tb是对象名标识符,而 ta被定义成类 MA的指针,故空 格处应填 tb。 50 【正确答案】 ID=s ID或 s ID=ID或 this ID=s ID或 s ID=this ID 【试题解析】 此题考查运算符的重载。运算符 “一 ”作为成员函数重载,所以横线处填入的表达式应该是对象本身 ID与对象 s ID的比较表达式。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1