1、国家二级( C+)笔试模拟试卷 36及答案与解析 1 数据结构中,通常采用两种方法衡量算法的时间复杂性,即 _。 ( A)最大时间复杂性和最小时间复杂性 ( B)最好时间复杂性和最坏时间复杂性 ( C)部分时间复杂性和总体时间复杂性 ( D)平均时间复杂性和最坏时间复杂性 2 对于顺序存储的队列,存储空间大小为 n,头指针为 F,尾指针为 R。若在逻辑上看成一个环,则队列中元素的个数为 _。 ( A) R-F ( B) n+R-F ( C) (R-F+1)mod n ( D) (n+R-F)mod n 3 在长度为 n的顺序表的第 i(1in+1)个位置上插入一个元素,元素的移动次数为 _。
2、( A) n-i+1 ( B) n-i ( C) i ( D) i-1 4 若某完全二叉树的深度为 h,则该完全二叉树中至少有 _ 个结点。 ( A) 2h ( B) 2(h-1) ( C) 2(h-1)-1 ( D) 2(h-1)+1 5 某二叉树的中序序列和后序序列正好相反,则该二叉树一定是 _ 的二叉树。 ( A)空或只有一个结点 ( B)高度等于其结点数 ( C)任一结点无左孩 子 ( D)任一结点无右孩子 6 软件文档是软件工程实施中的重要部分, 它不仅是软件开发各阶段的重要依据,而且影响软件的 _ 。 ( A)可理解性 ( B)可维护性 ( C)可扩展性 ( D)可移植性 7 程序
3、的三种基本控制结构的共同特点是 _。 ( A)不能嵌套使用 ( B)只能用来写简单程序 ( C)已经用硬件实现 ( D)只有一个入口和一个出口 8 数据库管理系统 DBMS中用来定义模式、内模式和外模式的语言是 _ 。 ( A) DML ( B) C ( C) DDL ( D) Pascal 9 一个教师能开多门课程,一门课程有许多教师会开,实体课程与实体教师间是 _。 ( A)一对一的联系 ( B)一对多的联系 ( C)多对多的联系 ( D)多对一的联系 10 设 R和 S为二个关系, _ 中的符号分别代表选择、投影、笛卡儿积的关系代数运算 ( A) F(R)、 A(R)、 RS ( B)
4、EA(R)、 VA(S), R*S ( C) RS、 R S、 RS ( D) A(R)、 F(R)、 RS 11 每个 C+程序都必须有且仅有一个 _。 ( A)预处理命令 ( B)主函数 ( C)函数 ( D)语句 12 将小写字母 n赋值给字符变量 one_char,正确的操作是 _。 ( A) one_char=n ( B) one_char=“n“ ( C) one_char=110 ( D) one_char=N 13 设 x是值为 10的 int型变量,则在计算表达式 x+=x-=x-x后, x的值为 _。 ( A) 1 ( B) 20 ( C) 40 ( D) 30 14 只有
5、当整数 x为奇数时,其值才是 true的表达式是 _。 ( A) x%2=0 ( B) !(x%2=0) ( C) (x-x/2*2)=0 ( D) !(x%2) 15 以下程序的输出结果是 _。 #include iostream.h void main() int i, j; for(j=10; j =11; j+) for(i=9; i j: j+) if(!(j%i)break; if(i j 1)cout j “ “ ; ( A) 11 ( B) 10 ( C) 10 11 ( D) 9 16 有以下定义,则此数组的元素中不正确的一个赋值结果是 _。 static int a10=1
6、, 2, 3, 4, 5; ( A) a10=2 ( B) a0=1 ( C) a3=4 ( D) a7=0 17 阅读以下程序,写出程序运行后的输出结果是 _。 #include iostream.h void main() char a=H, e, r, 1, o, 0; int i, j; i=sizeof(a)/sizeof(char); j=strlen(a) cout i j; ( A) 6 6 ( B) 5 6 ( C) 1 5 ( D) 6 5 18 设 x为 int的变量,不能正确表达数学关系 10 x 15的表达式是 _。 ( A) 10 x 15 ( B) x=1|x=1
7、2|x=13|x=14 ( C) x 10; i+)表示无限循环 ( B) for(; )表示无限循环 ( C) for()也表示无限循环 ( D) while(1)表示无限循 20 若有以下的定义, int a =1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=a;则值为3的表达式是 _。 ( A) p+=2, *(p+) ( B) p+=2, *+p ( C) p+=3, *p+ ( D) p+=2, +*p 21 在下面程序运行 #include iostream.h int func(char s) int length=0; while(*(s+length)le
8、ngth+; return length; void main() char a10, *ptr=a; cin ptr; cout fune(ptr) end1; 如果输入字符串 Hello!并回车,则输出结果为 _。 ( A) 4 ( B) 7 ( C) 6 ( D) 5 22 下列程序的输出结果是 _。 #include iostream.h void main() int a=1, 2, 3, 4, 5, 6, *p, *q; p=a; q= cout*(p+); cout *q end1; ( A) 34 ( B) 56 ( C) 12 ( D) 23 23 析构函数的特征是 _。 (
9、 A)一个 类中只能有一个析构函数 ( B)析构函数名与类名相同 ( C)析构函数的定义只能在类体内 ( D)析构函数可能有一个或多个参数 24 有如下的对类 “X”的说明,其中 _ 是错误的。 class X ( A) int a=10; ( B) X(); public: ( C) X(int val); ( D) X(); 25 以下程序的执行后, x和 y的值是 _ 。 #include iostream. h class Sample public: int x; int y; void disp() cout “x=“x “, y=“ y end1; ; void main() i
10、nt Sample: :*pc; Sample s; pc= s. *pc=10; pc= s. *pc=.20; s. disp (); ( A) x=10, y=20 ( B) x=20, y=10 ( C) x=10, y=10 ( D) x=20, y=20 26 下面关于友元函数描述正确的是 _。 ( A)友元函数能访问类的所有成员 ( B)友元函数是类的成员 ( C)只有函数才能声明为另一个的友元 ( D)友元函数能访问类的私有成员 27 下列说法有错误的是 _。 ( A)公有继承时基类的 public成员在派生类中仍是 public ( B)私有继承时基类的 public成员在派
11、生类中为 private ( C)保护继承时基类的 protected成员在派生类中是 protectcd ( D)保护继承时基类的 private成员在派生类中是 protected 28 若类 A和类 B的定义如下: class A public: int i, j; void get(); ; class B: A int i, j; protected; int k; public: void make(); ; void B: :make()(k=i*j; 则其中 _ 是非法的表达式。 ( A) void get(); ( B) int k; ( C) void make(); (
12、D) k=i*j; 29 设置虚基类的目的是 _。 ( A)简化程序 ( B)消除二义性 ( C)提高程序运行效率 ( D)减少目标代码 30 下面程序的结果是 _。 #include iostream.h class A public: virtual void fun()=0; ; class B:public A public: void fun () cout “new file“ ; ; class C: public A public: void fun ()cout “open file“ “ “ ; class D: public A public: void fun () c
13、out “save filen“ ; ; void main() A a,*p; B b; C c; D d; p= p- fun (); p= p- fun (); p= p- fun(); ( A) new file open file save file ( B) new file new file new file ( C)编译出错 ( D) open file new file save file 31 通过 _ 调用虚函数时,采用动态束定。 ( A)对象指针 ( B)对象名 ( C)成员名限定 ( D)派生类名 32 关于动态联编的下列叙述中, _ 是错误的。 ( A)动态联编是以
14、虚函数为基础的 ( B)动态联编调用虚函数操作是指向对象的指针或引用 ( C)动态联编是 在运行时确定所调用的函数代码的 ( D)动态联编是在编译时确定操作函数的 33 如果表达式 +i*k中的 “+”和 “*”都是重载的非静态成员运算符,则采用运算符函数调用格式,该表达式还可表示为 = _。 ( A) operator*(i.perator+(), k) ( B) operator*(operator+(i), k) ( C) (i. operator+().operator*(k) ( D) k.operator*(operator+(i) 34 输入流对象是输出流的源头,下面 _ 不是输
15、入流类。 ( A) cin ( B) istream ( C) ifstream ( D) istrtream 35 语句 ofstream f(“SALARY.DAT“ , ios:app | los:binary);的功能是建立流对象f,试图打开文件 SALARY.DAT并与之连接,并且 _。 ( A)若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 ( B)若文件存在,将其置为空文件;若文件不存在,打开失败 ( C)若文件存在,将文件写指针定位于文件首;若 文件不存在,建立一个新文件 ( D)若文件存在,打开失败;若文件不存在,建立一个新文件 36 在面向对象的程序设计
16、中,类描述的是具有相似性质的一组【 】。 37 面向对象的模型中,最基本的概念是对象和【 】。 38 冒泡排序在最好情况下时间复杂度为【 】。 39 在 C+中,下列程序段的输出结果是【 】。 int x, a10; cout sizeof(x) “” sizeof(a) “” sizeof(float) end1 40 假设 a, b,和 c都是整型变量,且值都是 5,执行 a-=+b+c-;则 a, b,和 c的结果分别是【 】。 41 C+中使用【 】代替 C语言中的宏。 42 程序段的输出结果是【 】。 int a=12, b=12; cout - -a “” b; 43 程序段的输出
17、结果是【 】。 int x=3, y=2, z=1; count (x/y cout “请输入整数 ”; cin n; for(i=1; i n; i+) if(n%i= =0) k=k+i; if(n= =k)cout n “是完数 n”; else cout n “不是完数 n”; 45 每个对象都维护了一个指向自身的指针,这个指针称为【 】指针 46 定义重载函数时,应在参数个数或参数类型上【 】。 47 基类 的【 】不能被派生类的成员访问,基类的【 】在派生类中的性质和继承的性质一样,而基类的【 】在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。 国
18、家二级( C+)笔试模拟试卷 36答案与解析 1 【正确答案】 D 2 【正确答案】 A 3 【正确答案】 A 4 【正确答案】 B 5 【正确答案】 C 6 【正确答案】 B 7 【正确答案】 D 8 【正确答案】 C 9 【正确答案】 C 10 【正确答案】 A 11 【正确答案 】 B 12 【正确答案】 C 13 【正确答案】 B 14 【正确答案】 B 15 【正确答案】 C 16 【正确答案】 A 17 【正确答案】 D 18 【正确答案】 A 19 【正确答案】 C 20 【正确答案】 A 21 【正确答案】 C 22 【正确答案】 C 23 【正确答案】 A 24 【正确答案】
19、 A 25 【正确答案】 A 26 【正确答案】 D 27 【正确答案】 D 28 【正确答案】 D 29 【正确答案】 B 30 【正确答案】 C 31 【正确答案】 A 32 【正确答案】 D 33 【正确答案】 B 34 【正确答案】 A 35 【正确答案】 B 36 【正确答案】 对象 37 【正确答案】 类 38 【正确答案】 O(n) 39 【正确答案】 4 40 4 40 【正确答案】 -6 6 4 41 【正确答案】 内联函数 42 【正确答案】 11 13 43 【正确答案】 0 44 【正确答案】 请输入整数 : 28 28是完数 45 【正确答案】 this 46 【正确答案】 不同 47 【正确答案】 私有成员 公有成员 保护成员