二级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)对下列二叉树进行前序遍历的结果是
A)ZBTYCPXA
B)ATBZXCYP
C)ZBTACYXP
D)ATBZXCPj
(5)下列叙述中正确的是
A)软件就是程序清单
B)软件就是存放在计算机中的文件
c)软件应包括程序清单以及运行结果
D)软件包括程序和文档
(6)在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送
A)调用语句
B)命令
C)口令
D)消息
(7)在模块化程序设计中,按功能划分模块的原则是
A)各模块的功能尽量单一,且各模块之间的联系尽量的少
B)各模块的功能尽量单一,且各模块之间的联系尽量紧密
C)各模块应包括尽量多的功能
D)各模块应包括尽量多的输入输出操作
(8)下述关于数据库系统的叙述中正确的是
A)数据库系统减少了数据冗余
B)数据库系统避免了一切冗余
C)数据库系统中数据的一致性是指数据类型一致
D)数据库系统比文件系统能管理更多的数据
(9)在关系数据库中,用来表示实体之间联系的是
A)树结构
B)网结构
C)线性表
D)二维表
(1O)下列叙述中正确的是
A)数据库系统是一个独立的系统,不需要操作系统的支持
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库管理系统就是数据库系统
D)以上三种说法都不对
(11)设char型变量x中的值为1010011l,则表达式(2+x)^(~3)的值是
A)1010100l
B)lOlOlOOO
C)11111101
D)0101010]
(12)以下叙述中不正确的是
A)C++语言中的文本文件以ASCII码形式存储数据
B)C++语言中,对二进制文件的访问速度比文本文件快
C)C++语言中,随机读写方式不适用于文本文件
D)C++语言中,顺序读写方式不适用于二进制文件
(13)若已定义int a=256,执行语句cout<A)100
B)256
C)ffe
D)ff
(14)执行下列程序的结果是
A)9.000000
B)6.000000
C)1.000000
D)程序有错误
(15)下面程序的输出结果是
A)l
B)2
C)3
D)4
(16)有以下程序
执行后输出结果是
A)3,4,5
B)j,3,4
C)j,4,3
D)3,5,4
(17)有以下程序
执行后输出结果是
A)3,4,5
B)5,3,4
C)5,4,3
D)4,3,5
(18)与数学式子函,3X 对应的C++语言表达式是
A)3*xAn/(2*x一1)
B)3*x**n/(2*x—1)
C)3*pow(x,n)*(1/(2*x一1))
D)3*pow(n,x)/(2*x一1)
(19)若有以下程序:
执行后的输出结果是
A)8,6
B)8,3
C)6,4
D)7,4
(20)设有定义:
则以下叙述不正确的是
A)std是一个含有30个元素的对象数组
B)std数组中的每个元素都是person类的对象
C)std数组中的每个元素都有自己的私有变量hum和name
D)std数组中的每个元素都有各自的成员函数init
(21)以下叙述中不正确的是
A)一个类的所有对象都有各自的数据成员,它们共享函数成员
B)一个类中可以有多个同名的成员函数
C)一个类中可以有多个构造函数、多个析构函数
D)在一个类中可以声明另一个类的对象作为它的数据成员
(22)以下关于私有和保护成员的叙述中,不正确的是
A)私有成员不能被外界引用,保护成员可以
B)私有成员不能被派生类引用,保护成员在公有继承下可以
C)私有成员不能被派生类引用,保护成员在保护继承下可以
D)私有成员不能被派生类引用,保护成员在私有继承下可以
(23)友元函数的作用是
A)提高程序的效率
B)加强类的封装性
C)实现数据的隐蔽性
D)增加成员函数的种类
(24)使用静态数据成员的好处不包括
A)可以节省内存空间
B)是为了解决数据共享问题
C)可以直接用类名来引用
D)可以提高运算速度
(25)以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句是
A)ofstream myfile;myfile.open(”d:ofile.txt'’):
B)ofstream*myfile=new ofstream;myfile一>open(”d:ofile.txt");
C)ofstream myfile(”d:ofile.txt”);
D)ofstream*myfile=new(”d:ofile:txt");
(26)有关析构函数的说法中错误的是
A)析构函数有且只有一个
B)析构函数无任何函数类型
C)析构函数和构造函数一样可以有形参
D)析构函数的作用是在对象被撤销时做清理工作
(27)下列运算符中,不能重载的是
A)?:
B)+
C)-
D)<=
(28)已知类A中有公用数据成员B*b;其中B为类名。则下列语句错误的是
A)A():d(new B)()
B)A(const A&oo):d(new B){*d=*oo.d:}
C)~A(d){}
D)~A(){delete d;}
(29)以下有关析构函数的叙述中错误的是
A)一个类只能定义一个析构函数
B)析构函数和构造函数一样可以有形参
C)析构函数不允许有显式的返回值
D)析构函数名前必须冠有符号“~”
(30)在C+十语言程序中
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义和调用均可以嵌套
C)函数的定义和调用均不可以嵌套
D)函数的定义不可以嵌套,但函数的调用可以嵌套
(31)以下叙述中不正确的是
A)在类的定义中通常是用数据成员描述对象的属性,用成员函数描述对象的行为
B)类的一个成员只能具有一种访问控制属性
C)构造函数和析构函数是特殊的成员函数,因此不允许重载
D)通过对象只能访问类的公有成员
(32)磁盘文件操作中,打开磁盘文件的访问方式中以追加方式打开文件的
A)in
B)out
C)app
D)ate
(33)假定AB为一个类,则执行AB x;语句时将自动调用该类的
A)有参构造函数
B)无参构造函数
C)拷贝构造函数
D)赋值重载函数
(34)通常初始化拷贝构造函数的参数是
A)某个对象名
B)某个对象的成员名
C)某个对象的引用名
D)某个对象的指针名
(35)实现运行时的多态性用
A)重载函数
B)构造函数
C)析构函数
D)虚函数
二、填空题(每空2分,共30分)
请将每空的正确答案写在答题卡【l】~【15】序号的横线上,答在试卷上不得分。
(1)在深度为4的满二叉树中,叶子结点的个数为 【1】 。
(2)在一个容量为25的循环队列中,若头指针front=9指针rea=16,则该循环队列中共有 【2】个元素。
(3)在面向对象方法中,允许作用于某个对象上的操作称为【3】 。
(4)软件生命周期包括八个阶段。为使各时期的任务更明又可以分为以下三个时期:软件定义期,软件开发期,软件维护期。编码和测试属于【4】 期。
(5)在数据库系统中,数据具有独立性。由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。这种独立性称为【5】。
(6)在任何类中都有三种访问权限的数据成员,这三种权限是public、private和【6】 。
(7)下列程序的输出结果是 【7】
(8)如下程序编译时发生错误,错误的原因是show函数实现语句错误,则正确的语句应
该为 【8】 。
(9)下列程序的运行结果是【9】
(11)下面程序编译时发现ma[3]一9错误,其原因是 【1l】 。
(12)下列程序的执行结果是【12】
(13)下列程序中需要清理动态分配的的数组,划线处应有的语句【13】是 。
(14)下列程序完成从文件读取文件显示的同时写入第二个文件,则在程序中划线部分应
该出现的语句是【14】。
(15)下列程序的输出结果是【15】
标准预测试卷三参考答案与解析
一、选择题
(1)C【解析】算法的时间复杂度是用算法程序执行过程中所需要的基本运算次数来衡量的。
(2)D【解析】对分查找只能适用于顺序存储的有序线性表。
(3)C【解析】栈是按“先进后出”原则组织数据的结构;队列是按“先进先出”原则组织数据的结构;而 有序表与---X树均不是。因此,本题的正确答案为C。
(4)B【解析】按照二叉树前序遍历的方法:在访问根结点、遍历左子树与遍历右子树这三者中,首先 访问根结点,然后遍历左子树,最后遍历右子树;并且.在遍历左、右子树时,仍然先访问根结点。然后 遍历左子树,最后遍历右子树。对本题中的二叉树进行前序遍历的结果应是ATBZXCYP。
(5)D【解析】 软件应包括程序和文档。
(6)D【解析】在面向对象方法中,一个对象请求另一对象为其服务是通过发送消息来实现的。
(7)A【解析】在模块化程序设计中.按功能划分模块的原则是:要求各模块的功能尽量单一,且各模 块之间的联系尽量的少。
(8)A【解析】数据库系统只是减少了数据冗余,但避免一切冗余;数据库系统中数据的一致性并不 是指数据类型一致,而是指采用了统一的数据结构方式;数据库系统与文件系统比较,数据库系统解 决了数据共享问题。
(9)D【解析】在关系数据库中.用来表示实体之间联系的是二维表。
(10)B【解析】数据库管理最本质的特点是实现数据的共享。为了实现数据的共享,保证数据的独立 性、完整性和安全性,需要有一组软件来管理数据库中的数据,处理用户对数据库的访问,这组软件 就是数据库管理系统(DBMS)。数据库管理系统与计算机系统内的其他软件一样,也在操作系统 ((OS)的支持下工作·它与操作系统的关系极为密切。操作系统、数据库管理系统与应用程序在一 定的硬件支持下就构成了数据库系统。
(11)D【解析】本题考查二进制操作的几种形式,需要考生熟练掌握整数向二进制的转换和求反、异 或等操作。
(12)C【解析】本题考查C++语言中文件的概念,包括二进制文件和文本文件.对不同的文件类型 采用不同的读写方式。
(13)A【解析】 本题考查流操作中格式的控制,hex的作用是将随后的输出数按照十六进制形式 输出。
(14)A【解析】本题比较简单,考查自增运算符的运算规则以及运算符优先级的知识点。自增运算 符的优先级高于乘法运算符的优先级。
(15)A【解析】本题考查switch语句的嵌套。实际上.只要考生按照顺序进行分析可以发现里层嵌 套的switch语句根本不用分析,因为执行流程根本不能到达那里。
(16)C【解析】本题只需要考生按照执行顺序分析即可得出正确答案为C。
(17)D【解析】考生根据分析可以得知f函数的功能是交换两个变量的值。表明看起来,在main函 数中,使用三次f函数完成三个变量的交换。真的如此么?只要考生注意到f函数采用值传递,而 值传递的缺点就是不会改变形参的值,因此,上述操作根本无法改变原来三个变量的值!故三个变 量的值依然保持不变。
(18)C【解析】本题考查考生将数学表达式翻译成C++语句的能力。
(19)C【解析】首先进行括号内的运算,注意赋值表达式是从右向左进行的。因此,只要考生细心运 算就可以得到正确答案为C。
(20)D【解析】首先,std是对象数组,里面有30个对象,每个对象都有自己的私有数据成员·由于成 员函数是公有的,在内存中存在一份即可,各个对象都可以使用。
(21)C【解析】本题考查类的基本概念。构造函数和析构函数比较特殊,析构函数只有一个。
(22)A【解析】私有成员和保护成员都不能被外界引用,这与继承方式无关。
(23)A【解析】友元函数的引入是为了提高程序的效率,减少通过接口访问的限制,但却破坏了类的 封装性。
(24)D【解析】静态成员在一个类中只保存一份,供类的不同对象共享,因此它可以节省内存空间。 由于静态成员不属于某个对象.因此引用时必须用类名来标识。
(25)D【解析】本题考查文件对象的创建方法。可以直接定义文件对象,也可以用new来动态生成。 很明显,选项D中使用new的方式是错误的。
(26)C 【解析】本题考查析构函数的有关特性。考生不仅要熟记析构函数和构造函数的特点,还要深刻理解它们的内涵,只有这样才可以灵活运用。
(27)A【解析】在C++中,?:是唯一一个三目运算符,不能被重载。
(28)c【解析】首先考生要能判断出四个选项是构造函数和析构函数,其中d是类A的一个需要初 始化的数据成员,且是一个指针。在初始化时.必须指明类B的某对象的地址,所以,new B可以完 成这个功能。而析构函数不能带参数,这是常识性的知识,因此正确答案为c。
(29)B【解析】析构函数不能有形参。
(30)D【解析】本题考查函数的定义、调用及其嵌套之间的关系。
(31)C【解析】构造函数是可以重载的.从而保证了类的多态性。
(32)C【解析】根据选项的含义,可知app表示追加的含义,可以选定正确答案为C。
(33)B【解析】当没有显式调用指定形式的构造函数.则系统自动调用无参构造函数,如果没有为类 指定此构造函数,则系统自动为其生成一个最简单的无参构造函数。
(34)c【解析】拷贝构造函数顾名思义,就是对两个对象进行拷贝生成。因此,其参数是指向某个对 象的指针。
(35)D【解析】多态性是通过虚函数来完成的,不同类层次上的类通过虚函数,可以做到运行时根据 指针的指向确定调用哪个对象的成员函数。
二、填空题
(1)【1】8【解析】二叉树有一个性质,即在二叉树的第k层上,最多有2(k≥1)个结点。而对于满 二又树来说,每一层上的结点数都达到最大值.即在满二叉树的第k层上有2个结点。因此,在深 度为4的满二叉树中,所有叶子结点在第4层上。 即其结点数为:2k-1=24-1=8
(2)【2】7【解析】设循环队列的容量为m。 如果rear>front.则循环队列中的元素个数为rear—front; 如果rear>front,则循环队列中的元素个数为m十(Fear—front)。 在本题中,front=9,rear=16,即rear>front,因此.循环队列中的元素个数为 rear-front=16-9=7。
(3)【3】方法【解析】在面向对象方法中.所谓方法是指允许作用于某个对象上的各种操作。因此·允 许作用于某个对象上的操作称为方法。
(4)【4】软件开发【解析】通常,软件生命周期包括八个阶段:问题定义、可行性研究、需求分析、系统 设计、详细设计、编码、测试、运行维护。为使各时期的任务更明确,又可以分为以下三个时期: 软件定义期:包括问题定义、可行性研究和需求分析三个阶段; 软件开发期:包括系统设计、详细设计、编码和测试四个阶段; 软件维护期:即运行维护阶段。
(5)【5】物理独立性【解析】通过系统提供的映象功能,在数据库系统中,使数据具有两方面的独立 性:一是物理独立性,二是逻辑独立性。其中,物理独立性是指:由于数据的存储结构与逻辑结构之 间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应 用程序不必修改。
(6)【6】protected【解析】本题考察类的访问权限,属于基本知识,考生应熟练掌握。
(7)【7】43【解析】分析while循环体可以判断出:i1用于统计字符串中字符a的数量,i2用于统计字 符b的数量。因此,考察数组a的内容可得其数量分别为4和3。
(8)【8】void test::show(){cout<
(9)【9】b=762【解析】考生要注意*和++运算的优先级问题.此外要注意的是a作为整个数组的 首地址传递给rune函数。
(10)【10】m=13,n=3【解析】本题考察引用作为形参进行参数传递的知识。max函数的功能是返 回较大的那个数,而max(m,n)++的作用是将较大值再进行增一运算。
(11)【ll】没有重载[]运算符【解析】ma不是一般的数组,而是一个新定义的类,尽管该类封装了一 个数组,但新类并没有提供[]操作符的具体实现,因此是错误的。
(12)【12】400 60【解析】本题考察继承和虚函数的使用。
(13)【13】delete[]ptr;【解析】本题考察对象数组的销毁方法.注意删除对象数组时,[]内不要指定 大小。
(14)【14】file2.open(fn2,ios::out); 【解析】本题考察文件流进行操作时的使用方式,需要指定打开 方式。如果考生具有C语言的文件使用知识的话。应该可以很容易的理解其操作方式。
(15)【15】60【解析】本题考察继承中子类对父类的继承方式,注意子类的add成员函数,它直接使用 了父类的成员函数进行运算。