在2009年3月的计算机等级考试二级C++真题中,涉及了多个计算机科学的基础知识点。以下是对这些题目所涵盖知识的详细解析:
1. **栈与队列**:栈是“后进先出”(LIFO)的数据结构,而队列是“先进先出”(FIFO)的数据结构。选项A错误,B正确。循环队列是线性结构的一种扩展,选项C错误。有序线性表可以采用顺序存储或链式存储,选项D正确。
2. **子程序调用**:支持子程序调用的数据结构是栈,因为函数调用时需要保存现场信息,便于返回,选项A正确。
3. **二叉树性质**:对于任何非空二叉树,如果度为2的节点数为n2,度为1的节点数为n1,度为0的节点数(叶子节点)为n0,则n0 = n2 + 1。若某二叉树有5个度为2的节点,叶子节点数至少为6,选项C正确。
4. **排序算法**:最坏情况下比较次数最少的是堆排序,选项D正确。冒泡排序、简单选择排序和直接插入排序在最坏情况下比较次数都比堆排序多。
5. **软件分类**:应用软件是用户直接使用的软件,如教务管理系统,选项C正确。编译程序、操作系统和汇编程序属于系统软件或支撑软件。
6. **软件测试与调试**:软件测试的目的是发现错误,但改正错误是程序员的工作,选项A错误。其他选项正确。
7. **模块独立性**:提高内聚性降低耦合性有利于提高模块的独立性,选项B正确。耦合性是指模块间的相互连接紧密程度,内聚性是指一个模块内部各元素间彼此结合的紧密程度,选项C和D错误。
8. **数据库应用系统**:数据库设计是数据库应用系统的核心问题,选项A正确。
9. **关系运算**:从关系R得到关系S,使用的是连接运算,选项D正确。选择运算是从关系中选取满足条件的元组,投影是从关系中选取指定属性,插入是向关系中添加新的元组。
10. **E-R图转换**:实体和联系在关系模型中都表示为关系,选项C正确。
11. **C++重载函数**:C++编译器区分重载函数主要依据参数类型和参数个数,返回值类型不作为区分依据,选项C正确。
12. **C++类与对象**:变量`a`是常对象,不能调用非const成员函数,因此`a.SetData(10)`是错误的,选项B错误。
13. **继承与访问控制**:`ChildA`继承自`Parents`,所以`ChildA`的对象可以访问`Parents`的公有成员,选项A正确。而`ChildB`私有继承`Parents`,不能直接访问`Parents`的成员,选项C和D错误。
14. **类的访问控制**:在类`ChildB`中,`privateData`是私有的,不能被类外访问,因此`cout<<b.privateData <<endl ;`是错误的,选项D错误。
这些题目涵盖了数据结构(栈、队列、二叉树)、算法(排序)、软件工程(测试、调试、模块独立性)、数据库(设计、操作)、面向对象编程(C++的类、对象、继承、访问控制)等多个方面的内容,是计算机科学基础的重要组成部分。掌握这些知识对于理解和解决问题至关重要。