1、计算机二级(C+)5 及答案解析(总分:1765.00,做题时间:90 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:25,分数:1750.00)1.面向对象程序设计思想的主要特征中不包括( )。(分数:70.00)A.public int MAX = 100;B.final int MAX = 100;C.final public int MAX = 100;D.public final int(MAX = 100;2.下列关于运算符重载不正确的是( )。(分数:70.00)A.运算符重载不能改变运算符的操作数个数B.运算符重载不能改变运算符的优先级C.运算符重载不能改变
2、运算符的结合性D.运算符重载能改变对预定义类型数据的操作方式3.派生类继承基类的方式有( )。(分数:70.00)A.SEEKNB.SEEK FOR 基本工资=NC.FIND 1000D.LOCATE FOR 基本工资=N4.下面关于 C+语言的描述错误的是( )。(分数:70.00)A.C+语言支持数据封装B.C+语言中引入友元没有破坏封装性C.C+语言允许函数名和运算符重载D.C+语言支持动态联编5.下面程序的运行结果是( )。 # include iostreamh void main( ) int num=1; intref=num; ref=ref+2; cout num; num=
3、num+3; cout ref endl; (分数:70.00)A.关系模型B.层次模型C.网状模型D.以上皆非6.有如下程序: #include“iostreamh“ void main( ) int x=1,a=0,b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; cout “a=“ a “,“ “b=“ b; 该程序的输出结果是( )。 (分数:70.00)A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=27.设有数组定义:chararray:“China“;,则数组 array 所占的空间为( )。(分数:70.
4、00)A.4 个字节B.5 个字节C.6 个字节D.7 个字节8.有如下程序: #includeiostreamh long fib(int n) if(n 2) return(fib(n-1)+fib(n-2) ); else return(2); void main( ) cout fib(3); 该程序的输出结果是( )。 (分数:70.00)A.数组是最简单的复合数据类型,是有限元素的有序集合B.数组的元素可以是值(基本数据类型)、对象或其他数组C.定义数组时,必须分配内存D.一个数组中的元素都必须是相同的类型9.关于虚函数下面说的正确的是(分数:70.00)A.可以被三种类所引用:该
5、类自身、与它在同一个包中的其他类、在其他包中的该类的B.可以被两种类访问和引用:该类本身、该类的所有子类C.只能被该类自身所访问和修改D.只能被同一个包中的类访问10.下面程序段的运行结果是( )。 voidmain( ) ihtt,a,b,C; a=1;b=2;C=2; while(abc) t=a;a=b;b=t;c-; couta“,“b“,“C; (分数:70.00)A.8B.9C.7D.611.下列程序的运行结果是( )。 # include iostreamh class A int a; public: A( ) a=0; A(int aa) a=aa; cout a+; ; v
6、oid main( ) A x,y (2),z(3); cout endl; (分数:70.00)A.0B.23C.34D.2512.C+中运算符优先级由高到低排列正确的是( )。(分数:70.00)A.B. B.C.0D.A解析:根据规范化理论依据,对关系的要求包括:列是同质的,即每一列中分量是同类型的数据,来自同一个域,每列称为一个属性,行或列的顺序可以任意排列,而不影响各数据项的关系。13.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为( )。(分数:70.00)A.抽象类就是其中有函数定义但没有实现的类B.抽象类是可以被实例化的C.派生类不能成
7、为抽象类D.抽象类的子类必须实现父类中的纯虚函数 解析:java 有四种访问类型,分别为 public,protected,default 和 private,其 中 public 变量可以被所有的外部类访问,而 pretected 变量可以被同一个包及该类的子类 访问,default 变量即没有任何修饰符的变量可以被同一个包中的类访问,而 private 变量 只能在被该类内部被访问。题目中的外部类应该理解为除该类自身的其他类。14.下面程序的运行结果是( )。 #includeiostreamh class base protected: int a; public: base( )cou
8、t“0“; ; class basel:virtual base public: basel( )cout“1“; ; class base2:virtual base public: base2( )cout“2“; ; class derived:public basel,public base2 public: derived( )cout“3“; ; void main( ) derived obj; coutendl; (分数:70.00)A.5B.3C.2 D.0解析:本题考查三目运算符“?:”。三目运算符的表达式为(表达式 1)?(表达式 2):(表达式 3),运算过程是当(表达
9、式 1)的值为真时,求(表达式 2)的值为整个表达式的值;如果(表达式 1)的值为假,则求(表达式 3)的值为整个表达式的值。题中,表达式 x12 的结果为假,所以执行的语句是 x-12,最终结果应该是 0。15.关于构造函数 A( )的拷贝构造函数正确的是( )。(分数:70.00)A.B.#C.!D. 解析:下面是常量类型及其类型说明符: 整型 长整型& 单精度浮点数! 双精度浮点数# 货币型 字符串型$ 字节型、布尔型、日期型、对象及变体型常量没有类型说明符。 16.下面关于数组的描述错误的是( )。(分数:70.00)A.报表页眉B.页面页眉 C.组页眉D.以上说法都不对解析:将标题移
10、动到页面页眉中,则标题在每一页上都显示。如果将标题移动到报表页眉中,则打印时只在第一页的开始位置出现。17.设有定义 int a=1;float f=12;charc=a;,则下列表示错误的是( )。(分数:70.00)A.File StreamB.Pipe StreamC.Random Stream D.Filter Stream解析:在此题中,考查了函数的使用方法,功能如下:当输入的 x 小于 10 时,将 x 的值赋给 Feed 输出,如果 x 的值大于 10,将 x 的值加 10 赋给 Feed 输出。主调函数用一个 InputBox 对话框来接收输入的信息,将输入的数字赋给 x,然后
11、调用 Feed 函数,输出结果。因为 x=1510,所以返回值为 25。18.在 32 位的计算机中,一个 char 型数据所占的内存长度的字节是( )。(分数:70.00)A.4B.1 C.2D.8解析:本题考查 C+语言各种数据类型所占的内存大小。char 型数据所占内存的大小为 1 个字节。注意:int 型数据占内存的大小为 4 个,cong double,double 占内存的大小为 8 个字节。19.C+语言类体系中,不能被派生类继承的有( )。(分数:70.00)A.转换函数B.构造函数 C.虚函数D.静态成员函数解析:派生类对象的数据结构是由基类中说明的数据成员和派生类中说 明的
12、数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。20.下列程序的运行结果是( )。 #includeiostreamh void fun(int *a,iht *B) int *k; k=a;a=b;b=k; void main( ) inta=3,b=6,*x=&a,*y=&b; fun(x,y); cout a “ “ b; (分数:70.00)A.在没有其他的约束的条件下该列表将有 6 行可见 B.一行的最大字符数是 6C.列表不允许用户多选D.列表只能有一项被选中解析:对于 TextField 的该种形式的构造方法来说,前一个参数是文本域 中初始的字符串的显示值,第二个参数
13、用于表示可见字符的个数。TextField 中允许的字 符数量投有限制。当文本溢出时就会发生滚动。文本域的缺省编辑方式是可编辑的,一 个文本域只能使用一种字体,这个字体可以在运行的过程中动态的改变,但是文本域中 的所有字符串都将使用这个字体显示。21.与语句 coutendl;不等价的是( )。(分数:70.00)A.3,3 B.3,4C.4,3D.4,4解析:构造方法是给对象赋初值,所以没有返回值。22.下面程序的运行结果是( )。 #include“ iostreamh“ #define sum(a,b)a * b void main( ) int x; x=sam(1+2,3); cou
14、t x; (分数:70.00)A.电脑 2004B.* * * * *C.* * * * * * * * D.错误设置,无法输入解析:B)选项指所有字符转换为小写,C)选项指必须输入数字 09,D)选项指必须输入字母或数字。23.执行下列程序段,结果是( )。 #includeiostreamh void main( ) int x=40; char y=C; int n; n=(x&0xff)&c(y B); cout n; (分数:70.00)A.0B.1 C.2D.3解析:按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为 1 时,结果位才
15、为 1,否则为 0。参与运算的数以补码方式出现。逻辑与运算符“&”需要两边的结果都为 1 时,其结果才为 1。24.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。(分数:70.00)A.生成表查询B.更新查询 C.删除查询D.追加查询解析:可以修饰类的修饰符有 public,staic,final 和 abstract。private 不能做类的修饰符。 25.下面程序的运行结果为( )。 #includeiostreamh void main( ) char a=,3; switch(a) case3:cout “3“; case2:cout “
16、2“;break; default:cout “1“; (分数:70.00)A.3B.321C.31D.32 解析:本题主要考查的是 switch 语句的使用,在第一个 case 处,因为满足 条件所以输出字符 3,但这个分支没有 break 语句终止,所以会继续执行下面的分支语 句,即输出字符 2,这时出现 break 语句,结束整个语句,即输出 32。26.软件开发的结构化生命周期方法将软件生命周期划分成( )。(分数:-1.00)A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段C.总体设计、详细设计、编程调试D.需求分析、功能定义、系统设计解析:通常,将软件产品从提出、实现、使
17、用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3 个阶段。27.已知数据表 A 中每个元素距其最终位置不远,为节省时间,应采用的算法是( )。(分数:-1.00)A.堆排序B.直接插入排序 C.快速排序D.直接选择排序解析:当数据表 A 中每个元素距其最终位置不远,说明数据表 A 按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项 B) 。28.下列数据模型中,具有坚实理论基础的是( )。(分数:-1.00)A.层次模型B.网状模型C.关系模型 D.以上 3 个都是解析:关系模型比格式化模型(网状模型和层次模型)有
18、以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。29.希尔排序属于( )。(分数:-1.00)A.交换排序B.归并排序C.选择排序D.插入排序 解析:希尔排序的基本思想是把记录按下标的一定增量分组,对每组记录使用插入排序,随增量的逐渐减小,所分成的组包含的记录越来越多,到增量的值减小到 1 时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。30.线性表的顺序存储结构和线性表的链式存储结构分别是( )。(分数:-1.00)A.顺序存取的存储结构、顺序存取的存储结构B.随机存取的存储结构、顺序存取的存储结构 C.随机存取的存储结
19、构、随机存取的存储结构D.任意存取的存储结构、任意存取的存储结构解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L 计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。31.栈和队列的共同特点是( )。(分数:-1.00)A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素 q D.没有共同点解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“
20、后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。32.在软件测试设计中,软件测试的主要目的是( )。(分数:-1.00)A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.发现软件错误而执行程序 解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 33.关系表中的每一横行称为一个( )。(分数:-1.00)A.元组 B.字段C.属性D.码解析:关系表中,每一行称为
21、一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。34.一些重要的程序语言(如 C 语言和 Pascal 语言)允许过程的递归调用。而实现递归调用中的存储分配通常用( )。(分数:-1.00)A.栈 B.堆C.数组D.链表解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每 一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些 调用点。35.根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成( )。
22、(分数:-1.00)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构解析:根据数据结构中各数据元素之间前后件关系的复杂程序,一般将数据结构分为两大类:线性结构和非线性结构。线性结构是指满足以下两个条件的非空的数据结构:一是有且只有一个根结点,二是每一个结点最多有一个前件,也最多有一个后件。如是一个数据结构不是线性结构,则称为非线性结构。三、填空题(每空 2 分,共 30 分)(总题数:10,分数:30.00)36.下列程序的执行结果为 1。 #includeiostream.h void main2 cout.fill( * ); cout.wid
23、th(10); cout“hello“endl; (分数:3.00)填空项 1:_ (正确答案:* * * * * hello)解析:本题考查的是 C+语言的流输出操作,cout 中包括的函数 fill-|_|-和 width-|_|-分 别实现填充和设定显示长度的功能。37.假定 A 为一个类,则语句 A(A &a);为该类 1 函数的原型说明。(分数:3.00)填空项 1:_ (正确答案:拷贝构造)解析:本题考查的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用 一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名: :拷贝构造函数名 (类名引用名)。 38.C+语句 co
24、nst char * const p= “hello“;,所定义的指针 p 和它所指的内容都不能被 1。(分数:3.00)填空项 1:_ (正确答案:改变)解析:本题考查的是定义常量的关键字 const,由 sonst 定义的变量的值不可以再改变,所以定义时必须进行初始化。39.C+语言支持的两种多态性分别是编译时的多态性和 1 的多态性。(分数:3.00)填空项 1:_ (正确答案:运行时)解析:本题考查的是多态的概念,多态性主要是指发出同样的消息而被不同类型的 对象接收时导致完全不同的行为,它一般分为编译时的多态性和运行时的多态性,比如 函数重载和虚函数。 40.下面程序的运行结果是 1
25、和 2。 #includeiostreamh #define N 10 #define s(x)x * x #define f(x)(x * x) void main3 int i1,i2; i1=1000/s(N);i2=1000/f(N); cout i1 “ “ i2; (分数:3.00)填空项 1:_ (正确答案:1000)解析:对于 define 宏定义语句,系统会在编译前进行替换。本题替换过程如下: i1=1000/s(N) i1=1000/s(10) i1=1000/10*10 i1=1000 i2=1000/f(N) i2=1000/f(10) i2=1000/(10*10)
26、i2=10 41.如果类中的一个成员函数的定义实现在类内,则该函数系统自动默认为该类的 1 函数。(分数:3.00)填空项 1:_ (正确答案:内联)解析:本题考查内联函数与宏定义的区别。C+中的成员函数如果它的实现写在了类中,那么该函数就是一个内联函数。42.一个 C+语言程序的开发步骤通常包括编辑、 1、链接、运行和调试。(分数:3.00)填空项 1:_ (正确答案:编译)解析:C+语言程序开发的基本步骤是编辑、编译、链接、运行和调试。43.如果类 B 继承了类 A,则称类 A 为类 B 的基类,类 B 称为类 A 的 1。(分数:3.00)填空项 1:_ (正确答案:派生类)解析:如果类
27、 A 为类 B 的基类,那么类 B 称为类 A 的派生类。 44.继承的方式有公有继承、私有继承和 13 种。(分数:3.00)填空项 1:_ (正确答案:保护继承)解析:继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择 3 种不同的继承方式。45.语句 cout /n还可表示为 1。(分数:3.00)填空项 1:_ (正确答案:cout end1;)解析:“/n”表示换行,end1 也可表示换行。end1 和“/n”可以通用。46.为了便于对照检查,测试用例应由输入数据和预期的 1 两部分组成。(分数:-1.00)填空项 1:_ (正确答案:输出结果)解析:本题主要考查测试
28、的步骤。47.测试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.00)填空项 1:_ (正确答案:调试)解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 48.面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 1。(分数:-1.00)填空项 1:_ (正确答案:消息)解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(me
29、thoD) 、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。 49.用树型结构表示实体类型及实体间联系的数据模型称为 1(分数:-1.00)填空项 1:_ (正确答案:层次模型)解析:用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状 模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。50.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体“项目主管”与实体 “项目”的联系属于 1 的联系。 (分数:-1.00)填空项 1:_ (正确答案:一对多(或 1:N))解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3 种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。