1、国家二级( C+)笔试模拟试卷 187及答案与解析 1 算法的时间复杂度是指 ( )。 ( A)执行算法程序所需要的时间 ( B)算法程序的长度 ( C)算法执行过程中所需要的基本运算次数 ( D)算法程序中的指令条数 2 下列叙述中正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根结点的二叉树是线性结构 3 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)继承 ( C)封装性 ( D)模块化 4 为了使模块尽可能独立,要 ( )。 ( A)模块的内聚程度要尽量高,且各模块间的耦合程
2、度要尽量强 ( B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 ( C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 ( D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 5 某二叉树共有 60个叶子结点与 50个度为 1的结点,则该二叉树中的总结点数为( )。 ( A) 148 ( B) 169 ( C) 182 ( D) 198 6 以下关于数据的逻辑结构的叙述中,不正确的是 ( ) ( A)数据的逻辑结构是数据间关系的描述 ( B)数据的逻辑结构不仅反映数据间的逻辑关系,而且反映其在计算机中的存储方式 ( C)数据的逻辑结构分为线性结构和非线性结构 ( D)树形
3、结构是典型的非线性结构 7 以下不是结构化程序设计方法的技术是 ( )。 ( A)自顶向下,逐步求精 ( B)自底向上,逐步求精 ( C)从整体到局部 ( D)结构清晰,层次分明 8 数据字典是数据库设计需 求分析阶段的重要工具之一,其最基本的方法是 ( ) ( A) 数据库定义 ( B)数据通信 ( C)数据定义 ( D)数据维护 9 以下程序的输出结果是 ( )。 main() int b33=O,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i 3;i+) for(j=i;j =i;j+) t=t+bibj j; ( A) 2 ( B) 3 ( C) 4 ( D) 5
4、 10 当循 环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 ( A)下溢 ( B)上溢 ( C)异常 ( D)溢出 11 以下程序的输出的结果是 ( )。 #include iostream.h void main() int i,k,a10,p3; k=5; for(i=0;i 9;i+)ai=i; for(i=0;i 3;i+)pi=ai*(i+1); for(i=0;i 3;i+)k+=pi*2; cout k; ( A) 20 ( B) 21 ( C) 22 ( D) 23 12 以下程序的执行结果是 ( )。 #include iostream
5、.h int fun(int b,int n) int i,r=1; for(i=0;i n;i+) r=r*bi; void main() int x,a=1,2,3,4,5,6,7,8; x=fun(a,3); cout x endl; ( A) 5 ( B) 6 ( C) 7 ( D) 8 13 有如下程序: #include iostream using namespace std; int main() int *p; *p=9; cout “The value at p:“ *p; return 0; 编译运行程序将出现的情况是 ( ) ( A)编译时出现语法错误,不能生成可执行文
6、件 ( B)运行时一定输出 : The value at p: 9 ( C)运行时一定输出: The value at p: *9 ( D)运行时有可能出错 14 下列有关指针的用法中,错误的是 ( )。 ( A) int i;int *p= ( B) int i;int *p;i=*p; ( C) int *p;p=0; ( D) int i=5;int *p;p= 15 如果有以下定义及初始化: int a=3,*p= 则由此可以推断, *p的值是( )。 ( A)变量 a的值, 即 3 B) ( B)变量 a的地址值 ( C)变量 P的地址值 ( D)无意义 16 执行语句序列 int
7、x=1, cout x - y endl; 输出结果为( ) ( A) x-x ( B) 1-1 ( C) 1-0 ( D)异常 17 下列程序输出的结果是 ( )。 #include stdio.h fun1(char a,char b)char c;c=a;a=b;b=c; fun2(char*a,char b)char c;c=*a;*a=b;b=c; fun3(char*a,char*b)char c;c=*a;*a=*b;*b=c; void main() char a,b; a=A;b=B;fun1(a,b);putchar(a);putchar(b); a=A;b=B;fun2(
8、putchar(a);putchar(b); a=A;b=B;fun3(putchar(a);putchar(b); putchar(n); A) B) C) D) ( A) BABBAB ( B) ABBBBA ( C) ABBABA ( D) ABABBA 18 下列程序将 x、 y和 z按从小到大的顺序排列,横线处应添加语句 ( )。 template class T void fun (_) T a; 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; ( A) Tx,Ty,Tz ( B) Tx;y;z ( C)
9、 T TestClass2(int i,int j); void printb(); private: int a,b; ; class TestClass1 public: TestClass1() TestClass1(int i,int j); void printa(); private: TestClass2 c; ; TestClassl:TestClass1(int i,int j):c(i,j) void TestClass1:printa() c.printb(); TestClass2:TestClass2(int i,int j) a=i: b=j; void TestC
10、lass2:printb() cout “a=“ a “,“ “b=“ b endl; void main() TestClass1 m(7,9); m.prints(); ( A) a=7, b=8 ( B) a=8, b=7 ( C) a=7, b=9 ( D) a=8, b=9 20 以下程序的输出的结果是 ( )。 #include iostream.h int x=3: void main() void fun(); int i; for(i=1;i x;i+) fun(); void fun() static int x=1; x*=x+1; cout x “ “; ( A) 3,
11、 3 ( B) 2, 2 ( C) 2, 6 ( D) 2, 5 21 若有以下程序: #include iostream using namespace std; int fun() static int i=0; int s=1; s+=i; i+; return s; int main() int i,a=0; for(i=0;i 5;i+) a+=fun(); cout a endl; return 0; 程序运行后,输出的结果是 ( )。 ( A) 20 ( B) 24 ( C) 26 ( D) 15 22 阅读下面程序: #include iostream.h fun(int a,
12、int b) int c; c=a+b; return c; void main() int x=6,y=7,z=8,r; r=fun(x-,y+,x+y),z-); cout r endl; 则该程序的输出结果是 ( )。 ( A) 11 ( B) 20 ( C) 21 ( D) 31 23 对虚函数的调用 ( )。 ( A)一定使用动态联编 ( B)必须使用动态联编 ( C)一定使用静态联编 ( D)不一定使用动态联编 24 下列函数的运行结果是 ( )。 #include iostream.h int add(int a,int b); void main() extern int x,
13、y; cout add(x,y) endl; int x(20),y(5); int add(int a,int b) int s=a+b; return s; ( A) 25 ( B) 30 ( C) 20 ( D) 15 25 下列函数的运行结果是 ( )。 #include iostream.h int add(int a,int b); void main() extern int x,y; cout add(x,y) endl; int x(20),y(5); int add(int a,int b) int s=a+b; return s; ( A) 03 ( B) 13 ( C)
14、 14 ( D) 24 26 下面程序的运行结果是 ( )。 #include iostream using namespace std; class TestClass static int n; public: TestClass () n+; static int test() for(int i=0;i 4;i+) n+; return n; ; int TestClass:n=0; int main() cout TestClass:test() “ “; TestClass c1,c2; cout TestClass:test()endl; return (); ( A) 4, 1
15、0 ( B) 4, 6 ( C) 0, 6 ( D) 0, 4 27 当需要将一个函数 bool isnumber(char C) 声明为内联函数时,则此内联函数的函数原型为 ( )。 ( A) enum bool isnumber(char C); ( B) define bool isnumber(char C); ( C) inline bool isnumber(char C); ( D) extern bool isnumber(chat C); 28 下列关于类和对象的叙述中,错误的是 ( )。 ( A)一个类只能有一个对象 ( B)对象是类的具体实例 ( C)类是对某一类对象的抽
16、象 ( D)类和对象的关系是一种数据类型与变量的关系 29 下列关于成员函数特征的描述中,错误的是 ( )。 ( A)成员函数一定是内联函数 ( B)成员函数可以重载 ( C)成员函数可以设置参数的默认值 ( D)成员函数可以是静态的 30 下列关于 C+函数的叙述中,正确的是 ( )。 ( A)每个函 数至少要具有一个参数 ( B)每个函数都必须返回一个值 ( C)函数在被调用之前必须先声明 ( D)函数不能自己调用自己 31 下列关于虚函数的说明中,正确的是 ( )。 ( A)从虚基类继承的函数都是虚函数 ( B)虚函数不得是静态成员函数 ( C)只能通过指针或引用调用虚函数 ( D)抽象
17、类中的成员函数都是虚函数 32 下列运算符不能重载为友元函数的是 ( )。 ( A) = () ( B) + - + - ( C) = = ( D) += -= *= /= 33 有如下函数模板: template class T T square (Tx) return x*x;) 其中 T是( ) ( A)函数形参 ( B)函数实参 ( C)模板形参 ( D)模板实参 34 按照软件测试的一般步骤,集成测试应在 _测试之后进行。 35 软件工程三要素包括方法、工具和过程,其中, _支持软件开发的各个环节的控制和管理。 36 数据库设计包括概念设计、 _和物理设计。 37 在二维表中,元组的
18、 _不能再分成更小的数据项。 38 当使用关键字 _作为函数返回类型时,该函数不返回任何值。 39 已知数组 a中有 n个元素,下列语句将数组 a中从下标 x1开始的 k个元素移动到从下标 x2开始的 k个元素中,其中 0 =x1 x2 n, x2+k n,请将下列语句补充完整。 for(inti=xl+k一 1; i =xl; i-)a_=ai; 40 如下程序的输出结果是 _。 #include iostream using namespace std; int funl(int x)return+x; int fun2(int x)return+x; int main( ) int x:
19、 1, y=2; Y=funl(fun2(x); cout x , y; return 0; 41 如下程序的输出结果是 _。 #include iostream using namespace std; class pumpkin public: pumpkin( )+count; pumpkin( )-eount; static void total_count( )cout count “pumpkin(s)“ endl; private: static int count; ; int pumpkin:count=0; int main( ) pumpkin pl10; pumpkin
20、:total_count( ); return 0; 42 有如下递归函数: int Fun(int n) if(n =1)return 1; _ 请补充完整,使得函数 Fun能够正确计算形参 n的阶乘。 43 请在下列程序中的空格处填写正确的语句: class Sample public: Sample( ) Sample( ) void SetData(int datA) /将 Sample类成员变量 data设置成形参的值 _ private: int data; ; 44 有如下类定义,请将 Sample类的复制构造函数补充完整。 class Sample public: Sample
21、( ) Sample( )if(P)delete P; ) Sample(const Samples)_ void SetData(int datA) P=new int(datA) ; private: int*P: ; 45 如下程序的输出结果是 _。 #include iostream using namespace std; class Wages /“工资 ”类 double base; /基本工资 double bonus; /奖金 double tax; /税金 public: Wages(double CBase, double CBonus, doable CTax): ba
22、se(CBase), bonus(CBonus), tax(CTax) double getPay( )const; /返回应付工资额 Wages operator+(Wages w)cons; /重载加法 ; double Wages:getPay( )consreturn base+bonus-tax; Wages Wages:operator+(Wages w)constreturn Wages(base+w base,bonus+w bonus, tax+w tax); int main( ) Wages wl(2000, 500, 100), w2(5000, 1000, 300);
23、 eout (wl+w2) getPay( ) endl; return 0; 46 如下程序的输出结果是 _。 #include iostream using namespace std; class Pet char name10; public: Pet(char*nanle)strcpy(this- name, name); const char*getName( )constreturn name; virtual void call( )eonst=0; ; class Dog: public Pet public: Dog(char*name): Pet(name) void c
24、all( )eonstcout “汪汪叫 “; ; class Cat: public Pet public: Cat(char*name): Pet(name) void call( )consteout “喵喵叫 “; ; int main( ) Pet*petl=new Dog(“哈克 “), *pet2=new Cat(“吉米 “); eout petl- getName( ); petl- call( ); eout endl; cout pet2- getName( ); pet2- call( ); eout endl; return 0; 国家二级( C+)笔试模拟试卷 187
25、答案与解析 1 【正确答案】 C 2 【正确答案】 A 3 【正确答案】 D 【试题解析】 面向对象设计方法与丽向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。 4 【正确答案】 B 【试题解析】 耦合性和内聚性是衡量软件的模块独立性的两个定性的标准。其中,内聚性是度量一个模块功能强度的一个相对指标,耦合性则用来度量模块之间的相互联系程度。它们是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般优秀的软件设计应尽量做到高内聚、低耦合,即减弱模
26、块之间的耦合性和提高模块之间的内聚性,有利于提高模块的独立性。 5 【正确答案】 B 【试题解析】 叶子结点总是比度为 2的结点多一个。所以,具有 60个叶子结点的二叉树有 59个度为 2的结点。总结点数 =60个叶子结点 +59个度为 2的结点 +50个度为 1的结点 =169个结点。 6 【正确答案】 B 【试题解析】 数据的逻辑结构是数据间关系的描述,它仅抽象地反映数据间的逻辑关系并不管其在计算机中的存储方式。数据的逻辑结构分为线性结构和非线性结构。若各数据元素之间的逻辑关系可以用一个线性序列简单地表示出来则称之为线性结构,否则称为非线性结构。线性表是典型的线性结构,而树形结构是媳型的非
27、线性结构。 知识拓展 对于长度为 n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要 比较 n次。 7 【正确答案】 B 8 【正确答案】 C 9 【正确答案】 C 【试题解析】 程序中通过 for二重循环依次取二维数组中的数值进行与 t的累加。取数组中的元素为 i行和符合循环条件的 bjj列的数据。循环为 0, 1, 2行,对应 0, 1, 2列。即 0, 1, 2。所以 1+0+1+2=4。 10 【正确答案】 B 11 【正确答案】 B 【试题解析】 程序中首先在第一个 for循环中将数组 a每一个元素赋值为 0, 1,2, 。然后在第二个循环中数组 p的第
28、i元素为 a中的第 i*(i+1),即 0, 2,6,第三个循环中数组 p中的每个元素值乘以 2,然后加上 5,累加。 12 【正确答案】 B 13 【正确答案】 D 14 【正确答案】 B 【试题解析】 “int i;”语句为定义了一个整型变量 i。 “int *p”为定义一个整型指针p。选项 A) 中的 “int *p=”是定义整型指针变量 p,并指向整型 i的地址。选项B) 中 “i=*p”语句是将 p指向的变量赋值给 i,而指针 p没有初始化,所以选项 B) 错误。选项 C) 中 “p=0;”表示 p指向 0的地址。选项 D) 中 “”初始化, TestClass中的TestClass
29、 ()val+;构造函数执 行后, val值为 1。主函数中接着定义对象 cs2,cs3, cs4。执行 “cout cs2.val endl;”中的 val值为 4。 26 【正确答案】 A 【试题解析】 在主函数中首先调用 TestClass中的 test函数输出,类中的 n为静态数据成员,可以为所有的对象共享这些数据,这里调用后 n等于 4。定义对象c1, c2调用构造函数后 n=6,所以主函数再次执行 “cout TestClass:test()endl;”后, n等于 10。 27 【正确答案】 C 28 【正确答案】 A 【试题解析】 此题考查的是类和对象的相关概念。类是将不同的数
30、据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。 29 【正确答案】 A 30 【正确答案】 C 31 【正确答案】 B 32 【正确答案】 A 33 【正确答案】 C 【试题解析】 此题考查的是函数模板。声明一个函数模板的格式是: template模板形参表声明函数声明, 函数体 其中的 模板形参表声明是由一个或多个 “模板形参 ”组成的,每个 “模板形参 ”可具有以下几种形式: typename参数名; class参数名;类型修饰参数名。 34 【正确答案】 单元 35 【正
31、确答案】 过程 36 【正确答案】 逻辑设计 37 【正确答案】 分量 38 【正确答案】 void 39 【正确答案】 x2+i 40 【正确答案】 2,3 41 【正确答案】 10pumpkin(s) 【试题解析】 在主函数中 pumpkin pl10;定义了一个有 10个元素的对象 数组,所以调用了 10次构造函数,静态数据成员 court累加了 10次,pumpkin:total_count( );显式调用类成员函数,直接调用静态成员函数:total_count( ),打印 pumpkin(s)。 42 【正确答案】 n*Fun(n-1) 【试题解析】 n =1时, 1!=1, n!=n*(n-1)*(n-2)*2*1=n*(n -1)!=n*(n-1)*(n-2)!,利用递归来实现阶乘;当 n =1时, fun(n)=n*fun(n-1);当 n =1时,fun(1)=1。 43 【正确答案】 this data=data; 44 【正确答案】 *this=s; 45 【正确答案】 8100 46 【正确答案】 哈克汪汪叫 吉米喵喵叫