(7)十进制28和3.26的类型分别是【7】。
(8)假定一个二维数组的定义为”inta[3][5];”,则该数组所含元素的个数为15,所占的
字储空间的字节数为【8】。
(9)假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数
组,则使用的语句是【9】。
(1O)将关键字const写在函数头之后,函数体之前,说明该函数是一个const成员函数。
比时const不是指定函数的返回值,而是修饰【10】指针。
(11)若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用
头文件【11】。
(12)下列程序的输出结果为【12】。
(13)根据注释内容在空白处填写适当内容。
(14)下列程序的执行结果是【14】。
(15)下列类的构造函数不能通过编译,正确的构造函数应该是【15】。
二级C++语言程序设计参考答案及解析标准预测试卷一
一、选择题
(1)D【解析】栈是特殊的线性表,在栈顶可以插入元素,称为人栈,也可以删除元素,称为退栈。
因此,栈是一种先进后出的线性表。
(2)D【解析】在线性链表中插入或删除元素都不需要移动其他元素,只需改变指针即可;栈只能在一端插入或删除元素,也不需要移动其他元素;队列只能在一端插人元素.在另一端删除元素,也不需要移动其他元素。
(3)B【解析】同一个数据结构可以有多种存储结构,其所占的存储容量一般是不同的。
而对分查找法只适用于顺序存储的有序表。
(4)C【解析】线性链表是线性表的链式存储结构;二叉链表是二叉树的链式存储结构;栈与队列都是特殊的线性表,属于逻辑结构;循环队列是队列的一种存储结构。
(5)A【解析】堆可以用完全二叉树表示,因此,完全二叉树能直接使用堆排序法进行排序。
(6)B【解析】队列是一种特殊的线性表,只能在一端插入元素,在另一端删除元素,并且在插入与删除操作时都不需要移动其他元素。
(7)C【解析】在模块化设计中,要求将一个大程序按人们能理解的大小规模进行分解,使每个模块都能易于理解,各模块的功能尽量单一,各模块之间的联系尽量的少。
因此,选项A中的说法是错误的。
自顶向下、逐步细化的设计过程,主要包括两个方面:
一是将一个复杂问题的解法分解和细化成由若干模块组成的层次结构;二是将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句或某种机器指令。
即在自顶向下、逐步细化的设计过程中。
是按照先全局后局部、先整体后细节、先抽象后具体的方法设计程序。
因此.选项B中的说法也是错误的。
在模块化程序设计中,每一个模块完成一个功能,相对独立,要求一个模块内部的控制结构也要符合结构化原则。
因此,选项C中的说法是正确的。
由于在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则,因此,在程序设计过程中,结构化程序设计方法与模块化程序设计方法是要同时采用的。
因此,选项D中的说法是错误的。
(8)D【解析】在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:
一是物理独立性。
即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。
二是逻辑独立性。
即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。
由此可知,选项A、B与C中的说法都是错误的。
(9)B【解析】用树形结构来表示实体之间联系的模型称为层次模型。
(10)A【解析】用E-R图可以简单明了地描述实体及其相互之间的联系,用E-R图还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系。
因此,选项A中的说法是正确的,而选项B与C中的说法都是错误的。
为了建立用户所要求的数据库.必须把概念结构(用E-R图表示的概念数据模型)转换为某个具体的数据库管理系统所支持的数据模型.这就是逻辑结构设计所要完成的任务。
在已给定数据库管理系统的情况下,数据库的逻辑设计可以分两步来进行:
①将概念模型转换成一般的数据模型;②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。
由此可知,用E-R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。
因此,选项D中的说法也是错误的。
(11)A【解析】C语言的基本单位是函数,本题考察的就是函数的基本涵义及其使用。
(12)C【解析】本题中,A和B的描述是一样的,故可以排除。
在C++中,建议用inline函数取代C语言中的宏定义功能。
(13)B【解析】本题考察的是变量的作用域及其生存期,需要掌握变量类别及其特点。
(14)B【解析】注意A选项用了c++的保留字long,选项c使用了数字开头.选项D中存在空格,这些均是错误的标识。
正确答案应为B。
(15)A【解析】首先将八进制数转换成十进制数,则发现是65,故答案为A。
(16)C【解析】本题考察对宏的理解。
宏其实就是替换.这种替换不是在运行时进行,而是自编译时就完成的。
替换时仅仅将表达式展开,不进行运算求值。
(17)D【解析】本题很简单,选项D是条件语句,不是循环语句。
(18)A【解析】本题考察问号表达式的嵌套.只要掌握了问号表达式的求解顺序,是可以轻松求解本题的。
a
(19)D【解析】本题考察构造函数的定义和使用。
构造函数可以重载,故不可能只有一个。
(20)B【解析】本题考察析构函数的定义和使用,析构函数不能有形参.也没有返回值,故正确答案应为B。
(21)D【解析】静态成员变量的引入是为了解决同一类的不同对象间数据共享的需要。
因此,类的静态数据成员在定义时不能赋初值,只能在类外赋初值.此外要注意赋值时要用类名进行限制。
(22)B【解析】按照程序的执行顺序,考生可以很快得出正确答案为B。
(23)B【解析】本题思路巧妙.分析时可以发现b=(a+b)一b,则此时b中放的是a,完成交换工作的一半。
然后要将b放到a中,将表达式展开,则为a=(a十b)一a.此时正好把b放到a中。
此时完成全部的交换。
(24)C【解析】本题主要考察条件语句的运行规则.考生按照逻辑顺序分析可知正确答案为C。
(25)c【解析】本题考察的是if...clse语句中的配对原则:
与最近的配对.故当a<输出语句,即c的值是2,正确答案为c。
>
(26)A【解析】注意本题有个陷阱,马虎的考生将纷纷落马。
本来while中的表达式应为k=-1,而本题却为k=1,是赋值表达式而不是逻辑表达式。
因此,编译器将其值一直认为是l,因此表达式一直为真,陷人无限次的循环。
(27)B【解析】本题考察的是循环次数的判定。
有while后的逻辑表达式可知,整个循环体需要执行3次,故可直接选定正确答案为B。
(28)C【解析】本题考察在C++语言中,字符串的存放规则。
即字符串存放在字符数组中,而且在字符的后面自动插入标识字符串结束的标识符’\O’.因此,共6个字符,每个字符占用一个字节,故正确答案为C。
(29)D【解析】本题考察的是同名局部变量和全局变量的作用域之间的关系。
同时考察了静态变量的特点:
退出函数和进入函数并不影响静态变量的值。
因此.循环多次.实际上完成静态变量的累加。
即1+2+3+4+5.其值为15,故答案为D。
(30)A【解析】本题考察对二维数组的使用。
只要按照要求细心分析各个数组元素的位置,即可以正确的得到答案为A。
(31)A【解析】本题采用递归函数的方式将数组中的元素进行倒置,只要能够看出函数fun的功能,即可以得出正确答案为A。
(32)D【解析】分析可知本题中while循环体的功能是将数组中元素值为奇数的项目累加,在遇到第一个元素值为偶数时停止累加。
因此,观察数组中各元素值可知14之前的奇数相加是11+13,故答案为D。
(33)A【解析】本题考察continue语句在while循环中的使用:
直接跳转到条件判断表达式位置.不再执行continue后面的语句。
另外.根据分析可知,本题循环体的功能是将O,2,4,6位元素加一后累加,故结果应是1+3+5+7,因此正确答案为A。
(34)A【解析】本题主要考察setfill的用法。
只用在设置了宽度的情况下,字符填充操作setfill才有意义。
另外要注意的是设置宽度setw是所有格式中惟一一个一次有效的设置。
(35)C【解析】本题看似复杂。
其实掌握技巧的话可以很容易的得出正确答案为C。
按照常识,一个文件关闭后,应该可以再打开另外一个文件。
二、填空题
(1)【l】n【解析】对具有n个结点的线性表进行顺序查找,最坏情况下需要比较n次。
(2)【2】TZBACYXP【解析】按照二叉树中序遍历的方法:
在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树.然后访问根结点,最后遍历右子树;并且。
在遍历左、右子树时。
仍然先遍历左子树,然后访问根结点,最后遍历右子树。
对本题中的二叉树进行中序遍历的结果应是TZBA—CYXP。
(3)【3】消息【解析】在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为消息。
(4)【4】动态分析【解析】程序的测试方法分为静态分析和动态分析。
使用测试用例在计算机上运行程序,使程序在运行过程中暴露错误,这种方法称为动态分析。
(5)【5】关系模式【解析】在关系模型中.一个关系的属性名表称为关系模式。
(6)【6】D【解析】char()在这里作为强制类型转换函数使用,将F前相隔两个的字符显示出来.故应为字符I)。
(7)【7】int和double【解析】整型和双精度型。
注意除非定义了float变量.实型常量隐含为double型。
(8)【8】60【解析】二维数组总个数为维数之积.占用的存储空间的字节数与类型有关,本题为int,则在TC环境下被分配2字节,而在VC环境下被分配4字节。
(9)【9】Worker*r=newWorker[n]【解析】在C++中动态分配栈上内存的命令是new,释放命令是delete,注意和C语言中的mallc和free向对应。
(10)【lO】this【解析】const在修饰指针的时候考生容易混淆。
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
而用const声明了返回值后,const按照”修饰原则”进行修饰,起到相应的保护作用,即保护this指针不被修改。
(11)【1l】iostream.h【解析】本头文件和重要.包含了基本输入输出所需要的库函数。
(12)【12】良好优秀良好【解析】本题主要考察switch语句中break语句的使用。
由于caseA和caseB之间没有break语句,导致在输出“优秀”之后顺序执行并输出了“良好”,这与原来的设计思路是不符的。
(13)【13】Location&rAl=A1:
【解析】本题主要考察引用的定义。
根据上下文以及注释可以获取所需要的类型及名称信息。
(14)【14】20【解析】本题考察全局变量和引用的综合使用。
在主函数中.b实际上是temp的一个引用。
因此在给b赋值20的时候,输出的temp就是20。
(15)【15】Sample(imm):
con(m+1){n=m;}【解析】本题考察常数据成员的初始化方法。
常数据成员的定义必须出现在类体中.而且初始化只能通过构造函数的成员初始化列表进行,而且不能被更新。