1、二级 C+笔试-375 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列程序的输出结果是( )。#includeiostreamusing namespace std;voidfun(int int main()int n=50;fun(n);coutnend1;return 0;(分数:2.00)A.0B.20C.50D.1002.以下程序运行后的输出结果是( )。#includeiostream.hvoid main()char aft=“abbcabbcabbc“;int i=0,j=0,k=0;while(ai)if(ai=a)
2、j+;if(ai=b)k+;i+;coutj“kend1;(分数:2.00)A.2,6B.3,5C.4,7D.3,63.栈 C最多能容纳 4个元素,现有 6个元素按 A、B、C、D、E、F 的顺序进栈,下列哪个序列不是可能的出栈序列( )。(分数:2.00)A.C、B、E、D、A、FB.C、D、B、F、E、AC.A、D、E、C、B、FD.A、F、E、D、C、B4.下列关于指针的运算中,( )是非法的。(分数:2.00)A.两个指针在一定条件下,可以进行相等或不等的比较运算B.可以将一个空指针赋值给某个指针C.一个指针可以加上两个整数之差D.两个指针在一定条件下可以相加5.下列说法中错误的是(
3、)。(分数:2.00)A.公有继承时基类中的 public成员在派生类中仍是 public的B.公有继承时基类中的 private成员在派生类中仍是 private的C.私有继承时基类中的 public成员在派生类中是 private的D.保护继承时基类中的 public成员在派生类中是 protected的6.有以下程序段:#includeiostream.h#define MAX(x,y)(x)(y)?(x):(y)void main()int i,j,k;i=10;j=15;k=MAX(i,j)*10;coutkend1;程序执行后的输出结果是( )。(分数:2.00)A.15B.100
4、C.150D.107.下面程序输出的结果为( )。#includeiostream.hvoid fun(int a,int b)int temp;temp=a;a=b;b=temp;void main()int m,n;m=1;n=2;fun(m,n);coutm“nend1;(分数:2.00)A.12B.21C.22D.程序有错误8.对于一个类定义,下列叙述中错误的是( )。(分数:2.00)A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D.
5、如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数9.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( )关键字来修饰。(分数:2.00)A.constB.staticC.voidD.class10.下面程序的输出结果为( )。#ineludeiostream.hvoid main()int x;int /变量引用y=99;cout“x=“xend1;(分数:2.00)A.x=99B.x=9C.x=0D.异常11.多继承的构造顺序可分为如下四步:所有非虚基类的构造函数按照它们被继承的顺序构造所有虚基类的构造函数按照它们被继承的顺序构造所有子对象
6、的构造函数按照它们声明的顺序构造派生类自己的构造函数体这四个步骤的正确顺序是( )。(分数:2.00)A.B.C.D.12.在下列关于二叉树的叙述中,正确的一项是( )。(分数:2.00)A.在二叉树中,任何一个结点的度都是 2B.二叉树的度为 2C.在二叉树中至少有一个结点的度为 2D.一棵二叉树的度可以小于 213.设有以下定义和程序:#includeiostream.hclass A1public:void show1()cout“class A1“end1;class A2:public A1public:void show2()cout“class A2“end1;class A3:
7、protected A2public:void show3()cout“class A1“end1;void main()A1 obj1;A2 obj2;A3 obj3;则以下不合语法的调用语句是( )。(分数:2.00)A.obj1.show1();B.obj2.show1();C.obj3.show1();D.obj2.show2();14.下列有关函数重载的叙述中,错误的是( )。(分数:2.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同D.重载函数的参数可以带有默认值15.有以下程序:#includeiostreamusi
8、ng namespace std;class Rpublic:R(int r1,int r2)R1=r1;R2=r2;void print();void print()const;private:int R1,R2;void R:print()coutR1“,“R2end1;void R:print()constcoutR1“,“R2end1;int main()R a(5,4);const R b(20,52);b.print();return 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.4,5C.20,52D.52,2016.下列关于 this指针的叙述中,正确的是( )
9、。(分数:2.00)A.this指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this指针D.this指针表示了成员函数当前操作的数据所属的对象17.下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false,则横线处应填上( )。Bool fun(char*str)int i=0,j=0;while(strj)j+;for(j-;iji+,j-);return i_j;(分数:2.00)A.=B.|C.void main()cout“Please input a number:“;i
10、nt a,result=0;cina;result=fun((分数:2.00)A.;class pointprivate:double x;double y;public:point(double a,double b)x=a;y=b;friend double distances(point a,point b);double distances(point a,point b)return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);int main()point p1(1,2);point p2(5,2);coutdistances(p1,p2
11、)end1;return 0;(分数:2.00)A.2B.4C.8D.1623.下面关于构造函数和析构函数的描述中,错误的是( )。(分数:2.00)A.析构函数可以声明为虚函数B.对虚析构函数的调用可以采用动态联编C.一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响D.构造函数可以声明为虚函数24.下列叙述中错误的是( )。(分数:2.00)A.线性表是由 n个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件D.线性表可以是空表25.下列程序的输出结果是( )。#includeiostreamusing namespace std;te
12、mplatetypename TT fun(T a,T b)return(a=b)?a:b;)int main()coutfun(3,6),fun(3.14F,6.28F)end1;return 0;(分数:2.00)A.0,3.14B.3,3.14C.3,3D.3.14,3.1426.假定 MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。(分数:2.00)A.MyClass(MyClass x);B.MyClass(MyClassclass Complexpublic:Complex(double r=0,double i=0):re(r),im(i)double real(
13、)constreturn re;double imagoconstreturn im;Complex operator+(Complex C) constreturn Complex(re+c.re,im+c.im);private:double re,im;int main()Complex a=Complex(1,1)+Complex(5);couta.real()+a.imag()iend1;return 0;(分数:2.00)A.6+iB.2i+5C.6+1iD.1i+529.下列叙述中正确的是( )。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个算法的空间
14、复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对30.两个或两个以上模块之间联系的紧密程度称为( )。(分数:2.00)A.耦合性B.内聚性C.复杂性D.数据传输特性31.关于模板,下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数32.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.数据流C.模块调用D.事件驱动33.设有如下关系表:(分数:2.00)A.T=R/SB.T=RSC.T=R
15、SD.T=RS34.定义如下枚举类型:enumMonday,Tuesday,Wednesday,Thrusday,Friday=2;表达式 Wednesday=Friday的值是( )。(分数:2.00)A.falseB.trueC.2D.异常35.设根结点的层次为 0,高度为 K的二叉树最最大结点数为( )个。(分数:2.00)A.2KB.2K+1-1C.2k+1D.2K+1+1二、填空题(总题数:15,分数:30.00)36.数据结构分为线性结构和非线性结构,带链的队列属于 1。(分数:2.00)填空项 1:_37.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端
16、称作 1。(分数:2.00)填空项 1:_38.一棵二叉树第 6层(根结点为第一层)的结点最多为 1 个。(分数:2.00)填空项 1:_39.给定一个关键字序列(24,19,32,43,38,6,13,22),进行快速排序,扫描一趟后的结果是 1。(分数:2.00)填空项 1:_40.在一个容量为 24的循环队列中,若头指针 front=8,尾指针 rear=3,则该循环队列中共有 1 个元素。(分数:2.00)填空项 1:_41.若有函数 fun(x,y),并且已经使函数指针变量 p指向函数 fun,则使用 p调用函数 fun的方法是 1。(分数:2.00)填空项 1:_42.以下程序的运
17、行结果是_。#includeiostrearn.bfun(int a,int b)int m=0,i=2;i+=m+1;m=i+a+b;return m;void main()int k=4,m=1,p;p=fun(k,m);coutpend1;(分数:2.00)填空项 1:_43.下列程序的输出结果为:0bject id=00biect id=1请将程序补充完整。#includeiostreamusing namespace std;class Pointpublic:Point(int xx=0,int yy=0)X=xx;Y=yy;countP+;Point()countP-;int G
18、etX()return X;int GetY()return Y;static void GetC()cout“0bject id=“countPend1;private:int X,Y;static int countP;_/静态数据成员的初始化int main()Point:GetC();Point A(4,5);A.GetC();return 0;(分数:2.00)填空项 1:_44.有以下程序:#includeiostreamusing namespace std;class MyClasspublic:static int s;MyClass();void SetValue(int
19、val);int MyClass:s=0;MyClass:MyClass()s+;void MyClass:SetValue(int val)s=val;int main()MyClass my3,*p;p=my;for(int k=0;k3;k+)P-SetValue(k+1);p+;coutMyClass:send1;return 0;运行后的输出结果是_。(分数:2.00)填空项 1:_45.operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为 1 的。(分数:2.00)填空项 1:_46.若有定义语句:int*a,b
20、;,则变量 b的数据类型是 1。(分数:2.00)填空项 1:_47.若要访问指针变量 p所指向的数据,应使用表达式 1。(分数:2.00)填空项 1:_48.已知有函数 f的定义如下:int f()static int s=0;s+=2;return s;则在某程序中第二次执行函数调用语句 f();时,函数 f的返回值是_。(分数:2.00)填空项 1:_49.有如下定义:class MAint value;public:MA(int n=0):value(n);MA*ta,tb;其中 MA类的对象名标识符是_。(分数:2.00)填空项 1:_50.Staff类含有 int型数据成员 ID,
21、两个 Staff对象相等是指它们的 ID相同。下面的函数重载了运算符“=”,它用来判断两个 Staff对象是否相等,相等时返回 true,否则返回 false。请将横线处缺失部分补充完整。bool Staff:Staff=(const Staff (分数:2.00)填空项 1:_二级 C+笔试-375 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下列程序的输出结果是( )。#includeiostreamusing namespace std;voidfun(int int main()int n=50;fun(n);coutnend1;
22、return 0;(分数:2.00)A.0B.20C.50D.100 解析:解析 题中主程序中首先定义整型变量 n=50,然后调用函数 fun,实际参数为 n。函数 fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以 2。2.以下程序运行后的输出结果是( )。#includeiostream.hvoid main()char aft=“abbcabbcabbc“;int i=0,j=0,k=0;while(ai)if(ai=a)j+;if(ai=b)k+;i+;coutj“kend1;(分数:2.00)A.2,6B.3,5C.4,7D.3,6 解析:解析 程序中
23、首先定义字符数组 a,然后在 while循环中统计字符 a和 b的个数。其中 j记录 a的个数,k 记录 b的个数。第一个 if语句是当第 i个字符为 a时,i 加 1;第二个 if语句是当第 i个字符为 b时,k 加 1。3.栈 C最多能容纳 4个元素,现有 6个元素按 A、B、C、D、E、F 的顺序进栈,下列哪个序列不是可能的出栈序列( )。(分数:2.00)A.C、B、E、D、A、FB.C、D、B、F、E、AC.A、D、E、C、B、FD.A、F、E、D、C、B 解析:解析 栈是一种特殊的线性表,栈是限定在表的一端进行插入和删除运算的线性表。栈的操作原则是“后进先出”。依题意,栈 S最多能
24、容纳 4个元素,选项 D) 的进出顺序如下:A 进(栈中 1个元素)A 出,(栈中 0个元素)B 进(栈中 1个元素)C 进(栈中 2个元素)D 进(栈中 3个元素)E 进(栈中 4个元素)F 进(栈中 5个元素)F 出,(栈中 4个元素)E 出,(栈中 3个元素)D 出,(栈中 2个元素)C 出,(栈中 1个元素)B 出,(栈中 0个元素)由于栈 S最多能容纳 4个元素,E 元素进入栈后,栈已经满,F 元素不能再进入到栈中,所以选项 D) 是不可能的出栈顺序。4.下列关于指针的运算中,( )是非法的。(分数:2.00)A.两个指针在一定条件下,可以进行相等或不等的比较运算B.可以将一个空指针
25、赋值给某个指针C.一个指针可以加上两个整数之差D.两个指针在一定条件下可以相加 解析:解析 指针变量如果指向同一个数组的元素,则可以进行比较,所以 A) 是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变量。B) 同样也是正确的。指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。即 C)也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,标识两个指针之间的元素个数。但是它们是不可相加的。5.下列说法中错误的是( )。(分数:2.00)A.公有继承时基类中的 public成员
26、在派生类中仍是 public的B.公有继承时基类中的 private成员在派生类中仍是 private的 C.私有继承时基类中的 public成员在派生类中是 private的D.保护继承时基类中的 public成员在派生类中是 protected的解析:解析 此题考查的是继承时基类成员属性改变。选项 B)中,公有继承时基类中的 private成员在派生类中不是 private的,而是不可访问的。所以选项 B)错误;其他选项叙述均正确。6.有以下程序段:#includeiostream.h#define MAX(x,y)(x)(y)?(x):(y)void main()int i,j,k;i=
27、10;j=15;k=MAX(i,j)*10;coutkend1;程序执行后的输出结果是( )。(分数:2.00)A.15B.100C.150 D.10解析:解析 题目程序中的 MAX函数是利用条件运算符为?:求最大值。即(xy)?(x):(y)是当 x大于 y时取 x,否则取 y。当 i=10,j=15 时,“MAX(i,j)”的值为 15,所以“k=MAX(i,j)*10;”答案为:150。7.下面程序输出的结果为( )。#includeiostream.hvoid fun(int a,int b)int temp;temp=a;a=b;b=temp;void main()int m,n;m
28、=1;n=2;fun(m,n);coutm“nend1;(分数:2.00)A.12 B.21C.22D.程序有错误解析:解析 函数 fun中定义的参数 a和 b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数 fun没有返回值,它做的交换操作,并不能影响实际参数 m和 n。所以输出值保持不变,仍然是 1和 2,即输出:12。8.对于一个类定义,下列叙述中错误的是( )。(分数:2.00)A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数B.如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C.如果没
29、有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数解析:解析 此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。9.如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用( )关键字来修饰。(分数:2.00)A.constB.staticC.voidD.class 解析:解析 如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用 class关键字来修
30、饰。10.下面程序的输出结果为( )。#ineludeiostream.hvoid main()int x;int /变量引用y=99;cout“x=“xend1;(分数:2.00)A.x=99 B.x=9C.x=0D.异常解析:解析 程序中的“int ”语句中的“;class A2:public A1public:void show2()cout“class A2“end1;class A3:protected A2public:void show3()cout“class A1“end1;void main()A1 obj1;A2 obj2;A3 obj3;则以下不合语法的调用语句是( )
31、。(分数:2.00)A.obj1.show1();B.obj2.show1();C.obj3.show1(); D.obj2.show2();解析:解析 由于 class A3:protected A2,所以类 A3的对象 obj3不能直接访问基类 A1的成员函数show1(),所以选项 C)是错误的;其他选项均有访问的权限,正确。14.下列有关函数重载的叙述中,错误的是( )。(分数:2.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同 D.重载函数的参数可以带有默认值解析:解析 此题考查的是函数重载的概念。在 C+语言中,允许定
32、义一系列函数名相同但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项 C)错误。15.有以下程序:#includeiostreamusing namespace std;class Rpublic:R(int r1,int r2)R1=r1;R2=r2;void print();void print()const;private:int R1,R2;void R:print()coutR1“,“R2end1;void R:print()constcoutR1“,“R2end1;int main()R a(5,4);con
33、st R b(20,52);b.print();return 0;执行后的输出结果是( )。(分数:2.00)A.5,4B.4,5C.20,52 D.52,20解析:解析 此题中,语句 R a(5,4)调用构造函数 R(int r1,int r2)但未有输出结果;b.print();调用常成员函数(因为 b是常对象)void print()const,输出结果是 20,52。16.下列关于 this指针的叙述中,正确的是( )。(分数:2.00)A.this指针是一个隐含指针,它隐含于类的成员函数中B.只有在使用 this时,系统才会将对象的地址赋值给 thisC.类的友元函数也有 this指
34、针D.this指针表示了成员函数当前操作的数据所属的对象 解析:解析 this 指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this 指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用 this指针无意义。17.下列函数的功能是判断字符串 str是否对称,对称则返回 true,否则返回 false,则横线处应填上( )。Bool fun(char*str)int i=0,j=0;while(strj)j+;for(j-;iji+,j-);return i_j;(分数:2.00)
35、A.= B.|C.void main()cout“Please input a number:“;int a,result=0;cina;result=fun((分数:2.00)A.;result+=p;”语句。即执行三次 p=p*i,result=result+p,result 的结果为 9。返回的fun函数结果为 9,即“coutresultend1;”输出 9。20.下列关于派生类构造函数和析构函数的说法中,错误的是( )。(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.在建立派生类对象时,先调用基类的构造函数,
36、再调用派生类的构造函数D.在撤销派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 解析:解析 此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。21.下面对对象概念描述正确的是( )。(分数:2.00)A.任何对象都必须有继承性B.对象是属性和方法的封装体 C.对象间的通信靠信息传递D.方法是对象的静态属性解析:解析 在面向对象程序设计中,允许作用于某个对象上的操作称为方法,方法是对象的动态属性。对象间的通信靠消息传递。对象是属性和方法的封装体,可以
37、从祖先中继承属性和方法,但不是任何对象都具有继承性。知识拓展 我们熟悉的 windows中的对话框、按钮都是对象,可以把属性看做一个对象的性质,把方法看做对象的动作,把事件看做对象的响应。我们来用生活化的语言解释一下:属性:日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。气球的属性包括可以看到的一些性质,如它的直径和颜色。方法:气球还具有本身所固有的方法和动作,如充气方法(用氢气充满气球的动作)、放气方法(排出气球中的气体)和上升方法(放手让气球飞走),所有的气球都具备这些能力。事件:气球还有预定义的对某些外部事件的响应,例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。2
38、2.下面程序的输出结果是( )。#includeiostream#includemath.husing namespace std;class pointprivate:double x;double y;public:point(double a,double b)x=a;y=b;friend double distances(point a,point b);double distances(point a,point b)return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);int main()point p1(1,2);point p2(
39、5,2);coutdistances(p1,p2)end1;return 0;(分数:2.00)A.2B.4 C.8D.16解析:解析 分析题目,此题最终要实现的结果是 sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y),其中的 a.x和 a.y分别指 p1(1,2)中的 1和 2。这样容易得到结果是(1-5)*(1-5)+(2-2)*(2-2)=16,再开方得到结果为 4。23.下面关于构造函数和析构函数的描述中,错误的是( )。(分数:2.00)A.析构函数可以声明为虚函数B.对虚析构函数的调用可以采用动态联编C.一个类的虚函数仅对派生类中重定义的函数起
40、作用,对其他函数没有影响D.构造函数可以声明为虚函数 解析:解析 析构函数可以声明为虚函数,但是构造函数不能声明为虚函数:类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响。24.下列叙述中错误的是( )。(分数:2.00)A.线性表是由 n个元素组成的一个有限序列B.线性表是一种线性结构C.线性表的所有结点有且仅有一个前件和后件 D.线性表可以是空表解析:解析 线性表是一种线性结构,由 n(n0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以 C是错误的。25.下列程序的输出结果是( )。#inclu
41、deiostreamusing namespace std;templatetypename TT fun(T a,T b)return(a=b)?a:b;)int main()coutfun(3,6),fun(3.14F,6.28F)end1;return 0;(分数:2.00)A.0,3.14B.3,3.14 C.3,3D.3.14,3.14解析:解析 此函数模板的功能是输出 a、b 两数中较小的那个数。(3,6)输出 3,(3.14F,6.28F)输出3.14。26.假定 MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。(分数:2.00)A.MyClass(MyClass
42、 x);B.MyClass(MyClassclass Complexpublic:Complex(double r=0,double i=0):re(r),im(i)double real()constreturn re;double imagoconstreturn im;Complex operator+(Complex C) constreturn Complex(re+c.re,im+c.im);private:double re,im;int main()Complex a=Complex(1,1)+Complex(5);couta.real()+a.imag()iend1;retu
43、rn 0;(分数:2.00)A.6+iB.2i+5C.6+1i D.1i+5解析:解析 由主函数入手,调用“Complex a=Complex(1,1)+Complex(5);”,实际是“Complex a=Complex(1,1)+Complex(5,0);”,调用“return Complex(re+c.re,im+c.im);”结果为:6+1i。29.下列叙述中正确的是( )。(分数:2.00)A.一个算法的空间复杂度大,则其时间复杂度必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对 解析:解析 算法的时间复杂度
44、和算法的空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。30.两个或两个以上模块之间联系的紧密程度称为( )。(分数:2.00)A.耦合性 B.内聚性C.复杂性D.数据传输特性解析:解析 耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。知识拓展 模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。31.关于模板
45、,下列说法不正确的是( )。(分数:2.00)A.用类模板定义一个对象时,不能省略实参B.类模板只能有虚拟类型参数 C.类模板本身在编译中不会生成任何代码D.类模板的成员函数都是模板函数解析:解析 类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C+中可以为类模板的参数设置默认值,所以选项B)错误。32.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.数据流 C.模块调用D.事件驱动解析:解析 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。33.设有如下关
46、系表:(分数:2.00)A.T=R/SB.T=RSC.T=RS D.T=RS解析:解析 T 就是关系 R中有的,同时 S中也有的有序组(1、2、3),即交运算()。知识拓展 交()由两个关系中都存在的有序组所组成;并()就是插入;差(-)就是删除;除(/)就是笛卡儿积的逆运算。34.定义如下枚举类型:enumMonday,Tuesday,Wednesday,Thrusday,Friday=2;表达式 Wednesday=Friday的值是( )。(分数:2.00)A.falseB.true C.2D.异常解析:解析 enum枚举类型名枚举元素表;其中:关键词“enum”表示定义的是枚举类型,枚
47、举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。本题中的枚举类型中的数据值Wednesday为 2,而。Friday 的值赋值为 2,所以判断 Wednesday等于 Friday的表达式值为真,即true。35.设根结点的层次为 0,高度为 K的二叉树最最大结点数为( )个。(分数:2.00)A.2KB.2K+1-1 C.2k+1D.2K+1+1解析:解析 设根结点的层次为 0,第 0层最多有 1结点即 20,第 1层最多有 2结点即 21,以此类推,第 k层最多有 2k个结点。高度为 K的二又树最最大结点数为 20+21+22+2k,即 2k+1-1个。二、填空题(总题数:15,分数:30.00)36.数据结构分为线性结构和非线性结构,带链的队列属于 1。(分数:2.00)填空项 1:_ (正确答案:线性结构)解析:解析 一个数据结构是线性结构还是非线性结构,判断依据是数据