全国计算机等级考试二级C++部分试题涉及了计算机科学的基础概念和技术,主要涵盖数据结构、算法、软件工程、数据库管理、面向对象编程等多个方面。以下是对这些试题知识点的详细解释:
1. **栈与队列**:栈是后进先出(LIFO)的数据结构,而队列是先进先出(FIFO)的数据结构。选项A描述正确,B描述错误。循环队列是线性结构的一种特殊情况,因此C选项错误。有序线性表可以使用顺序存储(数组)或链式存储(链表)实现,D选项正确。
2. **子程序调用**:支持子程序调用的数据结构是栈,因为函数调用时需要保存现场信息,栈能很好地完成这一任务。A选项正确。
3. **二叉树的性质**:在二叉树中,叶子节点数等于度为2的节点数+1,所以如果度为z的节点有5个,那么叶子节点数至少为6,C选项正确。
4. **排序算法**:在最坏情况下,比较次数最少的排序算法是堆排序,其时间复杂度为O(n log n),而冒泡排序、简单选择排序和直接插入排序的时间复杂度均为O(n^2)。D选项正确。
5. **软件分类**:应用软件是用户直接使用的软件,如教务管理系统。C选项正确。编译程序和汇编程序属于系统软件,操作系统也是系统软件。
6. **软件测试**:软件测试的目的是发现错误,但改正错误是程序员的工作。A选项错误,其他选项正确。
7. **模块独立性**:耦合性是指模块之间的相互依赖程度,应尽可能低;内聚性是指模块内部元素的关联程度,应尽可能高。B选项正确。
8. **数据库应用系统**:数据库设计是数据库应用系统的核心问题,它包括概念设计、逻辑设计和物理设计。A选项正确。
9. **关系运算**:由关系R通过运算得到关系S,所使用的运算最可能是选择,因为它只选取满足特定条件的行。A选项正确。
10. **E-R图转换**:实体和联系在转换为关系模式时,都可表示为关系。C选项正确。
11. **C++重载函数**:在C++中,重载函数的识别基于参数类型、参数数量和参数顺序,不基于返回值类型。C选项正确。
12. **C++类对象调用**:类A的构造函数和析构函数默认是自动调用的,因此变量a和b都是有效的。但是,由于a是const对象,它的成员函数SetData()不能被调用,因为这会改变对象状态。因此,错误的调用是B选项。
13. **继承访问权限**:ChildA是Parents的公有派生类,可以访问PublicData,但不能访问privateData。ChildB是私有派生类,不能直接访问Parents的私有成员。因此,正确选项是A。
14. **运算符重载**:重载运算符时,操作数个数、类型和结合性都需要保持,但返回类型不是强制性的。D选项正确。
15. **函数模板**:错误描述是B选项,对于常规参数的模板实参,在某些情况下可以省略,比如模板函数的参数类型可以从上下文中推断出来。
16. **文件流操作**:创建并打开文件流的正确方式是使用ifstream的构造函数或者open()方法。A选项错误,因为它是两次使用了ifstream,且尝试直接赋值给ifstream对象,而不是使用赋值运算符。
以上是对试题中涉及的计算机科学知识的详细解析,涵盖了数据结构、算法、面向对象编程、数据库管理、软件工程等多个领域,每个知识点都是计算机科学基础知识的重要组成部分。