1、国家二级( C+)笔试模拟试卷 35及答案与解析 1 软件部件的内部实现与外部可访问分离是指软件的 _。 ( A)共享性 ( B)封装性 ( C)继承性 ( D)多态性 2 一个栈的输入序列为 1 2 3 4 5,则下列序列中不可能是栈的输出序列的是 _。 ( A) 2 3 4 1 5 ( B) 5 4 1 3 2 ( C) 2 3 1 4 5 ( D) 1 5 4 3 2 3 在长度为 n的顺序表的第 i(1in+1)个位置上插入一个元素,元素的移动次数为 _。 ( A) n-i+1 ( B) n-i ( C) i ( D) i-1 4 在一个单链表中,若 p所指结点不是最后结点,则删除 p
2、所指结点的后继结点的正确操作是 _。 ( A) p=p next ( B) p next p next ( C) p- next=p next- next ( D) p-next=p 5 若一棵二叉树具有 10个度为 2的结点,则该二叉树的度为 0的结点个数是 _。 ( A) 9 ( B) 11 ( C) 12 ( D)不确定 6 软件需求分析阶段建立原型的主要目地是 _。 ( A)确定系统的性能要求 ( B)确定系统的运行要求 ( C)确定系统是否满足用户需要 ( D)确定系统是否满足开发人员需要 7 模块内聚度越高,说明模块内各成分彼此结合的程度越 _。 ( A)松散 ( B)紧密 ( C
3、)无法判断 ( D)相等 8 概念模型是 _。 ( A)用于信息世界的建模,与具体的 DBMS无关 ( B)用于信息世界的建模,与具体的 DBMS有关 ( C)用于现实的建模,与具体的 DBMS无关 ( D)用于现实的建模,与具体的 DBMS有关 9 在数据库设 计中使用 E-R图工具的阶段是 _。 ( A)需求分析阶段 ( B)数据库物理设计阶段 ( C)数据库实施 ( D)概念结构设计阶段 10 如果关系 R中有 4个属性和 3个元组,关系 S中有 3个属性和 5个元组,则RS的属性个数和元组个数分别是 _。 ( A) 7和 8 ( B) 7和 15 ( C) 12和 8 ( D) 12和
4、 15 11 在 C+语言中, 080是 _。 ( A)十进制数 ( B)八进制数 ( C)十六进制数 ( D)非法数 12 以下程序段的输出结果是 _。 int a=5, b=4, c=6, d; cout (d=ab?(a c?a:c):b); ( A) 5 ( B) 4 ( C) 6 ( D)不确定 13 下列程序的输出结果是 _。 #include iostream.h void main() int x=6, y=8; if(x1+ 6) cout +y end1; if(x 6) cout -y end1; else cout y+ end1; ( A) 8 ( B) 9 ( C)
5、 7 ( D)编译不成功 14 下述关于 break语句的描述中, _ 是不正确的。 ( A) break语句可用于循环体内,它将退出该循环 ( B) break语句可用于 switch语句中,它将退出 switch语句 ( C) break语句可用于 if体内,它将退出 if语句 ( D) break语句在一个循环内可以出现多次 15 定义一个具有 10个元素的整型数组,应当使用语句是 _。 ( A) int a10 ( B) iht a2, 5 ( C) int a ( D) int*a10: 16 以下程序的输出结果是 _。 #include iostream.h void main()
6、 char w10=“ABC“, “DEFGH“, “IJKL“, “MNOP“ k; for(k=1; k 3;k+) cout wk “ “; ( A) ABC FGH KL ( B) ABC EFG IJ U ( C) EFG JK 0 ( D) DEFGH IJKL 17 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 _。 ( A)地址传递 ( B)单向值传递 ( C)由实参传给形参,再由形参传给实参 ( D)传递方式由用户指定 18 下面的函数原型非法的是 _。 ( A) void f(int a=1, int b=1) ( B) int f(double f,
7、 char s, int i=1, int j) ( C) void f(int a, int b) ( D) int f(double f, char s, int i=1, int j=0) 19 对于基类型相同的两个指针变量之间,不能进行的运算是 _。 ( A) ( B) ( C) + ( D) 20 若有 int x=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=x;则值为 4的表达式是 _。 ( A) p+=2, *(p+) ( B) p+=2, *+p ( C) p+=3, *p+ ( D) p+=2, +*p 21 以下程序的输出结果是 _。 #includ
8、e iostream.h #include string.h void main() char *p1=“, hello“, *p2=“world!“, str50: “Hii“; strcpy(str+2, p1); strcat(str, p2); cout str; ( A) Hii, hello world! ( B) hello world! ( C) ii, hello world! ( D) Hi, hello world! 22 有关类和对象的说法不正确的是 _。 ( A)对象是类的一个实例 ( B)一个类只能有一个对象 ( C)任何一个对象只能属于一个具体的类 ( D)类与对
9、象的关系和数据类型和变量的关系相似 23 已知类 A中的一个成员函数的说明如下: void SetValue(A public: Sample(); Sample(int a)x=a; Sample(Sample void disp()cout “x=“ x end1; void main() Sample s1(2), s2(s1); s2.disp(); ( A) x=2 ( B) x=3 ( C) x不确定 ( D) x=0 25 已知一个类 A的定义如下,则执行 “Ax(3); ”语句后, x.a和 x.b的值分别为 _。 class A int a, b; public: A(int
10、 aa=1, int bb=0)a=aa;b=bb ; ( A) 1和 0 ( B) 3和 1 ( C) 1和 3 ( D) 3和 0 26 下列关于派生类的构造 函数的说法中,哪个是错误的 _。 ( A)派生类不继承基类的构造函数和赋值运算 ( B)派生类的构造函数可以调用基类的构造函数 ( C)派生类的构造函数先于基类的构造函数执行 ( D)在建立派生类的实例对象时,必须调用基类的构造函数来初始化派生类对象中的基类成员 27 指出下面程序段中的错误的是 _。 class X/A int a,b; public: X(int aa, int bb) a=aa; b=bb;/B : X x(2
11、,3);/C X y(4); /D 28 当一个类的某个函数被说明为 virtual时,该函数在该类的所有派生类中 _。 ( A)都是虚函数 ( B)只有被重新说明时才是虚函数 ( C)只有被重新说明为 virtual时才是虚函数 ( D)都不是虚函数 29 公有继承的情况下,基类成员在派生类中的访问权限 _。 ( A)受限制 ( B)保持不变 ( C)受保护 ( D)不受保护 30 下面描述中正确的是 _。 ( A) virtual可以用 于声明虚函数 ( B)含有纯虚函数的类不可以用来创建对象 ( C)即使基类的构造函数没有参数,派生类也必须建立构造函数 ( D)静态数据成员可以通过成员初
12、始化列表来初始化 31 下列有关虚基类的声明中,语法格式正确的是 _ 。 ( A) class virtual B :public A ( B) virtual class B :public A ( C) class B :public A virtual ( D) class B :virtual public A 32 类的析构函数的作用 是 _。 ( A)一般成员函数 ( B)类的初始化 ( C)对象的初始化 ( D)删除对象创建的所有对象 33 下列不能被重载的运算符是 _。 ( A) + ( B) ( C) ?: ( D) a=10; b=c=d=5; i=j=k=0; for(;
13、a b; +b) i+; while(a +c) j+; do k+; while(a d+); 42 下面程序实现输出从 “!”开始的 91个 ACCII字符及码值,要求每行输出 7项。请完成程序。 #include iostream.h void main( ) char c= “!“; int d , n=1; do while (n =7) d=c; cout c “=“ d “”; c+ n+; cout “n“ ; 【 】 ; while(c = ! +90) cout “n“ ; 43 以下程序的输出结果是【 】。 #include iostream. h void main()
14、 char *x6 = “Would“ , “you“ , “like“ , “C“ “Plus“ “Plus“ int i=0; while (i 4) if (i=3) cout xi “?“ ; else cout xi “ “; i+; cout end1; 44 当输入 d的值 22时,以下程序的输出结果是【 】。 void bin (int b) if (b = 2) bin(b/2); cout b%2; void main() int d; cin d; bin(D) ; 45 以下程序的输出结果是【 】。 #include iostream. h void main() in
15、t *p; p=new int; *p=200; cout *p; delete p; 46 以下程序的输出结果是【 】。 #include iostream. h void main() int a= 1, 3, 5, 7, *p=a, i; for (i=0; i 4: i+) ai=*p+; cout a2; 47 下列程序的运行结果是【 】。 include iostream. h class Sample int x,y; public: Sample() x=y=0; Sample(int a, int b) x=a;y=b; void disp() cout “ x=“ x “
16、, y=“ y end1; ; void main() Sample s1, s2(1, 2); s1. disp0; s2. disp (); 48 指出下面程序段中的错误,并说明出错原因【 】。 class Location int X, Y=20; protected: int zeroX, zeroY; int SetZero(int ZeroX, iht ZeroY); private: int length, height; public: float radius; void init(int initX, int initY); int GetX(); Int GetY();
17、; 49 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行【 】。再执行成员对象的构造函数,后执行派生类本身的构造函数。 50 类的成员函数中,只能用于检测输入操作的函数是【 】。 51 下列程序中声明了两个类 AA和 BB,其中函数 “print”是类 AA的成员函数,但是类 BB的友元函数。 请在 、 和 处各填入正确的内容,使程序能正常运行。 #include iostream.h 【 】 ; class AA int t; public: AA(int x)t=x; void print(BB ; class BB int s; public: BB(int y)s=y;
18、 friend void 【 】 print(BB BB n(8); m.print(n); 输出结果为: AA: 6; BB: 8 国家二级( C+)笔试模拟试卷 35答案与解析 1 【正确答案】 B 2 【正确答案】 B 3 【正确答案】 A 4 【正确答案】 C 5 【正确答案】 B 6 【正确答案】 C 7 【正确答案】 B 8 【正确答案】 C 9 【正确答案】 D 10 【正确答案】 B 11 【正确答案】 D 12 【正确答案】 C 13 【正确答案】 C 14 【正确答案】 C 15 【 正确答案】 A 16 【正确答案】 D 17 【正确答案】 B 18 【正确答案】 B 1
19、9 【正确答案】 C 20 【正确答案】 C 21 【正确答案】 D 22 【正确答案】 B 23 【正确答案】 C 24 【正确答案】 B 25 【正确答案】 D 26 【正确答案】 C 27 【正确答案】 8 28 【正确答案】 A 29 【正确答案】 A 30 【正确答案】 A 31 【正确答案】 D 32 【正确答案】 D 33 【正确答案 】 C 34 【正确答案】 A 35 【正确答案】 D 36 【正确答案】 n-i+1 37 【正确答案】 面向对象程序设计 38 【正确答案】 h 39 【正确答案】 软件开发工具 40 【正确答案】 差 41 【正确答案】 6 42 【正确答案】 n= 1 43 【正确答案】 Would you like C? 44 【正确答案】 10110 45 【正确答案】 200 46 【正确答案】 5 47 【正确答案】 此程序的运行结果为: x=0, y=0 x=1, y=2 48 【正确答案】 int X,Y=20; 出错,不能采用这种方式初始化 49 【正确答案】 基类的构造函数 50 【正确答案】 eof 51 【正确答案】 class BB; AA: AA:print(BB &w)