1、国家二级( C+)笔试模拟试卷 166及答案与解析 1 下列叙述正确的是 ( )。 ( A)算法的执行效率与数据的存储结构无关 ( B)算法的空间复杂度是指算法程序中指令 (或语句 )的条数 ( C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 ( D)以上 3种描述都不对 2 有下列二叉树,对此二叉树中序遍历的结果是 ( )。 ( A) ABCDEF ( B) BDAECF ( C) ABDCEF ( D) ABCDFE 3 源程序的文档化不包括 ( )。 ( A)符号名的命名要有实际意义 ( B)正确的文档形式 ( C)良好的视觉组织 ( D)正确的程序注释 4 下列叙述中错误的是
2、( )。 ( A)一种数据的逻辑结构可以有多种存储结构 ( B)数据的存储结构与数据的处理效率无关 ( C)数据的存储结构与数据的处理效率密切相关 ( D)数据的存储结构在计算机中所占的空间不一定是连续的 5 下列叙述中正确的是 ( )。 ( A)在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息 ( B)在自顶向下 、逐步细化的设计过程中,首先应设计解决问题的第一个细节 ( C)在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 ( D)在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法 6 下列工具中为需求分析常用工具的是 ( )。 ( A) PA
3、D ( B) PFD ( C) N-S ( D) DFD 7 下列是软件调试技术的是 ( )。 ( A)错误推断 ( B)集成测试 ( C)回溯法 ( D)边界值分析 8 两个或两个以上模块之间联系的紧密程度称为 ( )。 ( A)耦合性 ( B)内聚性 ( C)复杂性 ( D)数据传输特性 9 在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送 ( )来实现。 ( A)调用语句 ( B)命令 ( C)中令 ( D)消息 10 设计数据库的存储结构属于 ( )。 ( A)需求分析 ( B)概念设计 ( C)逻辑设计 ( D)物理设计 11 在 C+语言中函数返回值的类型是由 ( )决
4、定的。 ( A)调用该函数时系统临时 ( B) return语句中的表达式类型 ( C)定义该函数时所指定的函数类型 ( D)调用该函数时的主调函数类型 12 下列描述正确的是 ( )。 ( A)表示 m n为 true或 m n为 true的表达式为 m n会调用两次类 MyClass的构造函数 ( C)对语句 *P.SetVariabte(5)的调用是正确的 ( D)语句 p- SetVariable(5)与语句 my.SetVariable(5)等价 18 下面关于 break语句的描述中,不正确的是 ( )。 ( A) break可以用于循环体内 ( B) break语句可以在 for
5、循环语句中出现多次 ( C) break语句可以在 switch语句中出现多次 ( D) break语句可用于 if条件判断语句内 19 如果表达式 -x/y中的 “-”和 “/”是作为友元函数重载的运算符,采用运算符函数用格式,该表达式还可表示为 ( )。 ( A) operator/(x.operator-(), y); ( B) operator/(operator-(x), y); ( C) x.operator-().operator/(y); ( D) y.operator/(operator-(x); 20 已知类 A有公用数据成员 a,并重载了 “ ”运算符,且有 A obj2
6、;const A*ptr new A;则下列语句错误的是 ( )。 ( A) ptr- a=100; ( B) ptr= ( C) ptr+; ( D) obj2=*ptr; 21 可以用 p.a的形式访问派生类对象 p的基类成员 a,其中 a是 ( )。 ( A)私有继承的公有成员 ( B)公有继承的私有成员 ( C)公有继承的保护成员 ( D) a有,继承的公有成员 22 下面程序的运行结果为 ( )。 #include iostream.h class A int num public: A(int i)num=i; A(A cout csl.val “; TestClass cs2;
7、TestClass cs3, cs4; co ( A) 03 ( B) 13 ( C) 14 ( D) 24 25 有以下类定义 class MyClass private: int id; Char gender; Char*phone; public: MyClass(): id(0), gender(#), phone(NULL) MyClass(int no,charge #, char*ph NULL) id=no;gender=ge;phone=ph; ); 下列类对象定义语句中错误的是 ( )。 ( A) MyClass myObj; ( B) MyClass myObj(11,
8、 ”13301111155”); ( C) MyClassmyObj(12, m); ( D) MyClassmyObj(12); 26 下列是关于派生类声明的开始部分,其中正确的是 ( )。 ( A) class virtual B: public A ( B) virtual class B: public A ( C) class B: public A virtual ( D) class B: virtualpublicA 27 如果类 A被说明成类 B的友元,则 ( )。 ( A)类 A的成员即类 B的成员 ( B)类 B的成员即类 A的成员 ( C)类 A的成员函数不得访问类 B
9、的成员 ( D)类 B不一定是类 A的友元 28 下列关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联 编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 29 若有如下程序: #include iostream using namespace std; class TestClass public: void who()cout “TestClass” endl; ; class TestClassl:public TestClass public: v
10、oid who()cout “TestClassl” endl; int main() TestC ( A) TestClassl ( B) TestClass ( C) 0 ( D)无输出 30 若有如下程序: #include iostream using namespace std; Class TestClass1 private: int a; public: TestClassl(int i) a=i; void disp() cout a “, ”; ; Class TestClass2 private: int b; public ( A) 10, 10, 10 ( B) 10
11、, 12, 14 ( C) 8, 10, 12 ( D) 8, 12, 10 31 在下列程序的横线处填上适当的内容,使程序执行后的输出结果为 ABCD。 #include iostream using namespace std; class A public: A()coutA; ; Class B: public: B()cout B; ; class C: virtual public A public: C()cout C; ; class D: p ( A) public A ( B) private A ( C) protected A ( D) virtual public A
12、 32 有如下程序: #include iostream) using namespace std; class AA int n; public: AA(int k): n(k) int get()return n; int get()constreturn n+1; ; int main() AA a(5); const AA b(6); COUt A get()b.get(); return 0 ( A) 55 ( B) 57 ( C) 75 ( D) 77 33 有如下程序: #include iostream.h Using namespace std; Class Demo pub
13、lic: Demo() cout “default constructorn”; Demo(const Demo int main() ( A) 1和 1 ( B) 1和 2 ( C) 2和 3 ( D) 2和 4 34 有如下程序: #include iostream using namespace std; class DA int k; public: DA(int x 1): k(x) DA()cout k; ; int main() DAd DA(3), DA(3), DA(3); DA*p new DA2; deletep; return(); 这个程序的输出结果是 ( )。 (
14、A) 111 ( B) 333 ( C) 11333 ( D) 11133 35 有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x): val(x) void Print()constcout “const:val ” val ; void Print()cout “val ” val t; private: int va1; ; int main() cons ( A) val 10 const: val 20 ( B) const: val 10 const: val 20 (
15、 C) const: val 10 val 20 ( D) val 10 val 20 36 在程 序设计阶段应该采取 _和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。 37 二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是_。 38 在面向对象方法中, _描述的是具有相似属性与操作的一组对象。 39 常用的软件结构设计工具是结构图 (SC),也称程序结构图。其中,用矩形表示,用带空心圆的箭头表示传递的是数据。 40 数据库系统其内部分为三级模式,即概念模式、内模式和外模式,其中,_是 用户的数据视图,也就是用户所见到的数
16、据模式。 41 在任何类中都有三种访问权限的数据成员,分别是 public、 private和 _。 42 虚函数必须是类的 _。 43 内联函数是通过 _来实现的,因此内联函数是真正的函数。 44 下列程序的运行结果是 _。 #include iomanip.h int Func(int *a, int n) int s 1; for(int i=0; i n;i+) s* *a+; returns; void main() inta: 1, 2, 3, 4, 5, 6, 7, 8; intb=Func(a, 6)+Func( class Base public: void fun()cou
17、t “Basefun” endl; ); class Derivde: public Base public: void fun() /调用基类的函数 fun() cout “Derived fun” endl; ; 47 在下面横线上填上适当的语句,完成程序。 #include iostream using namespace std; class Base int x; public: Base(int i)x i; Base() ); class Derived: public Base public: _/完成类 Derive构造函数的定义 ; iht main() Derived o
18、bj 48 下列程序将 x、 y和 z按从小到大的顺序排列,请将下面的函数模板补充完整。 template class T void order( ) T al if(x y) a x; x y; y a; if(y z) a y; y=Z; z a; if(x y) a X; X=y; y=a; 49 下列程序完成从文件读取文件显示的同时写入第二个文件,则在程序中划线部分应该出现的语句是 _。 #include iostream.h #include(fstream.h) void main() fstream filel, file2; charfnl10, fn210, ch; cout
19、 “输入源文件名 ”; cin fnl; cout “输入目标文件名 ”; cin fn2; filel.open(fnl, ios: i 50 operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 _的。 国家二级( C+)笔试模拟试卷 166答案与解析 1 【正确答案】 C 【试题解析】 算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。 2 【正确答案】 B 【试题解析】 对二叉树的中序遍历是指:首先遍历左子树,然后访问根 结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照
20、“左子树 -根结点 -右子树 ”的顺序。 3 【正确答案】 B 【试题解析】 源程序的文档化主要包括 3点: (1) 符号名应具有一定实际的含义,便于理解程序功能: (2) 正确的程序注释; (3) 良好的视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。 4 【正确答案】 B 【试题解析】 数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存 储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。 5 【正确答案】 C 【试题解析】 在模块化程序设计中,模块之间的联系可以通过程序的控
21、制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中,模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。 6 【正确答案】 D 【试题解析】 需求分析常用的工具有数据洗图 (DFD)、数据字典 (DD)、判定树和判定表。 PAD(问题分析图 )、 PFE (程序流程用 )、 N-S(盒式图 )都是详细设计的常用工具,不是需求分析的工具。 7 【正确答案】 C 【试题解析】 软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。 8 【正确答案】 A 【试题解析】 耦合性是模块间互相连接的紧密徽的度量,
22、取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。 9 【正确答案】 D 【试题解析】 在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些 处理,接受者独立决定采用什么方式完成所需的处理。 10 【正确答案】 D 【试题解析】 物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题,包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。 11 【正确答案】 C 【试题解析】 函数类型决定了函数返回值的类型。函数值返回类型可以由编译器自动完成类型转换。在函数有返回值的调用中,编译器将
23、return后面的表达式的类型,强制转换为该函数定义时指定的返回值类型。 12 【正确答案】 D 【试题解析】 本题主要考查 Ct+语言的基本语法,选项 A中应该为 m n|mn:选项 B中 default语句可有可无;选项 C中订可以单独作为一条语句,不必须和 else搭配。 13 【正确答案】 D 【试题解析】 使用 ifstream流类定义流对象并打开磁盘文件时,文件没有默认的打开方式。其中 ios: in是为输入而打开; iso: out是为输出而打开。 14 【正确答案】 C 【试题解析】 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而友元
24、函数则是为了增 加类的访问灵活行而允许其他类的成员函数成全局函数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。 15 【正确答案】 A 【试题解析】 本题考查运算符的重载。 Ct+中, “:、 *、 ?: ”这 4个运算符不能重载。 16 【正确答案】 C 【试题解析】 题中函数声明带有默认参数,那么在 C选项的调用中,将会把字符型实参 #赋值给整型形参 b,这不符合参数传递规则。 17 【正确答案】 D 【试题解析】 语句 p= 【试题解析】 fetream没有默认的打开模式,因此在打开文件时必须在ios_base: out.10s_ base: in、 ios_base: in/ios_base: out这三个打开模式中指定一个。 50 【正确答案】 public。 【试题解析】 本题考查 C+中运算符重载的固定格式和要求。 C+中不论用成员函数还是友元函数重载运算符都必须用关键宇 operator,都必须将函数声明为公有的。