1、国家二级( C+)笔试模拟试卷 236及答案与解析 1 下列叙述中正确的是 ( A)接口复杂的模块,其耦合程度一定低 ( B)耦合程度弱的模块,其内聚程度一定低 ( C)耦合程度弱的模块,其内聚程度一定高 ( D)上述三种说法都不对 2 数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是 ( )。 ( A) DB包括 DBS和 DBMS ( B) DBMS包括 DB和 DBS ( C) DBS包括 DB和 DBMS ( D)没有任何关系 3 对关系 S和 R进行集合运算,结果中既包含 S中的所有元组也包 含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 (
2、B)交运算 ( C)差运算 ( D)积运算 4 5 下列关于类和对象的叙述中,错误的是 ( ) ( A)一个类只能有一个对象 ( B)对象是类的具体实例 ( C)类是对某一类对象的抽象 ( D)类和对象的关系是一种数据类型与变量的关系 6 以下不是结构化程序设计方法的技术是 ( )。 ( A)自顶向下,逐步求精 ( B)自底向上,逐步求精 ( C)从整体到局部 ( D)结 构清晰,层次分明 7 下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是 ( )。 ( A)选择 ( B)连接 ( C)投影 ( D)并 8 下面对对象概念描述正确的是 ( )。 ( A)任何对象都
3、必须有继承性 ( B)对象是属性和方法的封装体 ( C)对象间的通信靠文本传递 ( D)操作是对象的静态属性 9 不定长文件是指 ( )。 ( A)文件的长度不固定 ( B)记录的长度不固定 ( C)字段的长度不固定 ( D)关键字项的长度不固定 10 下面选项 中不属于面向对象程序设计特征的是 ( A)继承性 ( B)多态性 ( C)类比性 ( D)封装性 11 下列类的定义中,有 ( )处语法错误。 class Base public: Base() Base(int i) data=i; private: int data; ; class Derive : public Base pu
4、blic: Derive() : Base(0) Derive (int x) d=x; void setvalue(int i) data=i; private: d; ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 12 下列程序的输出结果是 ( )。 #include iostream using namespace std; template typename T T fun(T a,T b)return(a b)?a:b; void main() cout fun(3,6) , fun(3.14F,6.28F) end1; ( A) 6,3.14 ( B) 3,6.28
5、( C) 3,3.14 ( D) 6,6.28 13 若有如下语句 #include iostream.h) void main() int x 3; do X X-2; cout x; while(!(-x); 则上面程序段 ( )。 ( A)输出的是 1 ( B)输出的是 1和 -2 ( C)输出的是 3和 0 ( D)是死循环 14 关于类和对象描述错误的是 ( )。 ( A)对象 (Object)是现实世界中的客观事物,对象具有确定的属性 ( B)类是具有相同属性和行为的一组对象的集合 ( C)对象是类的抽象,类是对象的实例 ( D)类是对象的抽象,对象是类的实例 15 可以用 p.a
6、的形式访问派生类对象 p的基类成员 a,其中 a是 ( )。 ( A)私有继承的公有成员 ( B)公有继承的私有成员 ( C)公有继承的保护成员 ( D) a有,继承的公有成员 16 以下程序的输出结果是 ( )。 min() int i=0, a=0; while(i 20) for(;) if(i%10)=0)break; else i-; i+=11; a+=i; cout a endl; ( A) 21 ( B) 32 ( C) 33 ( D) 11 17 定义如下枚举类型: enumMonday, Tuesday, Wednesday, Thrusday, Friday2;则下列语句
7、正确的是 ( )。 ( A)表达式 Wednesday Friday的值是 true ( B) Day day; day 3; ( C) Day day; day Monday+3; ( D) Day day; day Tuesday+10; 18 关于模板,下列说法不正确的 是 ( )。 ( A)用类模板定义一个对象时,不能省略实参 ( B)类模板只能有虚拟类型参数 ( C)类模板本身在编译中不会生成任何代码 ( D)类模板的成员函数都是模板函数 19 设有以下定义和程序: #include class TestClass1 public: void show1() toutopen(”fi
8、le dat”); 36 37 在关系数据库中 ,每一个二维表称为 _。 38 在长度为 n的顺序存储的线性表中插入一个元素, 最坏情况下需要移动表中_个元素。 39 大多数 C+程序都要包含 _头文件。该文件中包含了所有输入 /输出流操作所需要的基本信息。 40 【 】是数据库设计的核心。 41 有以下程序 #include iostream using namespace std; class Base int a; public: Base(int x) a=x; void show() cout a; class Derived : public Base int b; public:
9、 Derived(int i) :Base(i+1),b(i) void show() cout b; ; int main () Base b(5),*pb; Derived d(1); pb= pb- show (); return 0; 运行后的打印结果是 _。 42 有如下程序: #include using namespace std; class TestClass int k; public: TestClass(int x=1): k(x) TestClass ()coutk; ; int main() TestClass a=TestClass(3), TestClass(3
10、), TestClass(3); TestClass*p=new TestClass2; deletep; return 0: 这个程序的输出结果是 _。 43 派生类中的成员不能直接访问基类中的【 】成员。 44 C+在重载运算中,如用成员函数重载一元运算符参数表中需要【 】个参数,如用友元函数重载一元运算符参数表中需要 1个参数。 45 插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到已排序序列中的正确位置。 InsertSort类的成员函数 sort()实现了插入排序算法。请将画线处缺失的部分补充完整。 class InsertSort public: InsertSor
11、t(int* a0, int n0): a(a0), n(n0)/参数 a0是某数组首地址, n是数组元素个数 void sort() /此函数假设已排序序列初始化状态只包含 a0,未排序序列初始为 a1.an-1 for(int i=1; i n; 11i) int t=ai; int j; for(【 】; j 0; -j) if(t =aj-1)break; aj=aj-1; aj=t; protected: int *a, n; /指针 a用于存放数组首地址, n用于存放数组元素个数 ; 46 假定 A为一个类,则语句 A(A &a);为该类【 】函数的原型说明。 47 类中数据成员和
12、成员函数的默认类型为 _。 48 以下程序的输出结果是【 】。 #include iostream using namespace std; int main() char S =“abcdef“; s3= 0; cout s end1; return 0; 49 要想把类的一般成员函数说明为类的常成员函数,则应该使用关键词【 】说明成员函数。 50 C+中只有两个逻辑常量: true和【 】。 国家二级( C+)笔试模拟试卷 236答案与解析 1 【正确答案】 C 【试题解析】 影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接
13、口简单的的模块强,所以选项 A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项 B 错误;选项 C正确。 2 【正确答案】 C 【试题解析】 数据库系统 (DBS)由数据库 (DB)、数据库管理系统 (DBMS)、数据库管理员、硬件平台和软件平台 5个部分组成,可见 DB 和 DBMS 都是 DBS 的组成部分。 3 【正确答案】 A 【试题解析】 关系的并运算是指由结构相同的两 个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。 4 【正确答案】 B 5 【正确答案】 A 6 【正确答案】 B 7 【正确答案】 B 8 【正确答案】 B 9 【正确答案】 B 【试题解析】 不定
14、长文件是指记录的长度不固定。 10 【正确答案】 C 【试题解析】 通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。 封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中 (对象中 )。简单地 说,封装就是隐藏信息。这是面向对象方法的中心,是面向对象程序设计的基础。 继承性:子类具有派生它的类的全部属性 (数据 )和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达
15、到一致性。 多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必 为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。 经过上述分析可知,选项 C的说法是错误的。 11 【正确答案】 B 【试题解析】 本题考核派生类的定义和成员的访问权限。第一处错误:在派生类的构造函数 Derive(int x)中没有调用基类的构造函数对基类对象初始化;第二处错误:数据 data是基类 Base的私有成员,派生类 Derive不能访问,所
16、以在函数setvalue中对 data 的赋值是错误的。 12 【正确答案】 D 【试题解 析】 “?:”为条件运算符, (a b)?a:b是当 a大于 b 时取 a,否则取b。所以第一个 fun(3, 6)调用中, 6大于 3,所以输出 6,同理,第二个fun(3.14F,6.28F)调用中输出 6.28。 13 【正确答案】 B 【试题解析】 do-while语句的一般格式为 do 循环体语句 while(表达式 );,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行 x x-2,即为 l。判断表达式的值, !(-x)为真, x=0,继续循环。再次
17、执行循环体语句后, x -2,此时表达式的值为 0,结束循环。 14 【正确答案】 C 【试题解析】 C+中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。 15 【正确答案】 D 【试题解析】 只有公有继承的公有成员才能被派生类的对象直接访问,其他的情况都会因为访问权限问题产生错误。 16 【正确答案】 B 【试题解析】 本题是两个循环语句和一个判断语句的嵌套。 For循环的作用是在i等于 10的时候跳出循环本题的答粟为 B。 17 【正确答案】 A 【试题解析】 枚举类型定义了一些整型符号常量的集合,使用枚举
18、类型时应该注意以下几点:枚举类型的第一个常量默认值是 0,枚举类型常量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整数进行比较。 18 【正确答案】 B 【试题解析】 类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。 C+中可以为类模板的参数设置默 认值,所以选项 B 错误。 19 【正确答案】 C 【试题解析】 TestClass1 为 TestClass2 的私有基类,所以派生类 TestClass2中继承过来的 showl()为私有的。
19、 TestClass3 为 TestClass2的受保护派生类。所以TestClass3定义的对象不能访问 TestClass 中的 show1()。 20 【正确答案】 C 【试题解析】 关系模型较之格式化模型 (网状模型和层次模型 )有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以 及有坚实的理论基础。 21 【正确答案】 C 【试题解析】 A定义了一个类的对象指针; B 定义一个类 A数据成员指针; C定义了一个类 A的成员函数指针; D定义一个类 A的对象指针数组。 22 【正确答案】 C 【试题解析】 指针变量一定要让它指向某个内存单元才能给它
20、赋值、参加运算等,选项 A和选项 B都是因为没有先让指针指向某个内存单元;选项 D把不同数据类型的指针变量相互赋值是错误的。 23 【正确答案】 A 24 【正确答案】 A 25 【正确答案】 A 26 【正确答案】 C 【试题解析】 上述类的定义共有 3处错误。第一处:类的成员变量不能在定义时进行初始化:第二处:类的构造函数不能有返回值 (包括 void类型 );第三处:类的析构函数不能有参数。 27 【正确答案】 B 28 【正确答案】 D 【试题解析】 派生类继承基类的方式有 3种: public, private和 protected,常用的是 public。 29 【正确答案】 D
21、【试题解析】 此题考查的是 “+”运算符重载和 this 指针。语句 amount+=a.amount;实现 3和 7的求和得到 amount=10,要使程序的输出结果为10,需要把 amount的值作为函数的返回值,所以横线处应填入 amount。 30 【正确答案】 A 【试题解析】 本题考查流操作中格式的控制, hex的作用是将随后的输出数按照十六进制形式输出。 31 【正确答案】 C 【试题解析】 函数返回值的类型决定了返回值表达式的类型。 32 【正确答案】 C 【试题解析】 在 C+中,不能重载的运算符有 6个,它们是 “ ”, “*”, “- ”,“: ”, “sizeof”和三
22、目运算符 “?: ”。 33 【 正确答案】 B 【试题解析】 本题考查了常成员函数和友员函数的一些概念。 getRef()函数返回的是 a的地址值 &a,而函数类型却定义为 int, C+中不允许隐式的将一个地址值类型转换为 int类型,故选项 A不正确。 set()函数被定义为常成员函数,但在函数中给 a赋值,改变了数据成员的值这是不允许的,故选项 C错误。 show()函数被定义为 AA类的友员函数,它不属于 AA类而是一个全局函数。所以同时被定义为常成员函数是错误的。所以选项 D不正确。故应该选择 B。 34 【正确答案】 A 【试题解析】 本 题考查的知识点是:类的定义。类中缺省的访
23、问权限是私有的(private),所以选项 B) 不正确:类的数据成员和函数成员的访问控制权限均可被声明为公有 (public)、私有 (priate)和保护 (protected)中的任意一种,所以选项 C) 不正确;成员函数的实现即可以在类体内定义,也可以在类体外定义,所以选项D) 不正确。故本题应该选择 A。 35 【正确答案】 A 【试题解析】 open是 ifstream的成员函数,只能用对象 fin去调用,不能用类调用。故选项 A)错误。 36 【正确答案】 5 37 【正确答案】 关系 38 【正确答案】 n 39 【正确答案】 iostream.h 40 【正确答案】 数据模型
24、 【试题解析】 数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。 41 【正确答案】 2 【试题解析】 本题考核基类指针与派生类指针的使用。本例程序中类 Derived是从基类 Base公有继承来的。 main()中定义了基类对象 b和一个基类指针 pb,又定义了派生类 Derived 的对象 d。由于 Derived 是 Base的子类型,因此可以将派生类 Derived的对象 d的地址赋值给指向基类 Base的指针 pb,但这时指针 pb 只能使用从基类 Base继承的成员。所以通过对象指针 Pb 调用的 show函数是基类的
25、成员函数 show(),从而输出基类私有数据成员 a的值 2。 42 【正确答案】 11333 【试题解析】 定义 Testclass 型数组 a时,将导致 Testclass 的构造函数被执行三次,每次执行时,其传入参数为 3,定义 TestClass 指针 p时,将执行两次默认构造函数,其参数为 1,执行 ”delete p”时,将执行 Testclass 的构造函数,输出p0 k, p1 k(两者均为 1),在程序运行结束后,将释放局部变量,从而导致数组 a中的三个元素被析构,输出 a0, a1, a2中的值 (均为 3)。 43 【正确答案】 私有 (或 private) 【试题解析】
26、 私有类型的成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的。 44 【正确答案】 0 45 【正确答案】 j=i 46 【正确答案】 拷贝构造 【试题解析】 本题考查的是拷贝构造函数的定义,它是一 种特殊的成员函数,作用是使用一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名 拷贝构造函数名 (类名 &引用名 )。 47 【正确答案】 私有或 private 48 【正确答案】 abc 【试题解析】 字符串的结束标记是 0,当输出一个存放在字符数组中的字符串时,只需输出到 0为止,而不管其后还有什么数据。本题给字符数组 s 的元素 s3赋值 0,故只能输出 3个字符 “abc”。 49 【正确答案】 const 【试题解析】 常类型是指使用类型修饰符 const说明的类型 。常类型的变量或对象的值是不能被更新的,所以能够达到既保证数据共享又防止改变数据的目的。 50 【正确答案】 假 【试题解析】 本题考查的知识点是:逻辑常量。 C+中只有两个逻辑常量: true和 false。故本题应该填 false。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1