1、二级 C+笔试-178 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面关于友元的说法中错误的是( )。(分数:2.00)A.若类 A 是类 B 的友元,那么类 B 也是类 A 的友元B.友元关系不能被继承C.若函数 fun 被说明为类 A 的友元,那么在 fun 中可以访问类 A 的私有成员D.若类 A 是类 B 的友元,那么类 A 的所有成员函数都是类 B 的友元2.下面有关类模板的说法中不正确的是( )。(分数:2.00)A.类模板的成员函数都是模板函数B.类模板本身在编译中不会生成任何代码C.类模板只是虚拟类型的参数D.用类模板
2、定义一个对象时,不能省略实际参数3.树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1 个B.1 个或多于 1 个C.0 个或 1 个D.至少有 2 个4.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)5.下面 for 语句的循环次数为( )。for(int i=0,n=0;!ni+);(分数:2.00)A.0B.5C.6D.无穷次6.下面数据结构中,属于非线性的是( )。(分数:2.00)A.线性表B.队列C.树D.栈7.下面字符串中,不可以用作 C+
3、标识符的是( )。(分数:2.00)A.caseB._test_cC.ReturnD.x_20088.下面关于运算符重载中正确的是( )。(分数:2.00)A.运算符函数的返回类型不能声明为基本数据类型B.C+的所有运算符都可以重载C.在类型转换符函数的定义中不需要声明返回类型D.通过运算符重载可以定义 C+中没有的运算符9.有如下类定义:class Testint x_,y_;public:Test ():a_(0) ,b_(0) Test(int a,int b=0) :a_((分数:2.00)A.,b_(B.10.有如下程序:#includeiostreamusing namespace
4、 std;class Basepublic:virtual void func1()cout“Base 1“;void rune2()cout“Base 2“;class Derived:public Basepublic:void func1()cout“Derived 1“;void func2()cout“Derived 2“;int main()Base *p=new Derived;P-func1();P-func2();return 0:运行此程序,屏幕上将显示输出_。(分数:2.00)A.Derived 1 Base 2B.Base 1 Base 2C.Derived 1 Der
5、ived 2D.Base 1 Derived 211.有如下类定义:class Funpublic:Fun(int v):value(v)/Fun()/private:Fun,/int value=0;/;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D.12.实现算法所需要的存储单元的多少称为( )。(分数:2.00)A.可实现性B.空间复杂度C.时间复杂度D.困难度13.数据库管理员(DB(分数:2.00)A.是数据库系统的一个重要组成部分,有很多职责。以下选项不属于 DBA 职责的是( )。A) 定义数据的存储结构和存取策略B.定义数据库的结构C.定期对数据库进行重组和重构
6、D.设计和编写应用系统的程序模块14.下面的类定义中,如果要为其添加一个析构函数,对于析构函数定义正确的是( )。class TlestClassprivate:int a:public:TestClass(int giva_a=0) a=give_a;(分数:2.00)A.void TestClass ()B.TestClass void()C.voidTestClass()D.TestClass()15.下面有关 this 指针的叙述中,正确的是( )。(分数:2.00)A.类的成员函数都有 this 指针B.任何与类相关的函数都有 this 指针C.类的非静态成员函数才有 this 指针
7、D.类的友元函数都有 this 指针16.TestClass 类定义如下:class TestClassprivate:intid;char gender;char*phone;public:TestClass ():id(0),gender(#),phone(NULL)TestClass(int no,char ge=#,char *ph=NULL)id=no;gender=ge;phone=ph;下面类对象定义语句中错误的是( )。(分数:2.00)A.TestClass myObj(i);B.TestClass myObj(2,“11101111155“);C.TestClass myO
8、bj(1,m);D.TestClass myObj;17.下面关于继承和派生的叙述中,正确的是( )。(分数:2.00)A.作为虚基类的类不能被实例化B.派生类不能访问基类中的保护成员C.虚函数必须在派生类中重新实现D.派生类向基类的构造函数传递参数18.下面函数的作用是以双倍行距输出文件:void test(ifstreamwhile(_)_;if(c=/n)outc.put(C) ;下划线处缺失的代码是( )。(分数:2.00)A.outf.put(C) 与 outc.get(C)B.outf.put(C.与 outc.get(C)C) outf.get(C)D.outf.get(C)19
9、.将下面类 TestClass 中的函数 fun()的对象成员 n 值修改为 100 的语句应该是( )。class TcstClasspublic:TestClass(int x)n=x;void SetNum(int n1)n=n1;private:int n;int fun()TestClass*ptr=new TestClass(45);_;(分数:2.00)A.TestClass(100)B.ptr-SetNum(100)C.SetNum(100)D.ptr-n=10020.语句 ofstream outf(“TEST.DAT“,ios_base:app);的功能是建立流对象 out
10、f,并试图打开文件TEST.DAT 与 outf 关联,而且( )。(分数:2.00)A.如果文件存在,打开失败:如果文件不存在,建立一个新文件B.如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失败C.如果文件存在,将文件指针定位于文件尾:如果文件不存在,建立一个新文件D.如果文件存在,将其置为空文件;如果文件不存在,打开失败21.已知:int n=1;在下面定义引用的语句中,正确的是( )。(分数:2.00)A.int x=B.int C.int D.int 22.下列关于函数模板的定义中,合法的是( )。(分数:2.00)A.template class TT abs(T z)
11、 return z0 ?-z:z;B.templatetypename TT abs(T z) return z0 ?-z:z;C.template Tclass Tabs(T z) return z0 ?-z:z;D.template T abs(Tz) return z0 ?z:z;23.下面( )不是构造函数的特征。(分数:2.00)A.构造函数必须指定返回值类型说明B.构造函数可以设置缺省参数C.构造函数可以重载D.构造函数的函数名与类名相同24.使用输入输出操作符 setw,能够控制( )。(分数:2.00)A.填充字符B.输出宽度C.对齐方式D.输出精度25.运行以下的程序代码,结
12、果是( )。#includeiostreamusing namespace std;intmain()int x=5;int *q=int y+;tout(*q)+end1;return 0;(分数:2.00)A.5B.6C.7D.826.下面关于虚函数的表述中正确的是( )。(分数:2.00)A.虚函数不能声明为另一个类的友元函数B.派生类必须重新定义基类的虚函数C.如果在重定义虚函数时使用了保留字 virtual,那么该重定义函数仍是虚函数D.虚函数不能够声明为静态函数27.以下关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.
13、对栈的插入与删除操作中,不需要改变栈底指针28.下面关于面向对象的程序设计方法中,正确的是( )。(分数:2.00)A.“多态性”是指对象的状态根据运行的要求进行变化B.“封装性”是指将不同类型的数据结合在一起作为一个整体来处理C.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用D.基类的私有成员在派生类的对象中不可访问,也不占内存空间29.有 3 个关系 R、S 和 T 如下:(分数:2.00)A.B.C.D.30.下列关于线性链表的描述中正确的是( )。(分数:2.00)A.存储空间不一定连续,且各元素的存储顺序是任意的B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.
14、存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的31.运算符重载是对已有的运算符赋予多重的含义,所以( )。(分数:2.00)A.能够对基本类型数据(如 double),重新定义“+“运算符的含义B.只能重载 C+中己经有的运算符,不能重新定义新运算符C.能够改变一个已有运算符的优先级和操作数个数D.C+中现有的所有运算符都可以重载32.有以下程序:#includeiostreamusing namespace std;class TestClasspublic:TestClass(int n)number=n;/拷贝构造函数TestCla
15、ss(TestClassTestClass()private:int number;TestClass fun(TestClass P)TestClass temp(p);return temp;int main()TestClass obj1(10),obj2(0) ;TestClass obj3(obj 1) ;obj2=fun(obj3) ;return 0:程序执行时,TestClass 类的构造函数被调用的次数是( )。(分数:2.00)A.2B.3C.4D.533.在软件开发中,需求分析阶段不可以使用的工具是( )。(分数:2.00)A.数据字典B.数据流图C.判断树D.程序流程图
16、34.执行下列程序语句后,输出结果为( )。#ineludeiostreamusing namespace std;int m=5;int main()int m=3;m+;:m+;coutmend1;return 0;(分数:2.00)A.3B.4C.5D.635.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二又链表D.有序线性链表二、填空题(总题数:15,分数:30.00)36.从程序设计的方法和技术的发展角度来说,程序设计主要经历了结构化设计和 1 的程序设计阶段。(分数:2.00)填空项 1:_37.关系数据库系统实现的专门关
17、系运算包括选择、连接和 1。(分数:2.00)填空项 1:_38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_39.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 1 测试。(分数:2.00)填空项 1:_40.数据库管理系统常见的数据模型有层次模型、网状模型和 13 种。(分数:2.00)填空项 1:_41.若要访问指针变量 q 所指向的数据,应使用表达式 1。(分数:2.00)填空项 1:_42.若有定义语句:int x=3,y=2,z=1;则表达式 x y?x:y 的值是 1。(分数:2.00)填空项 1:_43.非成员函数
18、必须声明为类的 1 才能访问这个类的 private 成员。(分数:2.00)填空项 1:_44.执行下列语句后,输出的结果为_。void run()static int x=3;x+;coutx“ “;int main()for(int i=0;i2;i+)fun();return D;(分数:2.00)填空项 1:_45.有如下程序:#includeiostreamusing namespace std;class Apublic:A()cout“A“;class B:private Apublic:B()coutB;int main()Aa;B b;return 0;这个程序的输出结果是
19、_。(分数:2.00)填空项 1:_46.执行下列语句段后程序的输出结果是_。int x=1,2,3,4,5;int q=x;cout*(+q)end1;(分数:2.00)填空项 1:_47.C+中多态性分为编译时的多态性和运行时的多态性,其中运行时的多态性时通过 1 实现的。(分数:2.00)填空项 1:_48.执行下列语句后,输出结果为_。int a=0,b=2,c=3;switch (a)case 0:switch (b)case 1:cout*;break;case 2:tout%;break;case 1:switch(C) case 1:cout$;break;case 2:cou
20、t*;break;default:tout#;(分数:2.00)填空项 1:_49.对于枚举类型的定义语句 enum WeekSun,Tue=3,Fri,Sat=6,Mon;其中枚举常量 Mon 的值为 1。(分数:2.00)填空项 1:_50.执行下列程序段以后程序的输出是_。void add(int int main()int y=3;add(y);coutyend1;(分数:2.00)填空项 1:_二级 C+笔试-178 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面关于友元的说法中错误的是( )。(分数:2.00)A.若类 A
21、是类 B 的友元,那么类 B 也是类 A 的友元 B.友元关系不能被继承C.若函数 fun 被说明为类 A 的友元,那么在 fun 中可以访问类 A 的私有成员D.若类 A 是类 B 的友元,那么类 A 的所有成员函数都是类 B 的友元解析:解析 C+中有些对象或函数需要访问其他对象的内部成员,这样可以用 friend 关键字将对应的类指定友元函数或友元类,但是这种关系不是相互的。如果声明一个类 A 为类 B 的友元类,则类 A 中的所有成元函数都可以访问类 B 中的私有成员。另外,友元关系不会被继承。2.下面有关类模板的说法中不正确的是( )。(分数:2.00)A.类模板的成员函数都是模板函
22、数B.类模板本身在编译中不会生成任何代码C.类模板只是虚拟类型的参数 D.用类模板定义一个对象时,不能省略实际参数解析:解析 C+中类模板的声明格式为 template模板形参表声明类声明,并且类模板的成员函数都是模板函数。3.树是结点的集合,它的根结点的数目是( )。(分数:2.00)A.有且只有 1 个B.1 个或多于 1 个C.0 个或 1 个 D.至少有 2 个解析:解析 树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为 0。知识拓展 什么是结点?通俗地讲,结点就好像树上的树枝(树枝上的叶子就是
23、叶子结点)。根结点就好像树的根。4.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n2)C.O(log2n) D.O(nlog2n)解析:解析 对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需比较 log2n 次,而顺序查找需要比较 n 次。注意:当有序线表为顺序存储时才能使用二分查找。5.下面 for 语句的循环次数为( )。for(int i=0,n=0;!ni+);(分数:2.00)A.0B.5C.6 D.无穷次解析:解析 for 语句的语法格式如下:fort(表达式 1;表达式 2;表达式 3)语句块。其中表
24、达式 1是 for 循环的初始化部分;表达式 2是 for 循环的条件部分,用来判断循环能否继续进行的条件,“!npublic:Test ():a_(0) ,b_(0) Test(int a,int b=0) :a_((分数:2.00)A.,b_(B.解析:解析 定义对象 x 时执行一次构造函数(调用 Test(int a,int b=0) ),定义对象数组 y 时,构造函数(注意,该构造函数必须是没有任何参数的)的执行次数与数组中对象的个数相等,即需要执行 3 次,最后定义一个指向 Test 对象的指针数组,它并不会创建对象,从而也就不会去执行构造函数,故构造函数一共执行了 4 次。10.有
25、如下程序:#includeiostreamusing namespace std;class Basepublic:virtual void func1()cout“Base 1“;void rune2()cout“Base 2“;class Derived:public Basepublic:void func1()cout“Derived 1“;void func2()cout“Derived 2“;int main()Base *p=new Derived;P-func1();P-func2();return 0:运行此程序,屏幕上将显示输出_。(分数:2.00)A.Derived 1
26、Base 2 B.Base 1 Base 2C.Derived 1 Derived 2D.Base 1 Derived 2解析:解析 派生类 Derived 由基类 Base 公有继承而来。调用 p-func1();后,执行派生类 Derived的函数 void func1();调用 p-rune2();后,执行基类的函数 void func2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类型调用。故通过指针 p 调用 func2 时将直接调用基类中的void func2()。11.有如下类定义:class Funpublic:Fun(int v):value(v)/Fun(
27、)/private:Fun,/int value=0;/;其中存在语法错误的行是( )。(分数:2.00)A.B.C.D. 解析:解析 C+中,不允许声明类成员变量的时候进行初始化,而在新的 ANSI C+标准中,可以对常整型数值在定义时进行初始化,所以语句 4 是错的。12.实现算法所需要的存储单元的多少称为( )。(分数:2.00)A.可实现性B.空间复杂度 C.时间复杂度D.困难度解析:解析 算法的空间复杂度一般是指:执行这个算法所需要的存储空间,其中包括算法程序所占的空间、输入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间。13.数据库管理员(DB(分数:2.00)A.是
28、数据库系统的一个重要组成部分,有很多职责。以下选项不属于 DBA 职责的是( )。A) 定义数据的存储结构和存取策略B.定义数据库的结构C.定期对数据库进行重组和重构D.设计和编写应用系统的程序模块 解析:解析 DBA(数据库管理员)的主要工作可以概括为 3 种:数据库设计;数据库维护;改善系统性能,提高系统效率。14.下面的类定义中,如果要为其添加一个析构函数,对于析构函数定义正确的是( )。class TlestClassprivate:int a:public:TestClass(int giva_a=0) a=give_a;(分数:2.00)A.void TestClass ()B.T
29、estClass void()C.voidTestClass()D.TestClass() 解析:解析 C+中的析构函数足类中的一种特殊的成员函数,它用来完成对象删除前的一些清理工作。析构函数不指定返回值类型。析构函数没有参数,同时不能重载。15.下面有关 this 指针的叙述中,正确的是( )。(分数:2.00)A.类的成员函数都有 this 指针B.任何与类相关的函数都有 this 指针C.类的非静态成员函数才有 this 指针 D.类的友元函数都有 this 指针解析:解析 C+中的 this 关键字用来表示指向类实例本身的指针。所以类的静态成员函数没有 this 指针,而友元函数不属于
30、类的成员,也不存在 this 指针,只有类的非静态成员函数才有 this 指针。16.TestClass 类定义如下:class TestClassprivate:intid;char gender;char*phone;public:TestClass ():id(0),gender(#),phone(NULL)TestClass(int no,char ge=#,char *ph=NULL)id=no;gender=ge;phone=ph;下面类对象定义语句中错误的是( )。(分数:2.00)A.TestClass myObj(i);B.TestClass myObj(2,“1110111
31、1155“); C.TestClass myObj(1,m);D.TestClass myObj;解析:解析 B) 中由于有两个参数,所以其调用了第二个构造函数,第二个构造函数的两个缺省参数,在调用时,实参会按从左到右的顺序传给形参,所以第二个参数“11101111155”会传递给形参 ge,而原型中的 ge 为字符型,实参为指向字符的指针,所以在编译时会出现错误。A) 与 C) 都能够正确的实现参数的传递。对于 D) ,由于在创建 TestClass 的实例 myObji 时,没有参数,所以其调用了第一个构造函数。17.下面关于继承和派生的叙述中,正确的是( )。(分数:2.00)A.作为虚
32、基类的类不能被实例化 B.派生类不能访问基类中的保护成员C.虚函数必须在派生类中重新实现D.派生类向基类的构造函数传递参数解析:解析 派生类可以访问基类中的保护成员和公有成员。当基类有默认构造函数时,派生类可以不向基类传递参数,直接调用派生类的默认构造函数,而纯虚函数要在非抽象的子类中实现,虚基类不能被实例化。18.下面函数的作用是以双倍行距输出文件:void test(ifstreamwhile(_)_;if(c=/n)outc.put(C) ;下划线处缺失的代码是( )。(分数:2.00)A.outf.put(C) 与 outc.get(C)B.outf.put(C.与 outc.get(
33、C)C) outf.get(C)D.outf.get(C) 解析:解析 ifstream 是文件输入流类,只能用于输入,它没有提供任何用于输出的操作。ofstream 是文件输出流类,只能用于输出,它没有提供任何用于输入的操作。从文件中输入字符要用文件输入流类引用 outf,并调用其输入字符的成员函数 get()。根据题目中的要求,可以看出当输入文件中读到换行符时,程序将在输出文件中两次输出换行符,即双倍行距。outc.put(C) 为输出一个字符,因为“if(c=/n)coutc.put(C) ;”此句,当 c 为间格字符(行距字符)时,再多输出一次 outc.put(C) 。19.将下面类
34、 TestClass 中的函数 fun()的对象成员 n 值修改为 100 的语句应该是( )。class TcstClasspublic:TestClass(int x)n=x;void SetNum(int n1)n=n1;private:int n;int fun()TestClass*ptr=new TestClass(45);_;(分数:2.00)A.TestClass(100)B.ptr-SetNum(100) C.SetNum(100)D.ptr-n=100解析:解析 对象指针存放的是对象的地址,要访问对象指针所指向对象的成员。可以通过两种方式。(*指针).成员,或者是指针-成员
35、。20.语句 ofstream outf(“TEST.DAT“,ios_base:app);的功能是建立流对象 outf,并试图打开文件TEST.DAT 与 outf 关联,而且( )。(分数:2.00)A.如果文件存在,打开失败:如果文件不存在,建立一个新文件B.如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失败C.如果文件存在,将文件指针定位于文件尾:如果文件不存在,建立一个新文件 D.如果文件存在,将其置为空文件;如果文件不存在,打开失败解析:解析 ofstream outf(“TEST.DAT“,ios_base:app);是以 ios_base:app 疗式打开文件,若文
36、件存在,将文件指针定位于文件尾。若文件不存在,建立一个新文件。21.已知:int n=1;在下面定义引用的语句中,正确的是( )。(分数:2.00)A.int x=B.int C.int D.int 解析:解析 引用实际上就是别名,它与被引用变量拥有同一个地址空间。选项 A) 中B.templatetypename TT abs(T z) return z0 ?-z:z; C.template Tclass Tabs(T z) return z0 ?-z:z;D.template T abs(Tz) return z0 ?z:z;解析:解析 声明一个函数模板格式是:template模板形参表声
37、明函数声明其中模板形参表声明是由一个或多个模板形参组成(如果是多个需要用逗号隔开)。其中,模板形参可以换成 class,函数的声明部分和一般函数的声明部分类似,只有某些类型修饰符被虚拟类型参数替代。23.下面( )不是构造函数的特征。(分数:2.00)A.构造函数必须指定返回值类型说明 B.构造函数可以设置缺省参数C.构造函数可以重载D.构造函数的函数名与类名相同解析:解析 构造函数是一种特殊的成员函数,它必须与类名相同,不能指定返回值类型,可以有一个或者多个参数,可以重载。24.使用输入输出操作符 setw,能够控制( )。(分数:2.00)A.填充字符B.输出宽度 C.对齐方式D.输出精度
38、解析:解析 本题考查的是输入输出操作符。使用输入输出操作符 setw,可以控制输入输出宽度。25.运行以下的程序代码,结果是( )。#includeiostreamusing namespace std;intmain()int x=5;int *q=int y+;tout(*q)+end1;return 0;(分数:2.00)A.5B.6 C.7D.8解析:解析 C+中引用是个别名,建立时须用另一个数据对象的名字进行初始化,这样确定该引用所代表的数据对象。此后对该引用的任何操怍实际上就是对所代表的数据对象的操作。26.下面关于虚函数的表述中正确的是( )。(分数:2.00)A.虚函数不能声明
39、为另一个类的友元函数B.派生类必须重新定义基类的虚函数C.如果在重定义虚函数时使用了保留字 virtual,那么该重定义函数仍是虚函数D.虚函数不能够声明为静态函数 解析:解析 在 C+中的成员函数前加上 virtual 修饰,就把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不得是静态成员函数。27.以下关于栈的描述中错误的是( )。(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针解析:解析 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作
40、用。栈可以采用顺序存储.也町以采用链式存储。28.下面关于面向对象的程序设计方法中,正确的是( )。(分数:2.00)A.“多态性”是指对象的状态根据运行的要求进行变化B.“封装性”是指将不同类型的数据结合在一起作为一个整体来处理C.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 D.基类的私有成员在派生类的对象中不可访问,也不占内存空间解析:解析 面向对象中的多态性是指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为;而封装性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。C+是起源于 C 语言的一种面向对象的程序设计语言,因此 C+
41、语言既保留了传统的结构化程序设计方法,又支持面向对象程序设计方法;派生类不可访问基类中的私有成员,因此在派生类中直接引用基类的私有变量成员是不允许的,但可以通过基类的公用成员函数来引用基类的私有变量成员。29.有 3 个关系 R、S 和 T 如下:(分数:2.00)A.B.C.D. 解析:解析 在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系 R,S,T 的结果可知关系 T 是由关系 R 和 S 进行自然连接得到的。30.下列关于线性链表的描述中正确的是( )。(分数:2.00)A.存储空间不一定连续,且各元素的
42、存储顺序是任意的 B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的解析:解析 线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也町能足不连续的。31.运算符重载是对已有的运算符赋予多重的含义,所以( )。(分数:2.00)A.能够对基本类型数据(如 double),重新定义“+“运算符的含义B.只能重载 C+中己经有的运算符,不能重新定义新运算符 C.能够改变一个已有运算符的优先级和操作数个数D.C+中现有的所有运算符都可以重载解析:解析 C+在重载
43、运算符时,必须符合以下的条件:不可以重载内置的 C+数据类型(如 int,double 等类型)运算符的含义;不可以定义 C+中没有的运算符;不可以改变重载运算符的优先级与操作数的个数;有些运算符不能被重载,例如域运算符(:),条件运算符(?:)等,具体哪些运算符不能被重载与编译器有关。32.有以下程序:#includeiostreamusing namespace std;class TestClasspublic:TestClass(int n)number=n;/拷贝构造函数TestClass(TestClassTestClass()private:int number;TestClas
44、s fun(TestClass P)TestClass temp(p);return temp;int main()TestClass obj1(10),obj2(0) ;TestClass obj3(obj 1) ;obj2=fun(obj3) ;return 0:程序执行时,TestClass 类的构造函数被调用的次数是( )。(分数:2.00)A.2B.3C.4 D.5解析:解析 obj1(10) 执行一次构造函数,obj2(0) 也执行一次构造函数;obj3(obj1) t3t.obj1 作为参数执行一次构造函数;fun(obji3) 中的 temp(p)将执行一次构造函数,而 fun
45、 本身是以按值传递参数,形参在 fun 函数内也要分配独立的空间,所以也要执行一次构造函数,其返回结果也是 TestClass 类型的,同样需要执行一次构造函数,所以一共要执行 4 次。33.在软件开发中,需求分析阶段不可以使用的工具是( )。(分数:2.00)A.数据字典B.数据流图C.判断树D.程序流程图 解析:解析 在软件开发中,需求分析阶段常使用的工具有数据流图(DFD) ,数据字典(DD) 、判断树和判断表。34.执行下列程序语句后,输出结果为( )。#ineludeiostreamusing namespace std;int m=5;int main()int m=3;m+;:m
46、+;coutmend1;return 0;(分数:2.00)A.3B.4 C.5D.6解析:解析 C+中变量有全局变量和局部变量。当在一个函数中声明的局部变量与全局变量同名时,局部变量会将全局变量屏蔽掉。要引用全局变量可以在变量名前面加“:”符号。35.下列数据结构中,能用二分法进行查找的是( )。(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二又链表D.有序线性链表解析:解析 二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。二、填空题(总题数:15,分数:30.00)36.从程序设计的方法和技术的发展角度来说,程序设计主要经历了
47、结构化设计和 1 的程序设计阶段。(分数:2.00)填空项 1:_ (正确答案:面向对象)解析:解析 程序设计主要经历了结构化设计和面向对象的程序设计阶段,面向对象在现在的程序设计中得到广泛的应用。37.关系数据库系统实现的专门关系运算包括选择、连接和 1。(分数:2.00)填空项 1:_ (正确答案:投影)解析:解析 关系数据库的专门关系运算包括选择、投影和连接 3 种,其中投影是从二维表的列方向上进行的运算,而选择和连接是从二维表的行方向七进行的运算。38.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。39.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 1 测试。(分数:2.00)填空项 1:_ (正确答案:黑箱(盒)测试)解析:解析 黑箱测试方法主要有等价类划分法、边界值分析法、错误