1、二级 C+笔试-258 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.阅读以下程序#includciostream.hvold main()Char line10;cinline;coutlineendl;如运行时输入 This is example.CR,则程序的输出结果是(分数:2.00)A.ThisB.This isC.This is aD.This is an example2.以下有关类与结构体的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可以被隐蔽C.
2、用 struct不能声明一个类型名;而 class可以声明一个类名D.结构体成员默认为 publicl类成员默认为 private3.若执行以下程序时从键盘上输入 9,则辅出结果是main()int n;cinn;if(n+10)coutnendl;else coutn-endl;(分数:2.00)A.11B.10C.9D.84.下面程序段的正确输出是int w=4,x=3,y=2,z=1;cout(wx? w:zy? z:x)endl;(分数:2.00)A.0B.1C.2D.35.关系表中的每一横行称为一个(分数:2.00)A.关系B.元组C.属性D.字段6.有以下程序main()char
3、a,b,c, *d;a=/;b=/xbc;c/0xab;d“/0127“;coutabc*dendl;编译时出现错误,以下叙述中正确的是(分数:2.00)A.程序中只有 a=/=;语句不正确B.b/xbc;语句不正确C.d“/0127“;语句不正确D.a/;和 c/0xab;语句都不正确7.下列程序执行后的输出结果是void funcl(int i);void func2(int i);char st“hello,frlend!“;void funcl(int i)coutsti;if(i3)i+2;func2(i);void func2(int i)coutsti;if(i3)i+2;fun
4、cl(i);main()int i=0; furicl(i); coutendl;(分数:2.00)A.helloB.helC.hloD.hlm8.以下程序的输出结果是main()int a=0,i;for(i1;i5;i+)switch(i)case 0:case 3:a+2;case 1:case 2:a+=3;default:a+5;coutaendl;(分数:2.00)A.31B.13C.10D.209.关于友元的描述中错误的是(分数:2.00)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类和类之间的友元关系
5、可以继承10.以下有关成员函数特征的叙述不正确的是(分数:2.00)A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的11.定义静态成员函数的主要目的是(分数:2.00)A.方便调用B.有利于数据隐蔽C.处理类的静态成员变量D.便于继承12.在下列关系运算中,能不改变关系中属性个数且减少元组个数的是(分数:2.00)A.并B.差C.投影D.交13.将 5个数据进行快速排序,在最坏情况下需要比较的次数是(分数:2.00)A.4B.5C.10D.2014.下列叙述中错误的是(分数:2.00)A.二又链表是二又树的存储结构B.循环链表是循环队列的一种
6、存储结构C.循环队列属于线性表D.带链的队列是队列的一种存储结构15.有以下程序main(int argc, chara*argv)int n,i=0;while(argv1i! =/0)n=fun();i+;coutn*argcendl;int fun()static int s=0;s+1;return s;假设程序经编译、连接后生成可执行文件 exam.exe,若键入以下命令行exam 123回车则运行结果为(分数:2.00)A.6B.8C.3D.416.下面不正确的描述为(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元C.调用函数时,将为形参
7、分配内存单元D.调用函数时,实参与形参的类型必须一致17.下列叙述中正确的是(分数:2.00)A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征C.白箱(盒)测试完全不考虑程序内部的逻辑结构D.上述三种说法都不对18.若变量都已正确说明,则以下程序段的输出结果是a=2;b=3;printf(ab?“* * *a%d“: “# # #b%d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为:* * * a=2C.输出为:# # # b2D.输出为:* * * a2 # # # b=219.有关构造函数的说法中错误的是(
8、分数:2.00)A.构造函数名字和类的名字一样B.构造函数在说明类变量时自动执行C.构造函数无任何函数类型D.构造函数有且只有一个20.以下程序中,while 循环的循环次数是main()int i=0;while(i10)if(i1)coBtlnlle;if(i= =5)break;i+;(分数:2.00)A.1B.10C.6D.死循环,不能确定次数21.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对22.下列程序执行结果是#include iostream.hc
9、lass Apublic:int a;A():a(10)coutaendl;void main()A obj1;A obj2(obj1);cout“ “obj2.aendl;(分数:2.00)A.10 10B.编译错误缺少拷贝构造函数C.10随机数D.随机数随机数23.存取指针所指的值时,采用的运算符是(分数:2.00)A.#B.strcpy(arr, “you“); strcpy(arr1, “me“);arr03coutarrendl;(分数:2.00)A.youprotected: int b;public: int c;派生类采用何种继承方式可以使成员变量 b成为自己的私有成员(分数:
10、2.00)A.私有继承B.保护继承C.公有继承D.私有、保护、公有均可27.设有如下定义struct sschar name10;int age;char sex;std3, * pstd;下面各输入语句中错误的是(分数:2.00)A.cin(* p).age);B.cinstd.name);C.cinstd0.sex);D.cin(p-.sex);28.设有如图所示的二叉树(分数:2.00)A.FCADBEGB.ACBDFGEC.ABDCGEFD.ACBDFEG29.一个 C+程序由函数 A(),B(),C()和函数 P()构成,在函数 A()中分别调用了函数 B()和函数 C(),在函数
11、B()中调用了函数 A(),且在函数 P()中也调用了函数 A(),则可以说(分数:2.00)A.函数 B()中调用的函数 A()是函数 A()的间接递归调用B.函数 A()被函数 B()调用是直接递归调用C.函数 P()直接递归调用了函数 A()D.函数 P()中调用的函数 A()是函数 P()的嵌套30.下列叙述中正确的是(分数:2.00)A.一个算法的时间复杂度大,则其空间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度也必定大C.一个算法的空间复杂度大,则其时间复杂度必定小D.上述三种说法都不对31.已知语句 int m10;则下列表示引用的表示中正确的是(分数:2.00)A.
12、int B.int C.int D.float 32.有以下程序main()int i=10,j=1;couti-“,“+jendl;执行后输出结果是(分数:2.00)A.9,2B.10,2C.9,1D.10,133.以下程序的输出结果是main()int a4,b5,c0,d;d! acoutdcndl;(分数:2.00)A.1B.0C.非 0的数D.-134.下列叙述中正确的是(分数:2.00)A.软件工程主要研究如何编程B.数据库设计的主要任务是设计数据库管理系统C.算法的效率与数据的存储结构无关D.上述三种说法都不对35.设有以下类和对象的定义:class Apublic:int m;
13、A k1,k2,*p1,* p2;则下面针对成员变量 m的引用,错误的是(分数:2.00)A.k1.m=1B.k2-m2C.p1-m=3D.(*p2).m=4二、填空题(总题数:15,分数:30.00)36.衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中 【1】 用于度量模块间互相连接的紧密程度。(分数:2.00)填空项 1:_37.在顺序查找与二分查找两种方法中,可以用 【2】 方法对有序线性链表进行查找。(分数:2.00)填空项 1:_38.具有记忆作用的线性表称为 【3】 。(分数:2.00)填空项 1:_39.如果在一棵二叉树中有 17个度为 2的结点,则该二叉树中有 【4】
14、个叶子结点。(分数:2.00)填空项 1:_40.数据流图有两种典型的结构形式,它们分别是 【5】 和事务型。(分数:2.00)填空项 1:_41.函数定义的格式是 【6】 函数名(形式参数表)函数体。(分数:2.00)填空项 1:_42.语句序列 long x; x0L;可用一个语句表示为 【7】 。(分数:2.00)填空项 1:_43.在 C+中的实型数据分为三种类型,即单精度 float、双精度 double和 【8】 。(分数:2.00)填空项 1:_44.若 a. b和 c均是 int型变量,则表达式 a=(b=4)+(c2)执行后,a 的值为 【9】 。(分数:2.00)填空项 1
15、:_45.一个结构占用的空间理论上等于 【10】 。(分数:2.00)填空项 1:_46.下列程序的输出结果是 【11】 。# includeiostream.htemplate class TT max(T x,int n)int i;T maxvx0;for(i=1;in;i+)if(maxvxi)maxvxi;return maxv;void main()int a3,2,7,6,8,9;double b1.2,3.4,2.5,7.3,6.8;coutmax(a,4)“,“max(b,3)endl;(分数:2.00)填空项 1:_47.下列程序的运行结果是 【12】 。#includei
16、ostream. hclass Basepublic:virtual void func(int i)cout“class Base:“iendl;class Derived: public Basepublic:void func(double d)cout“class Derived:“dendl;);void main()Base a, *p=Derived b;p=(* p).func(3.3);(分数:2.00)填空项 1:_48.下列程序的输出结果是 【13】 。#includeiostream. hint CalcDigital(char *str)if(str=NULL)ret
17、urn 0;int num_of_digital=0;for(int i=0;stri! =0x0;i+)if(stri=9 return num_of_digital;void main()char a=“Beijing2008olympic“;coutCalcDigital(a)endl;(分数:2.00)填空项 1:_49.下列程序时类 D代码段出现编译错误,原因是 【14】 。#includeiostream. hclass Apublic:A(char c)cout“As constructor.“cendl;A()cout“As destructor.“endl;class B:
18、virtual public Apublic:B(char cb,char cd):A(cb) cout“Bs constructor.“cdendl;B()cout“Bs destructor.“endl;private:char b;class C:virtual public Apublic:C(char cc, char cd):A(cc)cout“Cs constructor. “cdendl;C()cout“Cs destructor.“endl;class D:public B,public Cpublic:D(char cd,char ce,char cf, char cg,
19、char ch,char ci):C(cf,cg),B(cd,ce),A(cd),aa(ch)cout“Ds constructor.“ciendl;D() cout“Ds destructor.“endl;private:A aa;void main()D ohj(a,b,c,d,e,f)(分数:2.00)填空项 1:_50.下列程序编译错误,是由于划线处缺少某个语句,该语句是 【15】 。#include iostream. hclass A_private:int numl;public:A():numl(0)A(int i):numl(i);class Bprivate:int num
20、2public:B():num2(0)B(int i):num2(i)int my_math(A obj1,B obj2);int B:my_math(A obj1,B obj2)return (obj1.num1+obj2.num2);void main(void)A obj1 (4)B obj,obi2(5);cout “obj1+obj2:“obj.my_math(obj1,obj2);(分数:2.00)填空项 1:_二级 C+笔试-258 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.阅读以下程序#includciostream.h
21、vold main()Char line10;cinline;coutlineendl;如运行时输入 This is example.CR,则程序的输出结果是(分数:2.00)A.This B.This isC.This is aD.This is an example解析:解析 本题考察 C+中 cin输入流对象的使用规则,其特点是以空格、回车和 tab为分隔符。因此 this和 is之间的空格告诉 cin对象停止接收后面的数据、故正确答案为 A。2.以下有关类与结构体的叙述不正确的是(分数:2.00)A.结构体中只包含数据;类中封装了数据和操作B.结构体的成员对外界通常是开放的;类的成员可
22、以被隐蔽C.用 struct不能声明一个类型名;而 class可以声明一个类名 D.结构体成员默认为 publicl类成员默认为 private解析:解析 本题同样考察的是结构体和类之间的区别和联系。3.若执行以下程序时从键盘上输入 9,则辅出结果是main()int n;cinn;if(n+10)coutnendl;else coutn-endl;(分数:2.00)A.11B.10 C.9D.8解析:解析 本题考察的是后置自增运算符的知识,这类题考生往往做错,以原因不能正确拆解。题中if语句可以拆解为:if(910),n+110,cout10endl;自增所代表的加一操作要紧跟在原表达式后面
23、,而不是原语句后面。4.下面程序段的正确输出是int w=4,x=3,y=2,z=1;cout(wx? w:zy? z:x)endl;(分数:2.00)A.0B.1 C.2D.3解析:解析 本题为表达式作为变量进行输出,而且表达式为两个三日表达式的嵌套,只要掌握了该三目表达式的含义,可以正确得出答案为 B。5.关系表中的每一横行称为一个(分数:2.00)A.关系B.元组 C.属性D.字段解析:解析 关系表中的每一横行称为一个元组。6.有以下程序main()char a,b,c, *d;a=/;b=/xbc;c/0xab;d“/0127“;coutabc*dendl;编译时出现错误,以下叙述中正
24、确的是(分数:2.00)A.程序中只有 a=/=;语句不正确B.b/xbc;语句不正确C.d“/0127“;语句不正确D.a/;和 c/0xab;语句都不正确 解析:解析 本题考察 C+中各种类型在输出时的转化关系。斜杠为转义控制字符,其后必须紧跟一个字符,故首先可以确定的是 a的赋值语句是错误的,根据选项我们直接看 c的赋值语句是否正确。斜杠后跟。表示其后为八进制,其值从 0到 7,因此 c的赋值语句也是错误的据此可以判断本题的正确答案应该为 D。7.下列程序执行后的输出结果是void funcl(int i);void func2(int i);char st“hello,frlend!“
25、;void funcl(int i)coutsti;if(i3)i+2;func2(i);void func2(int i)coutsti;if(i3)i+2;funcl(i);main()int i=0; furicl(i); coutendl;(分数:2.00)A.helloB.helC.hlo D.hlm解析:解析 本题考察递归调用。分析 func1可知,当 i=0时,首先输出 h,然后 i变为 2调用 fune (2),则输出 str2,应为 1。分析到此就可以排除选项 A和 B。然后调用 funcl(4),此时辅出 str 4,为 o,故可以选择正确答案为 C。8.以下程序的输出结果
26、是main()int a=0,i;for(i1;i5;i+)switch(i)case 0:case 3:a+2;case 1:case 2:a+=3;default:a+5;coutaendl;(分数:2.00)A.31 B.13C.10D.20解析:解析 本题也是考察 switch语句中的 break的作用,由于题中所有的 case分支都没有 break,故将顺序执行这些分支。只要考生耐心按照流程将数据累加到 a上,就可以得到正确答案为 A。9.关于友元的描述中错误的是(分数:2.00)A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高
27、程序的运行效率D.类和类之间的友元关系可以继承 解析:10.以下有关成员函数特征的叙述不正确的是(分数:2.00)A.成员函数一定是内联函数 B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的解析:解析 本题是一个综合题,考察几种常用的修饰词与成员函数之间的关系。Inline 和 static均可以修饰成员函数的。11.定义静态成员函数的主要目的是(分数:2.00)A.方便调用B.有利于数据隐蔽C.处理类的静态成员变量 D.便于继承解析:解析 声明为 static的类成员或者成员函数便能在类的范围内共同享,这样的成员称做静态成员和静态成员函数。静态成员函数由于与对象无关
28、系,所以在其中是不能对类的普通成员进行直接操作的。静态成员函数不接受隐含的 this自变量。所以,它就无法访问自己类的非静态成员。那么一旦某个成员函数被声明为静态的,就不能访问非静态成员了么?解决方法是将引用传递给需要使用的对象能够让静态的成员函数访问到对象的非静态数据。12.在下列关系运算中,能不改变关系中属性个数且减少元组个数的是(分数:2.00)A.并B.差C.投影D.交 解析:解析 交运算是不改变关系中属性个数的,且减少元组的个数。13.将 5个数据进行快速排序,在最坏情况下需要比较的次数是(分数:2.00)A.4B.5C.10 D.20解析:解析 对长度为 n的线性表进行快速排序,在
29、最坏情况下需要 n(n-1)/2次比较,现线性表的长度为 5,在最坏情况下需要比较的次数为 5(5-1)/2=10。14.下列叙述中错误的是(分数:2.00)A.二又链表是二又树的存储结构B.循环链表是循环队列的一种存储结构 C.循环队列属于线性表D.带链的队列是队列的一种存储结构解析:解析 二叉链表是二叉树的一种存储结构;循环队列是队列的一种存储结构,而队列属于线性表,因此,循环队列也是线性表;带链的队列是队列的一种存储结构因此,选项 A),C)、D)都是正确的。循环链表是一般线性表的一种链式存储结构,它不是循环队列的存储结构。因此,选项 B)中的说法是错误的。15.有以下程序main(in
30、t argc, chara*argv)int n,i=0;while(argv1i! =/0)n=fun();i+;coutn*argcendl;int fun()static int s=0;s+1;return s;假设程序经编译、连接后生成可执行文件 exam.exe,若键入以下命令行exam 123回车则运行结果为(分数:2.00)A.6 B.8C.3D.4解析:解析 本题考察静态变量的使用规则。考生需要注意的是 s为静态变量,每次进入 fun函数时 s还保留使用原来的值,因此 while循环将最终返回的是各位数之和,而 argc表示参数的个数,此处为1,因此正确答案为 A。16.下面
31、不正确的描述为(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元 C.调用函数时,将为形参分配内存单元D.调用函数时,实参与形参的类型必须一致解析:解析 函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝,当然这种拷贝需要为形参分配内存。需要注意的是:形参在编译时不分配内存,在运行时才分配内存。17.下列叙述中正确的是(分数:2.00)A.黑箱(盒)测试方法完全不考虑程序的内部结构和内部特征 B.黑箱(盒)测试方法主要考虑程序的内部结构和内部特征C.白箱(盒)测试完全不考虑程序内部
32、的逻辑结构D.上述三种说法都不对解析:解析 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例。因此,选项 A)中的说法是正确的,其他三项说法都是错误的。18.若变量都已正确说明,则以下程序段的输出结果是a=2;b=3;printf(ab?“* * *a%d“: “# # #b%d“,a,b);(分数:2.00)A.没有正确的输出格式控制B.输出为:* * * a=2C.输出为:# # # b2 D.输出为:* * * a2 # # # b=2解析:解析 本题实际,亡是考场 C语言中的格式化输入输出知识。一般来说
33、,学习 C+的考生先前都学习过 C语言,如果能够深刻理解这两种具有血缘关系的语言中对于输入输出的控制方式,则能够更好的理解面向对象的本质。同时本题也考察了三日表达式的知识。如果逻辑表达式为真,则执行冒号之前的,否则执行冒号之后的表达式。19.有关构造函数的说法中错误的是(分数:2.00)A.构造函数名字和类的名字一样B.构造函数在说明类变量时自动执行C.构造函数无任何函数类型D.构造函数有且只有一个 解析:解析 本题考察构造函数的有关概念。构造函数在面向对象设计和开发中占据重要地位,考生需要扎实掌握。构造函数不能返回类型,但是可以有参数,可以重载。据此可以选择正确答案为 D。20.以下程序中,
34、while 循环的循环次数是main()int i=0;while(i10)if(i1)coBtlnlle;if(i= =5)break;i+;(分数:2.00)A.1B.10C.6D.死循环,不能确定次数 解析:解析 本题需要考生仔细分析,掌握扎实的基本功,并且熟悉 continue和 break在循环语句中的作用。当 i0 时,执行第一个 if语句,为真,跳过后面的第二个 if和 i+,重新判断 while的条件,此时 i并没有任何改变,依然是 0,因此将陷入一个无限循环中。21.下列叙述中正确的是(分数:2.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体
35、集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对 解析:解析 实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且,实体集“座位”中中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项 A)中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。因
36、此,选项 B)中的说法也是错误的。关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项 C)中的说法也是错误的。22.下列程序执行结果是#include iostream.hclass Apublic:int a;A():a(10)coutaendl;void main()A obj1;A obj2(obj1);cout“ “obj2.aendl;(分数:2.00)A.10 10 B.编译错误缺少拷贝构造函数C.10随机数D.随机数随机数解析:解析 本题考察拷贝构造函数的
37、知识。如果类中没有实现拷贝构造函数,则编译器会为其自动生成一个。对于本题这种简单对象,默认生成的拷贝构造函数可以完成数据成员的自动赋值,对于复杂对象则可能需要显式定义拷贝构造函数。23.存取指针所指的值时,采用的运算符是(分数:2.00)A.#B.strcpy(arr, “you“); strcpy(arr1, “me“);arr03coutarrendl;(分数:2.00)A.youprotected: int b;public: int c;派生类采用何种继承方式可以使成员变量 b成为自己的私有成员(分数:2.00)A.私有继承 B.保护继承C.公有继承D.私有、保护、公有均可解析:解析
38、类的继承中有三种继承方式,他们和类的访问级别相结合在派生类中可以产生多种访问级别。基类中成员为保护的,在派生类中要为私有的,可以采用私有继承。基类中的保护成员在振生类中不是私有就是保护,即级别只能降低而不能升高。基类中的公有成员则可能为私有、保护和私有。27.设有如下定义struct sschar name10;int age;char sex;std3, * pstd;下面各输入语句中错误的是(分数:2.00)A.cin(* p).age);B.cinstd.name); C.cinstd0.sex);D.cin(p-.sex);解析:解析 std 是一个数组,其内可以存放三个结构体类型的数
39、据。当 std单独使用的时候表示一个指针,指向该数组首地址。因此不能直接用 std和点操作符进行配对使用。指针操作符-只能和指针配对使用,点操作符只能和有名对象或变量配对使用。28.设有如图所示的二叉树(分数:2.00)A.FCADBEGB.ACBDFGEC.ABDCGEF D.ACBDFEG解析:解析 按照二叉树后序遍历的方法;在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左于树,然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先先遍历左子树,然后遍历右子树,最后访问根结点。对本题中的二叉树进行后序遍历的结果应是 ABDCGEF。设有如图所示的二叉树29.一个 C+程序
40、由函数 A(),B(),C()和函数 P()构成,在函数 A()中分别调用了函数 B()和函数 C(),在函数 B()中调用了函数 A(),且在函数 P()中也调用了函数 A(),则可以说(分数:2.00)A.函数 B()中调用的函数 A()是函数 A()的间接递归调用 B.函数 A()被函数 B()调用是直接递归调用C.函数 P()直接递归调用了函数 A()D.函数 P()中调用的函数 A()是函数 P()的嵌套解析:解析 本题考察递归调用。递归调用分为直接递归和间接递归。AO 属于间接递归。30.下列叙述中正确的是(分数:2.00)A.一个算法的时间复杂度大,则其空间复杂度也必定大B.一个
41、算法的空间复杂度大,则其时间复杂度也必定大C.一个算法的空间复杂度大,则其时间复杂度必定小D.上述三种说法都不对 解析:解析 算法的复杂度主要包括时间复杂度和空间复杂度。但不存在算法的时间复杂度大,则其空间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度也必定大;或者算法的空间复杂度大,则其时间复杂度必定小等问题。31.已知语句 int m10;则下列表示引用的表示中正确的是(分数:2.00)A.int B.int C.int D.float 解析:解析 引用比较特殊,即必须指向一个已有的同类型变量。引用是已有变量的别名,故选项 C 是错误的,选项 D中变量类型不同,而选项 B中是常数。
42、32.有以下程序main()int i=10,j=1;couti-“,“+jendl;执行后输出结果是(分数:2.00)A.9,2B.10,2 C.9,1D.10,1解析:解析 本题还是考察前置和后置自增与自减运算符的使用方法。在 i输出时,还是 10,输出之后才变成 9,而+j 则是先加一在将新值输出。33.以下程序的输出结果是main()int a4,b5,c0,d;d! acoutdcndl;(分数:2.00)A.1 B.0C.非 0的数D.-1解析:解析 本题考察逻辑运算,只要考生掌握了逻辑运算的优先级就可以正确得到答案为 A。或优先级最高,;A k1,k2,*p1,* p2;则下面针
43、对成员变量 m的引用,错误的是(分数:2.00)A.k1.m=1B.k2-m2 C.p1-m=3D.(*p2).m=4解析:解析 本题也是考察有名对象和无名对象的使用规则。对有名对象,要使用点操作符,无名对象要使用箭头运算符。据此可以判断正确答案为 B。二、填空题(总题数:15,分数:30.00)36.衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中 【1】 用于度量模块间互相连接的紧密程度。(分数:2.00)填空项 1:_ (正确答案:耦合性)解析:解析 衡量模块独立性的两个重要度量标准是耦合性和内聚性。其中耦合性用于度量模块间互相连接的紧密程度。37.在顺序查找与二分查找两种方法中,
44、可以用 【2】 方法对有序线性链表进行查找。(分数:2.00)填空项 1:_ (正确答案:顺序查找)解析:解析 在顺序查找与二分查找两种方法中,只能用顺序查找方法对有序线性链表进行查找,因为二分查找方法只适用于顺序存储的有序表。38.具有记忆作用的线性表称为 【3】 。(分数:2.00)填空项 1:_ (正确答案:栈)解析:解析 栈具有记忆作用。39.如果在一棵二叉树中有 17个度为 2的结点,则该二叉树中有 【4】 个叶子结点。(分数:2.00)填空项 1:_ (正确答案:18)解析:解析 根据二叉树的性质:在任意二叉树中,叶子结点总是比度为 2的结点多一个。因此,如果在一棵二叉树中有 17
45、个度为 2的结点,则该二叉树中有 17+118 个叶子结点。40.数据流图有两种典型的结构形式,它们分别是 【5】 和事务型。(分数:2.00)填空项 1:_ (正确答案:变换型)解析:解析 数据流图有两种典型的结构形式,它们分别是变换型和事务型。41.函数定义的格式是 【6】 函数名(形式参数表)函数体。(分数:2.00)填空项 1:_ (正确答案:类型名或类型修饰符)解析:解析 本题考察基本的函数定义格式。42.语句序列 long x; x0L;可用一个语句表示为 【7】 。(分数:2.00)填空项 1:_ (正确答案:long x=0L;)解析:解析 变量的声明和赋值可以分别进行也可以同
46、时进行。分别进行时称为赋值,同时进行是称为初始化。43.在 C+中的实型数据分为三种类型,即单精度 float、双精度 double和 【8】 。(分数:2.00)填空项 1:_ (正确答案:长双精度 long double)解析:解析 长精度类型一般用于高精度的科学运算。44.若 a. b和 c均是 int型变量,则表达式 a=(b=4)+(c2)执行后,a 的值为 【9】 。(分数:2.00)填空项 1:_ (正确答案:6)解析:解析 本题考察运算优先级问题,从右向左,先括号后乘除,随后加减,这是基本的运算规则。45.一个结构占用的空间理论上等于 【10】 。(分数:2.00)填空项 1:_ (正确答案:每个数据成员所占空间之和)解析:解析 结构体没有行为,即没有代码占用空间,故其占用的空间仅仅包含其数据成员占用的空间之和。46.下列程序的输出结果是 【11】 。# includeiostream.htemplate class TT ma