1、2011年 9月国家二级( C+)笔试真题试卷及答案与解析 1 下列叙述中正确的是 ( )。 A) 算法就是程序 B) 设计算法时只需要考虑数据结构的设计 C) 设计算法时只需要考虑结果的可靠性 D) 以上三种说法都不对 2 下列关于线性链表的叙述中,正确的是 ( )。 A) 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B) 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C) 进行插入与删除时,不需要移动表中的元素 D) 以上三种说法都不对 3 下列关于二叉树的叙述中,正确的是 ( )。 A) 叶子结点总是比度为 2的结点少一个 B) 叶子结点总是
2、比度为 2的结点多一个 C) 叶子结点数是度为 2的结点数的两倍 D) 度为 2的结点数是度为 1的结点数的两倍 4 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 A) 学生成绩管理系统 B) C语言编译程序 C) UNIX操作系统 D) 数据库管理系统 5 程序调试的任务是 ( )。 A) 设计测试用例 B) 验证程序的正确性 C) 发现程序中 的错误 D) 诊断和改正程序中的错误 6 下列关于数据库设计的叙述中,正确的是 ( )。 A) 在需求分析阶段建立数据字典 B) 在概念设计阶段建立数据字典 C) 在逻辑设计阶段建立数据字典 D)
3、在物理设计阶段建立数据字典 7 数据库系统的三级模式不包括 ( )。 A) 概念模式 B) 内模式 C) 外模式 D) 数据模式 8 下列选项中属于面向对象设计方法主要特征的是 ( )。 A) 继承 B) 自顶向下 C) 模块化 D) 逐步求精 9 在对函数进行原型声明时,下列语法成分 中,不需要的是 ( )。 A) 函数返回类型 B) 函数参数列表 C) 函数名 D) 函数体 10 下列关于 this指针的描述中,正确的是 ( )。 A) 类的成员函数都有 this指针 B) 类的友元函数都有 this指针 C) 任何与类相关的函数都有 this指针 D) 类的非静态成员函数都有 this指
4、针 11 有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB:public AA public: BB(intn)_ ; 其中横线处缺失部分是 ( )。 A) :a(n) B) :AA(n) C) a(n); D) a=n;) 12 为类 Matrix重载下列运算符时,只能作为 Matrix类成员函数重载的运算符是( )。 A) + B) = C) D) + 13 下列关于模板的描述中,错误的是 ( )。 A) 类模板的成员函数都是模板函数 B) 函数模板是一种参数化类型的函数 C) 满足一定条件时可以省略模板 实参 D) 模
5、板形参只能由关键字 typename声明 14 要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是( )。 A) fstream B) istreara C) ostream D) iomanip 15 下列选项中,不是 C+关键字的是 ( )。 A) class B) function C) friend D) virtual 16 若有定义语句 “int i=2, j=3;”,则表达式 i/j的结果是 ( )。 A) 0 B) 0.7 C) 0.66667 D) 0.66666667 17 下列语句中,与语句 “n=(a b?(b c?1:0):0);”的功能等价的是 (
6、 )。 A) if(a = B) n=0; B) if(a B) |(b C) )n=1; else n=0; C) if(a B) if(b C) n=h else n=0; else n=0; D) if(a B) n=1; else if(b =C) n=1; else if(b C) n=1; else n=0; 18 有如下语句序列: int x=100, cout x - r end1: 己知其中变量 x的地址为 0012FF7C,则执行该语句序列的输出结果为 ( )。 A) 100-100 B) 100-0012FF7C C) 0012FF7C-100 D) 0012FF7C-0
7、012FF7C 19 己知函数 f的原型是 “void f(int*x, int ”,变量 v1、 v2的定义是 “int v1, v2;”,下列调用语句中,正确的是 ( )。 A) f(v1, v2); B) f(v1, C) f( D) f( 20 有如下类定义: class Sample public; Sample(int x):ref(x) / private: Sample():ref(0) / static int val=5; / const int ref; / ; 上述程序段中,错误的语句是 ( )。 A) B) C) D) 21 有如下类定义: class B publi
8、c: void fun1() private: void fun2() protected: void fun3() ; class D: public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是 ( )。 A) obj. fun1(); B) obj. fun2(); C) obj. fun3(); D) obj. fun4(); 22 有如下类定义 class MyClass public: Private: int data; ; 若要为 MyClass类重载流输入运算符,使得程序中可以 “cin obj;”形式输入
9、 MyClass类的对象 obj,则横线处的声明语句应为 ( )。 A) friend istream B) friend istream C) istream D) istream 23 已知主函数中通过如下语句序列实现对函数模板 swap的调用: int a10, b10; swap(a, b, 10); 下列对函数模板 swap的声明中,会导致上述语句序列发生编译错误的是 ( )。 A) template typename T void swap(T a, T b, int size); B) template typename T void swap(int size, T a, T
10、b); C) template typename T1, typename T2 void swap(T1 a, T2 b, int size); D) template class T1, class T2 void swap(T1 a, T2 b, int size); 24 若目前 D盘根目录下并不存 在 test. txt文件,则下列打开文件方式不会自动创建 test.txt文件的是 ( )。 A) ifstream fin; fin. open(“d:test.txt“, ios_base:in); B) fstream fio; fio. open(“d:test. txt“, i
11、os_base:out); C) ofstream fout; fout. open(“d:test. txt“, ios_base:out); D) ofstream fout; fout. open(“d:test. txt“, ios_base:app); 25 已知类 Myclass的定义如下 class MyClass public: void function1(MyClass void function3()cout data; staric void function4()cout data; private: int data; ; 其中有编译错误的函数是 ( )。 A) f
12、unction1 B) function2 C) function3 D) function4 26 有如下程序: #include iostream using namespace std; class MyClass public: MyClass() cout *;) MyClass(MyClass) MyClass() cout ;) ; int main(); MyClass a; Myclass b(A); return 0; 运行时的输出结果是 ( )。 A) *# B) #* C) *# D) #* 27 已知类 Myclass的定义如下: class MyClass publ
13、ic: MyClass(int D) data=d; MyClass () private: int data; ; 下列对 Myclass类对象数组的定义和初始化语句中,正确的是 ( )。 A) MyClass arrays2; B) MyClass arrays2=MyClass(5); C) MyClass arrays2=MyClass(5), MyClass(6); D) MyClass*arrays=new MyClass2; 28 有如下程序: class Base public: int data; ; class Derived1:public Base; class Der
14、ived2:protected Base; int main() Derived1 d1; Derived2 d2; d1. data=0; / d2. data=0; / return 0; 下列关于程序编译结果的描述中,正确的是 ( )。 A) 皆无编译错误 B) 有编译错误, 无编译错误 C) 无编译错误, 有编 译错误 D) 皆有编译错误 29 有如下程序: #include iostream using namespace std; class Base1 public: Base1(int D)cout d; Base1() ; class Base2 public: Base2(
15、int D)cout d; Base2 () ; class Derived:public Base1, Base2 public: Derived(int a, int b, int c, int D) ; Base1(B), Base2( A), b1(D), b2(C) Private: int b1; int b2; ; int main() Derived d(1, 2, 3, 4); return 0; 运行时的输出结果是 ( )。 A) 1234 B) 2134 C) 12 D) 21 30 有如下程序: #include iostream using namespace std
16、; class Base public: virtual void function1()cout 0; void function2()cout 1; ; class Derived:public Base public: void function1()cout 2; void function2()cout 3; ; int main() Base*P=new Derived(); p- function1(); p- function2(); return 0; ; 运行时的输出结果是 ( )。 A) O1 B) 21 C) 03 D) 23 31 若为 Fraction类重载前增 1
17、运算符 +,应在类体中将其声明为 ( )。 A) Fraction B) Fraction C) friend Fraction D) friend Fraction 32 有如下程序: #include iomanip #include iostream using namespace std; int main() cout setfill(*) setw(6) 123 456; return 0; 运行时的输出结果是 ( )。 A) *123*456 B) *123456* C) *123456 D) 123456 33 有如下程序: #include iostream using na
18、mespace std; void function2(int n); void function1(int n) if(n =0)retum; function2(n-2); void function2(int n) if(n =0)return; function1(n-1); int main() function1(5); return 0; 下列关于程序运行情况的描述中,正确的是 ( )。 A) function1运行 1次, function2运行 2次 B) function1运行 2次, function2运行 1次 C) function1运行 2次, function2运
19、行 3次 D) function1运行 2次, function2运行 2次 34 数据结构分为线性结构与非线性结构,带链的栈属于 _。 35 在长度为 n的顺序存储的线性表 中插入一个元素,最坏情况下需要移动表中_个元素。 36 常见的软件开发方法有结构化方法和面向对象方法。对某应用系统经过需求分析建立数据流图 (DFD) ,则应采用 _方法。 37 数据库系统的核心是 _。 38 在进行关系数据库的逻辑设计时, E-R图中的属性常被转换为关系中的属性,联系通常被转换为 _。 39 若有 “intx=15, y=20;”,则执行表达式 y-=x+后,表达式 x+y的值为 _。 40 执行语句
20、序列 “int k=0; do k+; while(k*k 20);”后, k的值为 _。 41 下列程序运行时的输出结果是 _。 #include iostream using namespace std; int Xfun(int*a, int n); int main() int b6=-2, 6, 8, -3, 5, 4); cout Xfun(b, 6) end1; return 0; int Xfun(int*a, int n) int x=0; for(int*p=a; p a+n; p+)if(*p 0)x+=*p; return X; 42 下列程序运行时的输出结果是 _。
21、#include iostream using namespace std; void Xfun(int int main() int a=3, b=4; Xfun(a, B) ; cout a*a+b end1; return 0; void Xfun(int x=y; y=z; 43 若 Xcs是一个类,该类中具有一个函数体为空的不带参数的构造函数,此构造函数的类外定义为 _。 44 有如下程序: #include iostream using namespace std; class Sac int n; public: Sac():n(4)cout n; Sac(int k):n(k)
22、cout n; Sac()cont n+n; ; int main() Sac s1,*s2; s2=new Sac(3); delete s2; return 0; 运行时的输出结果是 _。 45 有如下两个类声明 class AA public: int m; ; class BB: protected AA int n; ; 在类 BB中,数据成员 m的访问属性是 _ ,数据成员 n的访问属性是 _ 。 46 已知类 Ben中将二元运算符 “/”,重载为友元函数,若 c1、 c2是 Ben的两个对象当使用运算符函数进行显式调用时,与表达式 c1/c2等价的表示为 _。 47 C+中的模板
23、分为函数模板和 _。 2011年 9月国家二级( C+)笔试真题试卷答案与解析 1 【正确答案】 D 2 【正确答案】 C 3 【正确答案】 B 4 【正确答案】 A 5 【正确答案】 D 6 【正确答案】 A 7 【正确答案】 D 8 【正确答案】 A 9 【正确答案】 D 10 【正确答案】 D 11 【正确答案】 B 12 【正确答案】 B 13 【正确答案】 D 14 【正确答案】 D 15 【正确答案】 B 16 【正确答案】 A 17 【正确答案】 C 18 【正确答案】 A 19 【正确答案】 C 20 【正确答案】 C 21 【正确答案】 A 22 【正确答案】 A 23 【正
24、确答案】 B 24 【正确答案】 A 25 【正确答案】 D 26 【正确答案】 C 27 【正确答案】 C 28 【正确答案】 C 29 【正确答案】 D 30 【正确答案】 B 31 【正确答案】 A 32 【正确答案】 C 33 【正确答案】 D 34 【正确答案】 线性结构 35 【正确答案】 n 36 【正确答案】 结构化 37 【正确答案】 数据库管理系统 (或 DBMS) 38 【正确答案】 关系 39 【正确答案】 21 40 【正确答案】 5 41 【正确答案】 23 42 【正确答案】 19 43 【正确答案】 Xcs:Xcs() 44 【正确答案】 4368 45 【正确答案】 保护成员 私有成员 46 【正确答案】 operator/(c1, c2) 47 【正确答案】 类模板