1、二级 C+笔试 334 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.C+程序的执行是从( )开始执行的?(分数:2.00)A.main 函数B.程序的第一行C.iostreahD.stdih2.下列关于重载函数的调用时选择的依据中,错误的是( )。(分数:2.00)A.根据函数参数个数不同B.根据函数参数类型不同C.根据函数名字不同D.根据函数的返回值不同3.下列关于动态联编的叙述中,错误的是( )。(分数:2.00)A.动态联编的基础是虚函数B.动态联编时在运行时确定所调用的函数代码C.只有通过基类的指针或引用才能实现动态联编D
2、.重载也是动态联编4.不能重载的运算符是( )。(分数:2.00)A.+B./C.*D.-5.以下不是数据库系统组成部分的是( )。(分数:2.00)A.数据库B.操作系统管理员C.数据库管理系统D.用户6.集簇属于( )。(分数:2.00)A.模式B.内模式C.外模式D.概念模式7.要实现多态性,派生类中的虚函数必须( )。(分数:2.00)A.函数名、参数及返回值必须与基类中对应的虚函数完全相同B.参数个数不必与基类中对应的虚函数的函数名完全相同C.参数类型不必与基类中对应的虚函数的函数名完全相同D.返回值类型不必与基类中对应的虚函数的函数名完全相同8.下面关于数组的初始化正确的是( )。
3、(分数:2.00)A.chara=a,b,cB.chara2=a,b,cC.chara23=a,b,e,d,e,fD.chara=“a“,“b“,“c“9.下列关于 C+多态性的叙述,正确的是( )。(分数:2.00)A.C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过虚函数实现C.运行时的多态性可通过函数重载实现D.运行时的多态性可通过操作符重载实现10.如果只想得到 1024 个元素组成的序列中第 5 个最小元素之前的部分排序的序列,用 ( )方法最快。(分数:2.00)A.冒泡排序B.快速排序C.简单选择排序D.堆排序11.下列关于虚函数的描述,错误的是( )。
4、(分数:2.00)A.构造函数可以是虚函数B.析构函数可以是虚函数C.虚函数必须通过引用或基类的指针实现D.虚函数的函数名必须与基类中对应的虚函数的函数名完全相同12.数据之间的相互关系和数据运算是指( )。(分数:2.00)A.数据B.数据元素C.数据项D.数据结构13.下面程序输出的结果是( )。 #includeiostream using namespace std; class A int X; public: A(int x):x(+x) A()coutx; ; class B:public A int y; public: B(int y):A(y),y(y) B()couty;
5、 ; void main() B b(3); (分数:2.00)A.34B.43C.33D.4414.设单链表中结点的结构为(data,link)。已知指针 q 所指结点是指针 p 所指结点的直接前驱,若在*q与*p 之间插入结点*s,则应执行下列哪一个操作?( )。(分数:2.00)A.s -link=p-link;p-link=sB.q-link=s;s-link=pC.p-link=s-link;s-link=pD.p-link=s;s-link=q15.下列实现 C 语言语句 printf(“Hello!“)的相同功能的语句是( )。(分数:2.00)A.cout“Hello!“B.c
6、in“Hello!“C.cout“Hello!“D.cin“Hello!“16.线性表是一个具有 n 个( )的有限序列。(分数:2.00)A.表元素B.数据元素C.字符D.数据项17.下面的程序输出的结果是( )。 #include iostream using namespace std; void main() int a=2; int &c=a; a+; coutc; (分数:2.00)A.2B.3C.4D.*a18.下列特点不是构造函数的特点的是( )。(分数:2.00)A.构造函数的函数名必须与类名相同B.构造函数可以重载C.构造函数必须有返回值D.构造函数在对象创建时,自动执行1
7、9.应在下面程序下划线中填写的正确的语句是( )。 #include iostream using namespace std; class A public: void test()cout “this is A!“; ; class B:public A void test() _ /显示调用基类函数 test() cout “this is B!“; ; void main()(分数:2.00)A.A:test()B.test()C.B:test()D.this-test()20.下列关键字不能作为函数返回值类型的是( )。(分数:2.00)A.floatB.intC.doubleD.v
8、irtual21.若需要利用形参直接访问实参,则应把形参变量说明为( )参数。(分数:2.00)A.指针B.引用C.传值D.常值22.在 C+中,继承的方式有( )种。(分数:2.00)A.2B.3C.4D.523.设有 50 行 60 列的二维数组 A5060,其元素长度为 4 字节,按行优先顺序存储,基地址为 200,则元素 A1825的存储地址为( )。(分数:2.00)A.3700B.4376C.3900D.462024.类的析构函数的作用是( )。(分数:2.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化D.删除类创建的对象25.用单链表表示的链式队列的队头在链表的(
9、)位置。(分数:2.00)A.链头B.链尾C.链中D.链表尾部前一个位置26.下面程序输出的结果是( )。 #includeiostream using namespace std; int test(int n1,int n2) return n1 +n2; float test (int f1,float f2)return f1-f2; float test(float x,float y)return(x+y)/2; float test(float x,int y)return(x+y)*2; void main() int a1=10; float a2=2.5f; couttes
10、t(a1,a2); (分数:2.00)A.12.5B.7.5C.6.25D.2527.下面是关于静态成员的说法,其中不正确的是( )。(分数:2.00)A.静态函数没有 this 指针B.同一个类的不同对象拥有相同的静态数据成员C.静态数据成员的初始化必须在类外进行D.静态函数可以访问所有数据成员28.已知类 A 中有如下一函数说明 Void Test(A &a);其中参数 A&a 的含义是( )。(分数:2.00)A.参数类型为指向 A 的指针类型B.A 为指针类型的形参C.a 为 A 类型的引用D.为 A 类型的指针29.下面程序输出的结果是( )。 #include iostream u
11、sing namespace std; void swap(int &a,int &b) int temp; temp=a; a=b; b=temp; void main() int x=2; int y=3; swap(x,y);coutxy; (分数:2.00)A.23B.32C.abD.ba30.设 A 是一个类的类名,下面函数的参数的引用形式是( )。(分数:2.00)A.function(A &B.function(AC.function(A *D.function(const)31.以下选项中不属于软件工程的目标是( )。(分数:2.00)A.有效性B.独立性C.可移植性D.可重用
12、性32.根据下面的程序,可以在主程序中使用的合法语句是( )。 #include iostream using namespace std; class Person int age; voidtest() public: Person(intage)this-age=age; void ShowAge()cout“the Persons age is“,age; ; void main() Person wang(23); (分数:2.00)A.wanage=45B.wanwang(45)C.wanShowAge()D.wantest()33.对于函数原型 void function(int
13、 x,float y,char z=a),合法的函数调用是( )。(分数:2.00)A.function(2,3OB.function(2,3,4)C.function(2)D.function()34.要想在 A 类的基础上公有派生出 B 类,合法的 C+语句是( )。(分数:2.00)A.B:public AB.B:public AC.B:drived AD.public A35.根据下面的程序,可以在主程序中使用的合法语句是( )。 #include iostream using namespace std; class Person int age; public: void SetA
14、ge(int x)age=x; void ShowAge()cout“the Persons age is“ age; ; class Student:private Person public:int study_code; ; void main() Student wangqiang; wangqiangstudy_code=23; (分数:2.00)A.wangqianage=231B.wangqianSetage(23)C.wangqianShowAge()D.wangqianstudy_code=12二、B填空题/B(总题数:15,分数:30.00)36.数据结构的存储结构包括顺序
15、、索引、散列和U 【1】 /U四种。(分数:2.00)填空项 1:_37.在顺序存储结构中进行插入和删除操作比在链表中进行插入和U 【2】 /U操作的效率低。(分数:2.00)填空项 1:_38.如果一个对象部分地包含自己,或自己定义自己,则称这个对象是U 【3】 /U的对象。(分数:2.00)填空项 1:_39.一棵树的广义表表示为 a(b(c,d(e,f),g(h),i(j,k(x,y),结点 f 的层数为U 【4】 /U。假定树根结点的层数为 0。(分数:2.00)填空项 1:_40.一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有U 【5】 /U子女。(分
16、数:2.00)填空项 1:_41.C+中类作用域符是U 【6】 /U。(分数:2.00)填空项 1:_42.在函数原型声明中,可以省略参数名,但必须声明函数参数的U 【7】 /U。(分数:2.00)填空项 1:_43.在类中声明的静态浮点数的默认初始化值是U 【8】 /U。(分数:2.00)填空项 1:_44.定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为U 【9】 /U类型。(分数:2.00)填空项 1:_45.在 C+中,给一变量取别名,可以通过U 【10】 /U方式。(分数:2.00)填空项 1:_46.面向对象的基本特点包括继承性、封装性和U 【11】
17、 /U。(分数:2.00)填空项 1:_47.C+源程序中,只有U 【12】 /U个主函数。(分数:2.00)填空项 1:_48.虚基类是含有U 【13】 /U函数的类。(分数:2.00)填空项 1:_49.下面程序执行的结果是U 【14】 /U #includeiostream using namespace std; class A public: static int x; A(inty)coutx+y; ; int A:x=2; void main() A a(5); (分数:2.00)填空项 1:_50.下面程序执行的结果是U 【15】 /U。 #include iostream u
18、sing namespace std; void main() int sum=0; int array6=1,2,3,4,5,6; int *p; p=&array0; for(int i=0;i6;i+) sum=sum+*p; p+; coutsum; (分数:2.00)填空项 1:_二级 C+笔试 334 答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.C+程序的执行是从( )开始执行的?(分数:2.00)A.main 函数 B.程序的第一行C.iostreahD.stdih解析:解析 从主函数开始执行。2.下列关于重载函数的调
19、用时选择的依据中,错误的是( )。(分数:2.00)A.根据函数参数个数不同B.根据函数参数类型不同C.根据函数名字不同 D.根据函数的返回值不同解析:解析 函数的重载要求函数名相同。3.下列关于动态联编的叙述中,错误的是( )。(分数:2.00)A.动态联编的基础是虚函数B.动态联编时在运行时确定所调用的函数代码C.只有通过基类的指针或引用才能实现动态联编D.重载也是动态联编 解析:解析 重载是静态联编。4.不能重载的运算符是( )。(分数:2.00)A.+B./C.* D.-解析:解析 在 C+中,不能重载的运算符有 6 个,它们是“”,“*”,“-”,“:”,“sizeof”和三目运算符
20、“?:”。5.以下不是数据库系统组成部分的是( )。(分数:2.00)A.数据库B.操作系统管理员 C.数据库管理系统D.用户解析:解析 数据库管理系统(Database Management System,DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,包括硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员和用户。6.集簇属于( )。(分数:2.00)A.模式B.内模式 C.外模式D.概念模式解析:解析 内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储结构与
21、物理存取方法,如数据存储的文件结构、索引、集簇及 hash 等存取方式与存取路径。7.要实现多态性,派生类中的虚函数必须( )。(分数:2.00)A.函数名、参数及返回值必须与基类中对应的虚函数完全相同 B.参数个数不必与基类中对应的虚函数的函数名完全相同C.参数类型不必与基类中对应的虚函数的函数名完全相同D.返回值类型不必与基类中对应的虚函数的函数名完全相同解析:解析 函数名、参数及返回值必须与基类中对应的虚函数完全相同。8.下面关于数组的初始化正确的是( )。(分数:2.00)A.chara=a,b,cB.chara2=a,b,cC.chara23=a,b,e,d,e,fD.chara=“
22、a“,“b“,“c“ 解析:解析 “ “是字符串符号,而不是字符符号。9.下列关于 C+多态性的叙述,正确的是( )。(分数:2.00)A.C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过虚函数实现C.运行时的多态性可通过函数重载实现 D.运行时的多态性可通过操作符重载实现解析:解析 运行时的多态性可通过函数重载实现。10.如果只想得到 1024 个元素组成的序列中第 5 个最小元素之前的部分排序的序列,用 ( )方法最快。(分数:2.00)A.冒泡排序B.快速排序C.简单选择排序D.堆排序 解析:解析 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最
23、坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法,故本题答案应该为选项 D。11.下列关于虚函数的描述,错误的是( )。(分数:2.00)A.构造函数可以是虚函数 B.析构函数可以是虚函数C.虚函数必须通过引用或基类的指针实现D.虚函数的函数名必须与基类中对应的虚函数的函数名完全相同解析:解析 构造函数不能是虚函数。12.数据之间的相互关系和数据运算是指( )。(分数:2.00)A.数据B.数据元素C.数据项D.数据结构 解析:解析 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能算机识别、存储和加工处理的信
24、息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 D。13.下面程序输出的结果是( )。 #includeiostream using namespace std; class A int X; public: A(int x):x(+x) A()coutx; ; class B:public A int y; public: B(int y):A(y),y(y) B()couty; ; void main() B b(3); (分数:2.00)A.34 B.43C.33D.44解析:解析 对象创建的次序为:先基类,后派生类;析构时,先派生类,后基类。14.设单链表中结点的结
25、构为(data,link)。已知指针 q 所指结点是指针 p 所指结点的直接前驱,若在*q与*p 之间插入结点*s,则应执行下列哪一个操作?( )。(分数:2.00)A.s -link=p-link;p-link=sB.q-link=s;s-link=p C.p-link=s-link;s-link=pD.p-link=s;s-link=q解析:解析 由于指针 q 所指结点是指针 p 所指结点的直接前驱,若在*q 与*p 之间插入结点*s,首先将q 指向 s,再将 s 指向 p,即插入了结点 s。15.下列实现 C 语言语句 printf(“Hello!“)的相同功能的语句是( )。(分数:2
26、.00)A.cout“Hello!“B.cin“Hello!“C.cout“Hello!“ D.cin“Hello!“解析:解析 C+输出语句语法。16.线性表是一个具有 n 个( )的有限序列。(分数:2.00)A.表元素B.数据元素 C.字符D.数据项解析:解析 线性表是一个具有 n 个数据元素的有限序列。17.下面的程序输出的结果是( )。 #include iostream using namespace std; void main() int a=2; int &c=a; a+; coutc; (分数:2.00)A.2B.3 C.4D.*a解析:解析 c 是 a 的引用,故 a+相
27、当于 c+。18.下列特点不是构造函数的特点的是( )。(分数:2.00)A.构造函数的函数名必须与类名相同B.构造函数可以重载C.构造函数必须有返回值 D.构造函数在对象创建时,自动执行解析:解析 构造函数不能有返回值。19.应在下面程序下划线中填写的正确的语句是( )。 #include iostream using namespace std; class A public: void test()cout “this is A!“; ; class B:public A void test() _ /显示调用基类函数 test() cout “this is B!“; ; void m
28、ain()(分数:2.00)A.A:test() B.test()C.B:test()D.this-test()解析:解析 A:表示 A 的作用域。20.下列关键字不能作为函数返回值类型的是( )。(分数:2.00)A.floatB.intC.doubleD.virtual 解析:解析 virtual 是虚函数的标志,而不是返回值的标志。21.若需要利用形参直接访问实参,则应把形参变量说明为( )参数。(分数:2.00)A.指针B.引用 C.传值D.常值解析:解析 在进行参数传递时,引用参数是利用形参直接访问实参,形参的变化直接影响实参的变化,而传值参数不会影响实参变量。22.在 C+中,继承
29、的方式有( )种。(分数:2.00)A.2B.3 C.4D.5解析:解析 类继承方式有三种,它们分别是公有、私有和保护。23.设有 50 行 60 列的二维数组 A5060,其元素长度为 4 字节,按行优先顺序存储,基地址为 200,则元素 A1825的存储地址为( )。(分数:2.00)A.3700B.4376C.3900D.4620 解析:解析 200+(1860+25)44620。24.类的析构函数的作用是( )。(分数:2.00)A.一般成员函数的初始化B.类的初始化C.对象的初始化 D.删除类创建的对象解析:解析 构造函数的目的是对象初始化。25.用单链表表示的链式队列的队头在链表的
30、( )位置。(分数:2.00)A.链头 B.链尾C.链中D.链表尾部前一个位置解析:解析 用单链表表示的链式队列的队头在链表的链头位置。26.下面程序输出的结果是( )。 #includeiostream using namespace std; int test(int n1,int n2) return n1 +n2; float test (int f1,float f2)return f1-f2; float test(float x,float y)return(x+y)/2; float test(float x,int y)return(x+y)*2; void main() i
31、nt a1=10; float a2=2.5f; couttest(a1,a2); (分数:2.00)A.12.5B.7.5 C.6.25D.25解析:解析 此处为函数的重载,第一个参数为 int,第二个参数为 float,故执行第二个函数。27.下面是关于静态成员的说法,其中不正确的是( )。(分数:2.00)A.静态函数没有 this 指针B.同一个类的不同对象拥有相同的静态数据成员C.静态数据成员的初始化必须在类外进行D.静态函数可以访问所有数据成员 解析:解析 只有静态函数才能访问静态成员。28.已知类 A 中有如下一函数说明 Void Test(A &a);其中参数 A&a 的含义是
32、( )。(分数:2.00)A.参数类型为指向 A 的指针类型B.A 为指针类型的形参C.a 为 A 类型的引用 D.为 A 类型的指针解析:解析 参见引用的语法。29.下面程序输出的结果是( )。 #include iostream using namespace std; void swap(int &a,int &b) int temp; temp=a; a=b; b=temp; void main() int x=2; int y=3; swap(x,y);coutxy; (分数:2.00)A.23B.32 C.abD.ba解析:解析 函数的参数是引用,故能实现引用调用。30.设 A 是
33、一个类的类名,下面函数的参数的引用形式是( )。(分数:2.00)A.function(A & B.function(AC.function(A *D.function(const)解析:解析 重载的语法。31.以下选项中不属于软件工程的目标是( )。(分数:2.00)A.有效性B.独立性 C.可移植性D.可重用性解析:解析 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。32.根据下面的程序,可
34、以在主程序中使用的合法语句是( )。 #include iostream using namespace std; class Person int age; voidtest() public: Person(intage)this-age=age; void ShowAge()cout“the Persons age is“,age; ; void main() Person wang(23); (分数:2.00)A.wanage=45B.wanwang(45)C.wanShowAge() D.wantest()解析:解析 ShowAse 是类的公有成员,可以由对象访问,其他的为私有成员,
35、类对象不能访问。33.对于函数原型 void function(int x,float y,char z=a),合法的函数调用是( )。(分数:2.00)A.function(2,3O B.function(2,3,4)C.function(2)D.function()解析:解析 由于只有第三个参数有默认值,故要求给出前两个参数的值。34.要想在 A 类的基础上公有派生出 B 类,合法的 C+语句是( )。(分数:2.00)A.B:public A B.B:public AC.B:drived AD.public A解析:解析 C+派生格式。35.根据下面的程序,可以在主程序中使用的合法语句是
36、( )。 #include iostream using namespace std; class Person int age; public: void SetAge(int x)age=x; void ShowAge()cout“the Persons age is“ age; ; class Student:private Person public:int study_code; ; void main() Student wangqiang; wangqiangstudy_code=23; (分数:2.00)A.wangqianage=231B.wangqianSetage(23)
37、C.wangqianShowAge()D.wangqianstudy_code=12 解析:解析 由于是私有继承,基类中所有成员成为派生类中的私有成员,故不能由派生类的对象访问,只有派生类的公有成员可由派生类对象访问。二、B填空题/B(总题数:15,分数:30.00)36.数据结构的存储结构包括顺序、索引、散列和U 【1】 /U四种。(分数:2.00)填空项 1:_ (正确答案:链接)解析:解析 数据结构的存储结构包括顺序、链接、索引和散列四种。37.在顺序存储结构中进行插入和删除操作比在链表中进行插入和U 【2】 /U操作的效率低。(分数:2.00)填空项 1:_ (正确答案:删除)解析:解
38、析 在链表中进行插入和删除操作的效率比在顺序存储结构中进行相同操作的效率高。只需要改变指针指向即可。38.如果一个对象部分地包含自己,或自己定义自己,则称这个对象是U 【3】 /U的对象。(分数:2.00)填空项 1:_ (正确答案:递归)解析:解析 如果一个对象部分地包含自己,或自己定义自己,则称这个对象是递归的对象。39.一棵树的广义表表示为 a(b(c,d(e,f),g(h),i(j,k(x,y),结点 f 的层数为U 【4】 /U。假定树根结点的层数为 0。(分数:2.00)填空项 1:_ (正确答案:3 a(b(c,d(e,f), g(h), i(j,k(x,y))解析:解析 转换后
39、 a 为第 0 层;b,i 为第 1 层;c,d,g,j,k 为第 2 层;e,f,h,x,y 为第 3 层。40.一棵树按照左子女-右兄弟表示法转换成对应的二叉树,则该二叉树中树根结点肯定没有U 【5】 /U子女。(分数:2.00)填空项 1:_ (正确答案:右)解析:解析 对于根结点没有兄弟,所以没有右子女。41.C+中类作用域符是U 【6】 /U。(分数:2.00)填空项 1:_ (正确答案:)解析:解析 类作用域符:。42.在函数原型声明中,可以省略参数名,但必须声明函数参数的U 【7】 /U。(分数:2.00)填空项 1:_ (正确答案:类型)解析:解析 不能省略参数的类型。43.在
40、类中声明的静态浮点数的默认初始化值是U 【8】 /U。(分数:2.00)填空项 1:_ (正确答案:O)解析:解析 静态变量由系统自动初始化为 0。44.定义一个函数时,若只允许函数体访问形参的值而不允许修改它的值,则应把该形参声明为U 【9】 /U类型。(分数:2.00)填空项 1:_ (正确答案:const)解析:解析 用 const 修饰的参数为常类型参数。45.在 C+中,给一变量取别名,可以通过U 【10】 /U方式。(分数:2.00)填空项 1:_ (正确答案:引用)解析:解析 引用是给对对象的别名,对引用的操作就是对被引用对象的操作。46.面向对象的基本特点包括继承性、封装性和U
41、 【11】 /U。(分数:2.00)填空项 1:_ (正确答案:多态性)解析:解析 继承性、封装性及多态性是面向对象的基本特点。47.C+源程序中,只有U 【12】 /U个主函数。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 C+源程序中,只有 1 个主函数。48.虚基类是含有U 【13】 /U函数的类。(分数:2.00)填空项 1:_ (正确答案:虚)解析:解析 虚基类是含有虚函数的类。49.下面程序执行的结果是U 【14】 /U #includeiostream using namespace std; class A public: static int x; A(int
42、y)coutx+y; ; int A:x=2; void main() A a(5); (分数:2.00)填空项 1:_ (正确答案:7)解析:解析 程序的静态变量初始化为 2,而构造函数招待过程中 y 变量为初始化为 5,故程序执行的结果为 7。50.下面程序执行的结果是U 【15】 /U。 #include iostream using namespace std; void main() int sum=0; int array6=1,2,3,4,5,6; int *p; p=&array0; for(int i=0;i6;i+) sum=sum+*p; p+; coutsum; (分数:2.00)填空项 1:_ (正确答案:21)解析:解析 本题用数组地址来访问数组内容,通过数组指针来操作数组内容,依次取出数组内容进行加和,然后进行输出。