Ox2ac是C语言常量,计算机等级考试二级C++语言程序设计标准预测试卷二

二级C++语言程序设计

标准预测试卷二

(考试时间90分钟,满分100分)

一、选择题(每小题2分,共70分)

下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在 答题卡相应位置上,答在试卷上不得分。

(1)下列叙述中正确的是

A)线性表是线性结构

B)栈与队列是非线性结构

C)线性链表是非线性结构

D)二叉树是线性结构

(2)下列数据结构中,插入时不需要移动其他元素的是

A)有序线性表

B)无序线性表

C)栈和队列

D)以上三种都不是

(3)数据的存储结构是指

A)数据所占的存储空间量

B)数据的逻辑结构在计算机中的表示

C)数据在计算机中的顺序存储方式

D)存储在外存中的数据

(4)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结 点数为

A)221

B)219

C)231

D)229

(5)下列关于栈的叙述中正确的是

A)只能在栈顶插入元素,而不能删除元素

B)可以插入元素,也能删除元素

C)插入元素时需要移动栈中所有的元素

D)删除元素时需要移动栈中所有的元素

(6)下列叙述中正确的是

A)软件测试的目的是证明程序是否正确

B)软件测试的目的是尽可能多的发现程序中的错误

C)软件测试的目的是使程序运行结果正确

D)软件测试的目的是使程序符合结构化原则

(7)下列叙述中正确的是

A)在面向对象的程序设计中,各个对象之间应相对独立,相互依赖性小

B)在面向对象的程序设计中,各个对象之间应具有密切的联系

C)在面向对象的程序设计中,各个对象应都是公用的

D)上述三种说法都不对

(8)下列叙述中正确的是

A)数据库设计是指设计数据库系统

B)数据库设计是指设计数据库管理系统

C)数据库设计是指在已有数据库管理系统的基础上建立数据库

D)以上三种说法都不对

(9)设有二元关系R和三元关系S,下列运算中合法的是

A)R n S

B)R U S

C)R—S

D)R×S

(10)下列关于E—R图的描述中正确的是

A)E—R图只能表示实体之间的联系

B)E—R图只能表示实体和实体之间的联系

C)E—R图只能表示实体和属性

D)E—R图能表示实体、属性和实体之间的联系来源:-计算机二级考试

(11)以下叙述中不正确的是

A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B)在C的函数中,最好使用全局变量

C)在C中,形式参数只是局限于所诤?BR>D)在C中,函数名的存储类别为外部

(12)C++语言中函数返回值的类型决定于

A)return语句中的表达式类型

B)调用函数的主调函数类型

C)调用函数时r临时类型

D)定义函数时所指定的函数类型

(13)若要说明一个类型名STP,使得STP s;等价于char*s;,以下选项中正确的是

A)typedef STP chara*s;

B)typedefa *char STP:

C)typedef STPfi*char;

D)typedef chara*TP:

(14)以下非法的赋值语句是

A)n=(i=2,++i);

B)j++

C)++(i+1)

D)x=j>0;

(15)C十+语言中在C语言的基础上增加的特性不包括

A)结构

B)引用

C)类和对象

D)静态成员函数

(16)对于下列语句,正确的判断是 for(x=O,y=O;(y!=123)&&(x<4);x++);

A)是无限循环

B)循环次数不定

C)最多执行4次

D)最多执行3次

(17)若有说明:int a[3][4];则对a数组元素的非法引用是

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0]

D)a[O][4]

(18)设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a十h/b的值是

A)6.500000

B)6

C)5.500000

D)6.000000

(19)下面赋值语句中正确的是

A)a=7+b+c=a+7:

B)a=7+b++=a+7:

C)a=7+b,b++,a+7;

D)a=7+b,c=a+7;

(20)语句cout<

A)无输出

B)编译错误

C)-l

D)l来源:-计算机二级考试

(21)在下面的函数声明中,存在着语法错误的是

A)VOid BC(int a,int)

B)void Bd(int,int)

C)VOid(1 BE(int,int=5)

D)int BF(Int x;int y)

(22)下列关于指针的操作中.错误的是

A)两个同类型的指针可以进行比较运算

B)可以用一个空指针赋给某个指针

C)一个指针可以加上两个整数之差

D)两个同类型的指针可以相加

(23)静态成员函数不能说明为

A)整型函数

B)常函数

C)虚函数

D)内联函数

(24)静态成员函数没有

A)返回值

B)this指针

C)指针参数

D)返回类型 (25)以下程序的输出结果为

(25)以下程序的输出结果为

1.jpg

A)27.000000

B)27.500000

C)28.000000

D)28.500000

