1、国家二级( C+)笔试模拟试卷 173及答案与解析 1 按照 “后进先出 ”原则组织数据的数据结构是 ( )。 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 2 下列对于软件测试的描述中正确的是 ( )。 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 3 模块独立性是软件模块化所提出的要求,衡量模块独立性的度 量标准是模块的( )。 ( A)抽象和信息隐蔽 ( B)局部化和封装化 ( C)内聚性和耦合性 ( D)激活机制和控制方法 4 下述关于
2、数据库系统的叙述中,正确的是 ( )。 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型一致 ( D)数据库系统比文件系统能管理更多的数据 5 对如下二叉树 进行后序遍历的结果为 ( )。 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 6 同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中叫 ( )。 ( A)命名冲突 ( B)概念冲突 ( C)域冲突 ( D)约束冲突 7 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。 ( A)模拟现实世界中
3、不同事物之间的联系 ( B)强调模拟现实世界中的算法而不强调概念 ( C)使用现实世界的概念抽象地思考问题从而自然地解决问题 ( D)鼓励开发者在软件开发的绝大部分中都 用实际领域的概念去思考 8 数据库 DB、数据库系统 DBS、数据库管理系统 DBMS之间的关系是 ( )。 ( A) DB包含 DBS和 DBMS ( B) DBMS包含 DB和 DBS ( C) DBS包含 DB和 DBMS ( D)没有任何关系 9 索引属于 ( )。 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 10 下列关于关系运算的叙述中正确的是 ( )。 ( A)投影、选择、连接是从二维表的行的
4、方向来进行运算 ( B)并、交、差是从二维表的列的方向来进行运算 ( C)投影、选择、连接是从二维表的列的方向来进行运算 ( D)以上三种说法都不对 11 下列选项中不全是 C+语言关键字的是 ( A) const, break, default ( B) long, void, using ( C) virtual, exterm, include ( D) try, throw, this 12 以下 C+语言中用于单行注释的是 ( A) / ( B) /* ( C) */ ( D) 13 在 32位 的计算机中,一个 char型数据所占的内存长度的字节是 ( A) 4 ( B) 1 (
5、C) 2 ( D) 8 14 若变量已正确定义并赋值,以下符合 C+语言语法的表达式是 ( A) a: b+1 ( B) a b c+2 ( C) int 18.5%3 ( D) a a+7 c+b 15 有如下程序: #include“iostream.h“ void main() int x 1,a 0,b 0; swish(X) case 0: b+; case 1: a+; case 2: a+;b+; cout “a“ a “,“ “b “ b; 该程序的输出结果是 ( A) a 2, b 1 ( B) a 1, b 1 ( C) a 1, b 0 ( D) a 2, b 2 16
6、有以下程序: #include“iostream.h“ void main() int i 1,j 1,k 2; if(j+ k+) i+) cout i “,“ j “,“ k; coutendl; 执行后输出结果是 ( A) 1,1,2 ( B) 2,2,1 ( C) 2,2,2 ( D) 2,2,3 17 若有说明 int a34;,则 a数组元素的非法引用是 ( A) a02*1 ( B) a13 ( C) a4-210 ( D) a04 18 若有语句 int*point,a 4;和 point a;下面均代表地址的一组选项是 ( A) a,point,* a ( B) *a, a,
7、*point ( C) * point,*point, a ( D) a, *point,point 19 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 ( A)函数调用可以作为独立的语句存在 ( B)函数调用可以无返回值 ( C)函数调用可以出现在表达式中 ( D)函数调用可以作为一个函数的形参 20 若运行时给变量 x输入 12,则以下程序的 运行结果是 #include iostream.h void main() int x,y; cin x; y X 12?x+10: x-12; cout y; cout endl; ( A) 0 ( B) 22 ( C) 12 (
8、D) 10 21 以下类定义中可能会引起错误的语句是 class A public: A() /1 int i; /2 private: int j; /3 A(int i) i+; /4 ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 22 以下关于 C+语言类的说法中正确的是 ( A) C+语言的默认访问权限是 private ( B) C+语言中的类定义,用户一定要自己定义一个构造函数用于实例化类 ( C) C+语言中的成员函数的实现部分一定要写在类定义外 ( D) C+语言中的类不 能够嵌套定义 23 下列描述中错误的是 ( A)派生类可以作为基类派生其他的子类 ( B)派
9、生类继承基类的所有数据成员 ( C)派生类可以有多个基类 ( D)派生类不能继承一些函数成员 24 派生类对象对其基类中的什么成员是可访问的 ? ( A)公有继承的私有成员 ( B)私有继承的公有成员 ( C)私有继承的保护成员 ( D)保护继承的保护成员 25 下列运算符中哪些是不能够被重载的 ? ( A) ., .*, - *, :, ?: ( B) +, -, new, delete, ( C) sizeof, new, delete, +, - ( D) sizeof, new, delete, +, - 26 下列关于运算符重载不正确的是 ( A)运算符重载不能改变运算符的操作数个数
10、 ( B)运算符重载不能改变运算符的优先级 ( C)运算符重载不能改变运算符的结合性 ( D)运算符重载能改变对预定义类型数据的操作方式 27 下列关于函数模板实参不能省略的情况说明不正确的是 ( A)从模板函数实参表获得的信息有矛盾 ( B)需要获得特定类型 的返回值,而不管参数的类型如何 ( C)虚拟类型参数没有出现在模板函数的形参表中 ( D)函数模板不含有常规形参 28 对于重载的运算符,它是一个 ( A)用于输入的友元函数 ( B)用于输入的成员函数 ( C)用于输出的友元函数 ( D)用于输出的成员函数 29 表达式 10 5 6%3的值是 ( A) -1 ( B)非零值 ( C)
11、 0 ( D) 1 30 若调用一个函数,且此函数中没有 return语句,则正确的说法是该函数 ( A)没有返回值 ( B)返回若干个系统默认值 ( C)有返回值,但返回一个不确定的值 ( D)能返回一个用户所希望的函数值 31 以下函数调用语句中含有参数的个数是 excc(V1,V2), (V2,V3,V4), V6); ( A) 3 ( B) 4 ( C) 5 ( D) 6 32 以下能对二维数组 a进行正确初始化的语句是 ( A) int a2 1,0,1, 55,2,3 ; ( B) int a3 1,2,3, 4,5,6 ; ( C) int a24 1,2,3, 4,5, 6 ;
12、 ( D) int a3 1,0,1, 1,1 ; 33 下列程序段的输出结果是 #include iostream.h void fun(int*x,int*y) cout *x *y; *X 3; *y 4; void main() int x 1,y 2; fun( y, x); cout X y endl; ( A) 2143 ( B) 1212 ( C) 1234 ( D) 2112 34 有如下程序: #include iostream.h void main() float x 2.0,y; if(x 0.0)y 0.0; else if(x 10.0)y 1.0/x; else
13、 y 1.0; cout y; 该程序的输出结果是 ( A) 0 ( B) 0.25 ( C) 0.5 ( D) 1.0 35 下列程序的输出结果是 #include iostream.h void main() char*str“12123434“; int x1 0,x2 0,x3 0,x4 0,i; for(i 0;stri! 0;i+) switch(stri) case1: x4+; case2: X3+; case3: X2+; case4:X1+; cout X1 “,“ ( A) 8,6,4,1 ( B) 8,6,3,2 ( C) 8,8,4,1 ( D) 8,6,4,2 36
14、 栈和队列通赏采用的存储结构是 _。 37 在程序设计阶段应该采取 _和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。 38 软件结构是以 _为基础而组成的一种控制层次结构。 39 数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 _两个含义。 40 数据库保护分为 安全性控制、 _、并发性控制和数据的恢复。 41 如果表达式 -X中的 “-”是重载的类运算符,采用运算符函数调用格式,及表达式还可以表示为 _。 42 虚函数必须是类的 _。 43 多态性分为两类:编译时的多态性和 _。 44 在下面的程序的横线处填上适当的语句,
15、使该程序的输出结果为 12。 #include iostream using namespace std; class TestClass public: int a,b; TestClass(int i,int j) a=i; b=j; ; class TestCla 45 在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作 “类 ”。类是一种抽象的概念,属于该类的一个实例叫做“_”。 46 请在下列程序的横线处填写正确的语句。 #include iostream using namespace std; class Base public: void
16、fun()cout “Base fun“ endl; ; class Derivde:public Base public: void fun() _ 调用基类的函数 47 己知类 sample是一个抽象类,其成员函数 display是无形参、无返回类型的纯虚函数,请完成其声明: class sample public: sample(); _ ; 48 请将下列程序的横线处补充完整,使得输出结果为 bbaa #include iostream using namespace std; class A public: _cout “aa“; ; class B:public A public:
17、 B()cout “bb“; ; int main() B*p=new 49 请将下列栈类 Stack的横线处补充完整。 class Stack private: int pList100; int数组,用于存放栈的元素 int top; 栈顶元素 (数组下标 ) public: Stack():top(0) void Push(const int 新元素 item 50 若要访问指针变量 p所指向的数据,应使用表达式 _。 国家二级( C+)笔试模拟试卷 173答案与解析 1 【正确答案】 B 【试题解析】 栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表;队列是一种特殊
18、的线性表,它只允许在表的前端 (front)进 行删除操作,而在表的后端 (rear)进行插入操作,队列具有先进先出 (FIFO)的特点。双向链表可以在链表的头和尾进行添加删除操作,而二叉树是非线性结构。 2 【正确答案】 C 【试题解析】 软件测试是保证软件质量的关键环节,直接影响着软件的质量评估。软件测试不仅要讲究策略,更要讲究时效性。软件测试的目的是尽可能多地发现程序中的错误。 3 【正确答案】 C 【试题解析】 模块的独立程序是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。 4 【正 确答案】 A 【试题解析】 数据库系统会减少数据冗余,但不可能
19、避免一切冗余。 5 【正确答案】 D 【试题解析】 二叉树的遍历有 3种:前序、中序和后序。后序遍历首先遍历左子树或左子结点,然后遍历右子树或右子结点,最后访问根结点。 分析本题二叉树,对其进行后序遍历的结果为 DEBFCA。 6 【正确答案】 B 【试题解析】 同一概念在一处为实体,而在另一处为属性或联系称为概念冲突。 7 【正确答案】 B 【试题解析】 所谓数据库是指长期存储在计算机内的、有组织的、可共 事的数据集合。因此进行数据库设计的根本目标是为了解决数据共事问题。 8 【正确答案】 C 【试题解析】 数据库系统 (DBS)是指在计算机系统中引入数据库后的系统,一般有数据库 (DB)、
20、数据库管理系统 (DBMS)、应用系统、数据库管理员和用户构成。 9 【正确答案】 B 【试题解析】 建立索引是加快查询速度的有效手段,这与索引按什么方式组织有关,它建立在数据库表的基础上,属于内模式。 10 【正确答案】 C 【试题解析】 在关系模型的数据语言中,一般除了运用常规的集合运算 (并、交、差、笛卡尔积等 )外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行的,后者主要是从二维表的列的方向来进行运算。因此,选项 A与选项 B的说法都是错误的,而选项 C的说法正确。 11 【正确答案】 C 12
21、【正确答案】 A 13 【正确答案】 B 14 【正确答案】 B 15 【正确答案】 A 16 【正确答案】 C 17 【正确答案】 D 18 【正确答案】 D 19 【正确答案】 D 20 【正确答案】 A 21 【正确答案】 D 22 【正确答案】 A 23 【正确答案】 B 24 【正确答案】 D 25 【正确答案】 A 26 【正确答案】 D 27 【正确答案】 D 28 【正确答案】 A 29 【正确答案】 C 30 【正确答案】 C 31 【正确答案】 A 32 【正确答案】 B 33 【正确答案】 A 34 【正确答案】 C 35 【正确答案】 D 36 【正确答案】 链式存储和
22、顺序存储 37 【正确 答案】 自顶而下 38 【正确答案】 模块 39 【正确答案】 逻辑独立性 40 【正确答案】 完整性控制 41 【正确答案】 x.operator-() 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y.operator-(z)或者 operator-(y, z);另一种是通过运算符构成表达式,即 y-z。因为 “-”运算符既可以作为前缀算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀 “-”时必须多一个虚拟参数: int。 42 【 正确答案】 成员函数 【试题解析】 虚函数是允许在派生类中重新定义与基类同名的函数,并且通
23、过基类指针或引用来访问基类和派生类中的同名函数。在基类中用 virtual声明成员函数为虚函数,所以虚函数是类的成员函数。 43 【正确答案】 运行时的多态性 【试题解析】 多态性是指一个接口,多种方法。它分为编译时多态性和运行时的多态性。 44 【正确答案】 cout TestClass a 【试题解析】 题目中程序 TestClass为基类, TestClass1为派生类,在主函数中定义 TestClass1对象 d(1)。据题目要求 “输出基类数据成员 a的值 ”,基类为TestClass,利用 域运算符取其成员 a的值。 45 【正确答案】 对象 【试题解析】 此题考查的是对象的概念。
24、类是将不同类型的数据与这些数据相关的操作封装在一起的集合体,对象是类的实例,一个对象必须属于一个已知的类。 46 【正确答案】 Base fun() 【试题解析】 此题考查的是派生类对基类成员的访问。本题中派生类 Derived覆盖了基类 Base中的 fun(),如果需要调用基类中的 fun(),则 需要使用域运算符“ ”。故应填写 Base fun()。 47 【正确答案】 virtual viod display()=0; 【试题解析】 此题考查的是纯虚函数。纯虚函数定义格式是在虚函数的后面加上 “=0”。与虚函数不同的是,纯虚函数允许没有函数体,故本题应填入的内容是virtual vi
25、od display()=0;。 48 【正确答案】 A() 【试题解析】 此题考查的是类的构造与析构。本题要求输出的结果中包含 aa,所以基类 A中横线处的函数一定要被执行。横线处应是定义基类的构 造或者析构函数,如果定义的是构造,那么 aa肯定在 new操作时就输出,而下面的 bb是在析构函数中,会在 delete时被输出。故可以肯定应填入基类 A的析构函数定义: A()。 49 【正确答案】 pListtop=item 【试题解析】 此题考查的是堆栈数据结构。堆栈是一种先进后出的队列,每次入栈在栈顶,出栈也在栈顶。当栈顶指针所指位置是最后一个有效数据时,下次出栈直接取出栈顶指针所指数据,然后栈顶指针再减 1;入栈时需要将栈顶指针先增 1,然后将数据存入栈顶指针所指位置。本题中,从 Pop()数中可 以看出,是先取数然后 top才会减 1, Push()函数应先增 1再取数。所以应填入pListtop=item。 50 【正确答案】 *p 【试题解析】 此题考查的是指针。指针使用两种特殊的运算符 “: *”和 “&”。“&”用于返回其操作对象内存地址; “*”用于返回其操作数所指对象的值。