(26)执行下列语句后,输出结果为 COut.put(‘s’): cout<

A)ca

B)SCa

C)S

D)a

(27)下列运算符中,不能重载的是

A)?:

B)+

C)一

D)<=

(28)所有在函数中定义的变量及函数的形式参数,都属于

A)全局变量

B)局部变量

C)静态变量

D)常量

(29)为引入对象的同义词,对象的别名称为

A)指针

B)引用

C)枚举

D)结构

(30)以下不属于构造函数特征的是

A)构造函数名与类名相同

B)构造函数可以重载

C)构造函数可以设置默认参数

D)构造函数必须指定函数类型来源:-计算机二级考试

(31)以下关于虚函数的叙述中不正确的是

A)虚函数属于成员函数

B)虚函数不允许说明成静态的

C)凡是虚函数必须用virtual说明

D)虚函数可以被继承

(32)类的构造函数的作用是

A)一般成员函数

B)类的初始化

C)对象的初始化

D)删除对象创建的所有对象

(33)继承机制的作用是

A)信息隐藏

B)数据封装

C)定义新类

D)数据抽象

(34)关于虚函数的描述中正确的是

A)虚函数是一个静态成员函数

B)虚函数是一个非成员函数

C)虚函数既可以在函数说明时定义,也可以在函数实现时定义

D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

(35)下列表示纯虚函数的成员函数是

A)virtual int func(int);

B)void func(int)=0;

C)virtual void func=O;

D)virtual void func(int){}来源:-计算机二级考试

二、填空题(每空2分,共30分)

请将每空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

(1)设一棵二叉树的中序遍历结果为ABCDEFG,前序遍历结果为DBACFEG,则后序遍

历结果为 【l】 。

(2)在面向对象方法中,属性与操作相似的一组对象称为 【2】 。

(3)在结构化设计方法中,数据流图表达了问题中的数据流与加工之间的关系,并且,每一个 【3】 实际上对应一个处理模块。

(4)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模 块。其中 【4】 的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

(5)在关系运算中,【5】运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。

(6)为了表明一个函数不带返回值,应在定义函数时指定该函数类型为【6】 。

(7)下列程序如果去掉for循环外围的大括号对,则会出现编译错误。错误原因是【7】 。

2.jpg

(8)对于下列语旬

3.jpg

其输出结果为:【8】。

(9)下列程序不能通过编译,应该在划线部分填写的语句是【9】 。

4.jpg

(10)根据下面的主程序,完成类的一种构造函数的最简单形式。

#include5.jpg来源:-计算机二级考试

(11)下列程序的执行结果为【1l】 。

6.jpg

(12)下列程序的运行结果是【12】 。

7.jpg

(13)完成下列类的构造函数,初始化语句为【13】

8.jpg

(14)根据下列程序的执行结果,可以断定划线部分的修饰符应为【14】 。

执行结果:

9.jpg

(15)下列程序的输出结果是【l5】 。

10.jpg来源:-计算机二级考试

标准预测试卷二答案及解析

一、选择题

(1)A【解析】线性表是线性结构;线性链表是线性表的链式存储结构,因此也是线性结构;栈与队列 是特殊的线性表,因此也是线性结构;二叉树是非线性结构。

(2)c【解析】显然,对于栈和队列来说,插入时不需要移动其他元素。

(3)B【解析】数据的存储结构是指数据的逻辑结构在计算机中的表示。

(4)B【解析】二叉树有一个性质:在任意一棵二叉树中,度为O的结点(即叶子结点)总是比度为2的 结点多一个。由于本题中的二叉树有70个叶子结点,因此有69个度为2的结点。 该二叉树中总的结点数为 度为2的结点数+度为1的结点数+叶子结点数=69+80+70=219

(5)B【解析】栈(stack)是限定在一端进行插入与删除的线性表。

(6)B【解析】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠 性的鉴定。 由此町知,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法 暴露程序中的错误和缺陷。测试只能说明程序有错,而不能证明程序无错,希望通过有限次的测试 就能发现程序中的所有错误是不可能的,即完全测试是不可能的。

(7)A【解析】在面向对象的程序设计中,对象是面向对象的软件的基本模块,它是由数据及可以对 这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处 理来设置,没有无关的操作。从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性 强。由于完成对象功能所需要的元素(数据和方法)基本上都被封装在对象内部,它与外界的联系自 然就比较少,因此,对象之间的耦合通常比较松。因此,选项B与C中的说法都是错误的,而选项A中的说法是正确的。

(8)C【解析】数据库设计是指在已有数据库管理系统的基础上建立数据库。

(9)D【解析】在并(U)、交(n)、差(一)三种运算中,都要求参加运算的两个关系具有相同的属性名 表,其运算结果也与它们具有相同的属性名。即它们的表框架是相同的。由此可以看出,本题给出 的两个关系R与s其表格框架足不同的(R是二元关系,s是三元关系),因此,它们不能作并(U)、 交(n)、差(一)这三种运算。而两个不同框架的关系是可以作笛卡尔积(×)运算的。

(10)D【解析】E-R(实体一联系,Entity~Relationship)图是设计概念模型的有力工具。在E-R图中, 用三种图框分别表示实体、属性和实体之间的联系: ①用矩形框表示实体,框内标明实体名; ②用椭圆状框表示实体的属性,框内标明属性名; ③用菱形框表示实体间的联系,框内标明联系名; ④实体与其属性之间以无向边连接,菱形框与相关实体之间也用无向边连接,并在无向边旁标 明联系的类型。 因此,用E-R图不仅可以简单明了地描述实体及其相互之间的联系,还可以方便地描述多个实体集 之间的联系和一个实体集内部实体之间的联系。 由此可知,选项A、B、c三个选项中的说法都是不对的。

(11)B【解析】本题也是考查c语言中函数的概念及其使川。函数调用时,值可以双向传递,并没有限 制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。

(12)D【解析】 函数在定义时已经可以指定其函数类型,则函数返回值类型就是该类型。

(13)D【解析】本题考查类型定义typedef的使用方式,考生常犯的问题是把两者的位置颠倒。

(14)c【解析】本题其实是考查各级运算符的优先级的。选项A赋值符号右侧为逗号表达式,其取 值为最后一项表达式的值;选项B隐含表示为j=j+1,这是很常用的一种赋值表达式。选项D赋 值符号右侧为逻辑表达式,其值为1或O,可以赋值给变量x。将选项C展开为i+1=i+1+1,这是 错误的。

(15)A【解析】本题很简单,不过考生要注意引用是C++的新特性。只有结构是C语言就出现的特性。

(16)C【解析】本题考查for循环条件中三个表达式的执行顺序。首先执行表达式一,然后执行表达 式二,如果表达式二为真,则循环体执行,然后执行表达式三,接着继续执行表达式二,如此循环。 考生要注意的是,本题中表达式三中包含了变量x的增量操作,因此可以由表达式二和三一起控制 循环体的执行次数。本题正确答案为C。

(17)D【解析】在数组这部分的知识里面,数组下标越界是一个比较容易忽略的问题,其下标是从O开始,至n一1为止,因此选项D是正确答案。来源:-计算机二级考试

(18)D【解析】混合表达式的值的类型是由表达式中具有最高精度的类型确定,因此可知选项B可排除。 注意b/b的结果应是l.00000,而(int)a则为5,相加的结果还是double型,故正确答案应为D。

(19)D【解析】赋值语句合法的重要标志之一就是赋值符号的左侧应该表示为一个变量,即可以在内 存中存在一块空间用于存放赋值符号右侧的值。据此.可以断定选项A和B可以排除。注意:选 项C中不是逗号表达式,要考虑优先级的问题。本题答案为D。

(20)D【解析】很明显,本题考查的是表达式的值作为结果输出。可以看出,本表达式是一个逻辑表 达式,其结果为真或假,那么输出则对应l和O,故排除选项C。本题答案为I)。

(21)D【解析】 函数声明时,可以指定其形参的默认值,不过要从右向左指定;可以省略形参名,仅以 形参类型表示;形参表之间用逗号分割。因此,本题答案为D。

(22)D【解析】本题考查指针能够进行的运算方式。指针可以加减一个整数,两个指针可以相减,表 示指针之间的元素个数。指针相加则没有意义.因此本题答案为D。

(23)C【解析】静态函数不能说明为虚函数。

(24)B【解析】this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所以对象 都共享的函数,在内存当中只存在一份,不属于某个对象所有.所以静态函数没有this指针。

(25)A【解析】本题考查表达式值的类型由参与运算的所有变量的类型中优先级最高的变量类型所 决定。不过要注意的是整型向float型转换时.将丢失小数部分·即向下取值。

(26)B【解析】本题很简单,考查COUt对象的成员函数put方法和<

(27)A【解析】 :?是C++中惟一一个三目运算符,不能被重载。

(28)B【解析】 本题考查几种变量的作用域范围及其分类。

(29)B【解析】引用是C++引入的一个新概念。表示变量或对象的别名。

(30)D【解析】类的构造函数不能指定函数类型,由系统采取默认的处理方式,不需要用户参与。

(31)C【解析】虚函数的引入是为了解决动态绑定问题.使类的实例表现出多态性,虚函数在继承后 依然保持虚函数特性,此时不需要用virtual关键词修饰。

(32)C【解析】本题考查类的构造函数的作用,构造函数一般负责完成对象建立时的初始化工作·如 资源的分配。

(33)C【解析】继承是类的一个重要特性,没有继承,面向对象方法也就不存在。正是有了继承,才呈 现出丰富多彩的类和对象。

(34)D【解析】虚函数不能定义为静态函数;虚函数的作用在于继承,表现出动态性。所以·在派生类 中定义的虚函数必须和基类中对应的虚函数具有相同的参数个数和类型。

(35)C【解析】本题考查纯虚函数的定义形式。由于纯虚函数在最后要有“=O”·故据此排除A和I)。 而B中没有出现virtual关键词.故正确答案为C。来源:-计算机二级考试

二、填空题

(1)【1】ACBEGFD【解析】 由于在前序遍历中首先访问根结点.因此,前序序列中的第一个结点为二 叉树的根结点,即D为二叉树的根结点。又由于在中序遍历中访问根结点的次序为居中,而访问左 子树上的结点为居先,访问右子树上的结点为最后,因此,在中序序列中,以根结点(D)为分界线,前 面的子序列(ABC)一定在左子树中,后面的子序列(EFG)一定在右子树中。同样的道理,对于已经 划分出的每一个子序列的所有结点中,位于前序序列最前面的一个结点为子树的根结点,而在中序 序列中位于该根结点前面的结点构成左子树上的结点子序列,位于该根结点后面的结点构成右子树 上的结点子序列。这个处理过程直到所有子序列为空为止。

11.jpg

根据上述道理,该二叉树恢复的过程如下图所示. 根据后序遍历的方法,对该二叉树后序遍历的结果为ACBEGFD。

(2)【2】类【解析】在面向对象方法中,类描述的是具有相似性质的一组对象。因此,属性与操作相似 的一组对象称为类。

(3)【3】加工【解析】 SD方法实际上是面向数据流图的,即它的工作对象实际上是在SA方法中形成 的数据流图。因此,可以由数据流图来导出结构图。另外,由数据流图导出结构图的关键是找出中 心加工,而每个加工则对应一个处理模块。

(4)【4】驱动模块【解析】在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和 承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的 结果。

(5)【5】选择【解析】在关系运算中.选择运算是在指定的关系中选取所有满足给定条件的元组.构成 一个新的关系,而这个新的关系是原关系的一个子集。

(6)【6】void【解析】void表明该函数不带返回值.如果没有void.则系统会返回一个默认类型的随机 值,这对程序可能造成不必要的问题。

(7)【7】a重定义【解析】在本题中for循环外围的大括号对没有实质含义,仅用于函数的作用域范 围。如果去掉该括号,编译错误就会发生,因为变量a出现了重定义错误。

(8)【8】Pello【解析】注意,两个字符串都没有名字,属字符串常量,在内容中是同一份内容。因此,对 strl进行重新赋值,仅仅替换了该字符数组的第一q-字符。两个指针指向同一个字符 串,因此输出为Pello。

(9)【9】return x; 【解析】本题函数声明时指定了函数的返回值为double,因此在函数体中必须存 在一个return语句。

(10)【10】base(int n){}【解析】注意.根据main函数中对类base的使用情况可知.hase类必须提供 整型单参构造函数,同时要求构造其最简单的形式,故函数体为空。

(11)【11】a=3,b=2【解析】本题考查函数间引用传递的知识点。g(a)执行之后,返回值为l,a也变 为l,这就是引用传递的特点。然后执行f(1),返回值为2,此时a=2十l,故a此时为3。由于f(b)不具有引用传递的特征,因此.执行后b=O+2,结果为2。

(12)【12】in C【解析】本题考查虚函数和多态性。原本o bj指向祖先类,随后被瞅值,指向新的子孙类,则在使用USe这个重载的虚函数时,根据当前指向可确定调用子孙的同名虚函数。

(13)【1 3】x=initx;y=initly;【解析】本题考查的是类的私有数据盘口何从接口成员函数那里数据的。 本题虽然简单,却体现了类的数据封装思想,并指明了如何完成这种封装。

(14)【14】StatiC【解析】观察一下输出中对象的构造函数和析构函数的执行次数可以看出,再次进入 时某对行没有被构造,亦即该对象在func执行后没有被销毁,再次进入时则不需要重构,可以体现 这种功能的标识符只有StatiC。

(15)【15】5,10,3【解析】本题考查全局变量,局部变量和类的数据成员之间的使用上的差别。使用 全局变量时需要用域作用符来限定该变量,否则编译器无法正确区分。来源:-计算机二级考试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值