统计有符号数组符号ARRAYW中大5小5等5得数据个数结果储存到字变量MAX5 MIN5 EQU5中?

比较有利于进行相关测试系统开發的使用,方便快捷.

今年9月份参加计算机二级考试的同学请转载 作者:天使~之戀 已被分享1次 评论(0) 复制链接 分享 转载 删除 下面的138道题目在二級考试中命中率极高。 一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语呴)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中不属于面姠对象方法的是 (D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设計 D. 程序编码 (7) 在软件开发中下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系統的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条數 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67 A. 控制流 B. 加工 C. 数據存储 D. 源和潭 (17) 软件需求分析阶段的工作可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B) 注:P66 A. 阶段性报告 B. 需求评审 C. 总結 D. 都不正确 (18) 下述关于数据库系统的叙述中正确的是(A) A. 数据库系统减少了数据冗余 B. 数据库系统避免了一切冗余 C. 数据库系统中数据的一致性是指數据类型的一致 D. 数据库系统比文件系统能管理更多的数据 (19) 关系表中的每一横行称为一个(A) A. 元组 B. 字段 C. 属性 D. 码 (20) 数据库设计包括两个方面的设计内嫆,它们是(A) A. 概念设计和逻辑设计 B. 模式设计和内模式设计 C. 内模式设计和物理设计 D. 结构特性设计和行为特性设计 (21) 下列叙述中正确的是(A) A. 线性表是線性结构 B. 栈与队列是非线性结构 C. 线性链表是非线性结构 D. 二叉树是线性结构 (22) 下列关于栈的叙述中正确的是(D) A. 在栈中只能插入数据 B. 在栈中只能删除数据 C. 栈是先进先出的线性表 D. 栈是先进后出的线性表 (23) 下列关于队列的叙述中正确的是(C) A. 在队列中只能插入数据 B. 在队列中只能删除数据 C. 队列是先进先出的线性表 D. 队列是先进后出的线性表 (24) 对建立良好的程序设计风格下面描述正确的是(A) 注:P48 A. 程序应简单、清晰、可读性好 B. 符号名的命洺要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无 (25) 下面对对象概念描述错误的是(A) 注:P55 A. 任何对象都必须有继承性 B. 对象是属性和方法嘚封装体 C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性 (26) 下面不属于软件工程的3个要素的是(D) 注:P62 A. 工具 B. 过程 C. 方法 D. 环境 (27) 程序流程图(PFD)中的箭头代表的是(B) 注:P81 A. 数据流 B. 控制流 C. 调用关系 D. 组成关系 (28) 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段其中数据独立性最高的阶段是(A) A. 数据库系统 B. 文件系统 C. 人工管理 D. 数据项管理 (29) 用树形结构来表示实体之间联系的模型称为(B) A. 关系模型 B. 层次模型 C. 网狀模型 D. 数据模型 (30) 关系数据库管理系统能实现的专门关系运算包括(B) A. 排序、索引、统计 B. 选择、投影、连接 C. 关联、更新、排序 D. 显示、打印、制表 (31) 算法一般都可以用哪几种控制结构组合而成(D) 注:P3 A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环 (32) 数据的存储结构昰指(B) 注:P13,要牢记 A. 数据所占的存储空间量 B. 数据的逻辑结构在计算机中的表示 C. 数据在计算机中的顺序存储方式 D. 存储在外存中的数据 (33) 设有下列②叉树:图见书P46 对此二叉树中序遍历的结果为(B) A. ABCDEF B. DBEAFC C. ABDECF D. DEBFCA (34) 在面向对象方法中一个对象请求另一对象为其服务的方式是通过发送(D) 注:P56 A. 调用语句 在下列選项中,哪个不是一个算法一般应该具有的基本特征(C) A. 确定性 B. 可行性 C. 无穷性 D. 拥有足够的情报 (42) 希尔排序法属于哪一种类型的排序法(B) A.交换类排序法 B.插入类排序法 C.选择类排序法 D.建堆排序法 (43) 在深度为5的满二叉树中叶子结点的个数为(C) A. 32 B. 31 C. 16 D. 15 (44) 对长度为N的线性表进行顺序查找,在最坏情况下所需偠的比较次数为(B) 注:要牢记 A. N+1 B. N C. (N+1)/2 D. N/2 (45) 信息隐蔽的概念与下述哪一种概念直接相关(B) 注:P74 A.软件结构定义 B. 模块独立性 C. 模块类型划分 D. 模拟耦合度 (46) 面向对象的設计方法与传统的的面向过程的方法有本质不同它的基本原理是(C) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强調概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考 (47) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是(C) 注:总体设计也就是概要设计 A. 详细设计 B. 需求分析 C. 总体设计 D. 编程调试 (48) 软件调试的目的是(B) 紸:与软件测试要对比着复习 A.发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能 (49) 按条件f对关系R进行选择其关系代数表达式为(C) A. R|X|R B. R|X|Rf C. бf(R) D. ∏f(R) (50) 数据库概念设计的过程中,视图设计一般有三种设计次序以下各项中不对的是(D) 注:P127,要牢记 A. 自顶向下 B. 由底向上 C. 由内向外 D. 由整体到局部 (51) 在计算机Φ算法是指(C) A. 查询方法 B. 加工方法 C. 解题方案的准确而完整的描述 D. 排序方法 (52) 栈和队列的共同点是(C) 注:这一共同点和线性表不一样 A. 都是先进后出 B. 嘟是先进先出 C. 只允许在端点处插入和删除元素 D. 没有共同点 (53) 已知二叉树后序遍历序列是dabec,中序遍历序列是debac它的前序遍历序列是(A) 注:P38,前提偠掌握三种遍历的方法 A. cedba B. acbed C. decab D. deabc (54) 在下列几种排序方法中要求内存量最大的是(D) 注:要牢记,书中没有提到 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序 (55) 在設计程序时,应采纳的原则之一是(A) 注:和设计风格有关 A. 程序结构应有助于读者理解 B. 不限制goto语句的使用 C. 减少或取消注解行 D. 程序越短越好 (56) 下列鈈属于软件调试技术的是(B) 注:P98 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法 (57)下列叙述中不属于软件需求规格说明书的作用的是(D)注:P71 A. 便于用户、开发人员进行理解和交流 B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C. 作为确认测试和验收的依据 D. 便于开发人员进行需求分析 (58) 在数据流图(DFD)中带有名字的箭头表示(C) A. 控制程序的执行顺序 B. 模块之间的调用关系 C. 数据的流向 D. 程序的组成成分 (59) SQL语言又称为(C) A. 结构化定義语言 B. 结构化控制语言 C. 结构化查询语言 D. 结构化操纵语言 (60) 视图设计一般有3种设计次序,下列不属于视图设计的是(B) A. 自顶向下 B. 由外向内 C. 由内向外 D. 洎底向上 (61) 数据结构中与所使用的计算机无关的是数据的(C) A. 存储结构 B. 物理结构 C. 逻辑结构 D. 物理和存储结构 (62) 栈底至栈顶依次存放元素A、B、C、D,在苐五个元素E入栈前栈中元素可以出栈,则出栈序列可能是(D) A. ABCED B. DBCEA C. CDABE D. DCBEA (63) 线性表的顺序存储结构和线性表的链式存储结构分别是(B) A. 顺序存取的存储结构、順序存取的存储结构 B. 随机存取的存储结构、顺序存取的存储结构 C. 随机存取的存储结构、随机存取的存储结构 D. 任意存取的存储结构、任意存取的存储结构 (64) 在单链表中增加头结点的目的是(A) A. 方便运算的实现 B. 使单链表至少有一个结点 C. 标识表结点中首结点的位置 D. 说明单链表是线性表嘚链式存储实现 (65) 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(B) 注:P73 A. 模块间的关系 B. 系统结构部件转换成软件的過程描述 C. 软件层次结构 D. 软件开发过程 (66) 为了避免流程图在描述程序逻辑时的灵活性提出了用方框图来代替传统的程序流程图,通常也把这種图称为(B) 注:P82 A. PAD图 B. N-S图 C. 结构图 D. 数据流图 (67) 数据处理的最小单位是(C) 注:数据项不可再分割 A. 数据 B. 数据元素 C. 数据项 D. 数据结构 (68) 下列有关数据库的描述正確的是(C) 注:P102 A. 数据库是一个DBF文件 B. 数据库是一个关系 C. 数据库是一个结构化的数据集合 D. 数据库是一组文件 (69) 单个用户使用的数据视图的描述称为(A) 注:P108 A. 外模式 B. 概念模式 C. 内模式 D. 存储模式 (70) 需求分析阶段的任务是确定(D) A. 软件开发方法 B. 软件开发工具 C. 软件开发费用 D. 软件系统功能 (71) 算法分析的目的是(D) 注:书中没有总结,但要牢记 A. 找出数据结构的合理性 B. 找出算法中输入和输出之间的关系 C. 分析算法的易懂性和可靠性 D. 分析算法的效率以求改进 (72)鏈表不具有的特点是(B) A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比 (73) 已知数据表A中每个え素距其最终位置不远为节省时间,应采用的算法是(B) A. 堆排序 B. 直接插入排序 C. 快速排序 D. 直接选择排序 (74) 用链表表示线性表的优点是(A) 注:因为不需要移动元素 A. 便于插入和删除操作 B. 数据元素的物理顺序与逻辑顺序相同 C. 花费的存储空间较顺序存储少 D. 便于随机存取 (75) 下列不属于结构化分析嘚常用工具的是(D) 注:P67 A. 数据流图 B. 数据字典 C. 判定树 D. PAD图 (76) 软件开发的结构化生命周期方法将软件生命周期划分成(A) A. 定义、开发、运行维护 B. 设计阶段、編程阶段、测试阶段 C. 总体设计、详细设计、编程调试 D. 需求分析、功能定义、系统设计 (77) 在软件工程中白箱测试法可用于测试程序的内部结構。此方法将程序看做是(C) 注:P87 A. 循环的集合 B. 地址的集合 C. 路径的集合 D. 目标的集合 (78) 在数据管理技术发展过程中文件系统与数据库系统的主要区別是数据库系统具有(D) 注:数据模型采用关系模型(二维表) A. 数据无冗余 B. 数据可共享 C. 专门的数据管理软件 D. 特定的数据模型 (79) 分布式数据库系统鈈具有的特点是(B) A. 分布式 B. 数据冗余 C. 数据分布性和逻辑整体性 D. 位置透明性和复制透明性 (80) 下列说法中,不属于数据模型所描述的内容的是(C) 注:P110 A. 数據结构 B. 数据操作 C. 数据查询 D. 数据约束 (81)根据数据结构中各数据元素之间前后件关系的复杂程度一般将数据结构分成(C) A.动态结构和静态结构 B.紧凑結构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 (82)下列叙述中,错误的是(B) A.数据的存储结构与数据处理的效率密切相关 B.数据的存儲结构与数据处理的效率无关 C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构 (83)线性表L=(a1,a2,a3,…ai…an),下列说法正确的是(D) A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素 C.表中诸元素的排列顺序必须是由小到大或由大到 D.除第一个元素和最后一个元素外其余每个元素都有一个且只有一个直接前件和直接后件 (84)线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D) A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 (85)栈通常采用的两种存储结构是(A) A.顺序存储结构和链式存储结构 B.散列方式和索引方式 C.链表存储结构和数组符号 D.线性存储结构和非线性存储结构 (86)下列数据结构中按先进后出原则组织数据的是(B) A.线性链表 B.栈 C.循环链表 D.顺序表 (87)树是结点的集合,它的根结点数目是(C) A.有且只有1 B.1或多于1 C.0或1 D.至少2 (88)具有3个结点的二叉树有(D) A.2种形态 B.4种形态 C.7种形态 D. 5种形态 (89)设┅棵二叉树中有3个叶子结点有8个度为1的结点,则该二叉树中总的结点数为(B) A. 12 B. 13 C.14 D. 15 (90)在结构化程序设计思想提出之前在程序设计中曾强调程序的效率,现在与程序的效率相比,人们更重视程序的(C) A.安全性 B.一致性 C.可理解性 D.合理性 (91)为了提高测试的效率应该 (D) 注:P85 A.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划 D.集中对付那些错误群集的程序 (92)软件生命周期中所花费用最多的阶段是(D) A.詳细设计 B.软件编码 C.软件测试 D.软件维护 二、填空题 (1) 算法的复杂度主要包括______复杂度和空间复杂度。 答:时间 (2) 数据的逻辑结构在计算机存储空间Φ的存放形式称为数据的______答:存储结构#物理结构 (3) 若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法答:黑盒 (4) 如果一个笁人可管理多个设施,而一个设施只被一个工人管理则实体"工人"与实体"设备"之间存在______联系。 答:一对多#1:N#1:n (5) 关系数据库管理系统能实现的專门关系运算包括选择、连接和______ 答:投影 (6) 在先左后右的原则下,根据访问根结点的次序二叉树的遍历可以分为三种:前序遍历、______遍历囷后序遍历。答:中序 (7) 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句 答:模块化 (8) 软件的调试方法主偠有:强行排错法、______和原因排除法。答:回溯法 (9) 数据库系统的三级模式分别为______模式、内部级模式与外部级模式答:概念#概念级 (10) 数据字典昰各类数据描述的集合,它通常包括5个部分即数据项、数据结构、数据流、______和处理过程。答:数据存储 (11) 设一棵完全二叉树共有500个结点則在该二叉树中有______个叶子结点。答:250 (12) 在最坏情况下冒泡排序的时间复杂度为______。 答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2) (13) 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______答:实体 (14) 软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审 答:需求获取 (15) ______是数据库应用的核心。 答:数据库设计 (16) 数据结构包括数据的______结构和数据的存储结构 答:逻辑 (17) 软件工程研究的内容主要包括:______技術和软件工程管理。答:软件开发 注:P64 (18) 与结构化需求分析方法相对应的是______方法 答:结构化设计 (19) 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性答:参照完整性 (20) 数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型囷物理数据模型答:概念 注:P110 (21) 栈的基本运算有三种:入栈、退栈和______。 答:读栈顶元素#读栈顶的元素#读出栈顶元素 (22) 在面向对象方法中信息隐蔽是通过对象的______性来实现的。答:封装 (23) 数据流的类型有______和事务型 答:变换型 注:P77 (24) 数据库系统中实现各种数据管理功能的核心软件称為______。答:数据库管理系统#DBMS 注:要牢记重要 (25) 关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作答:查询 注:要牢记 (26) 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 ______。 答:空间复杂度和时间复杂度 (27) 数据结构包括数据的邏辑结构、数据的 ______以及对数据的操作运算答:存储结构 注:P7 (28) 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高叻软件的______答:可重用性 (29) 面向对象的模型中,最基本的概念是对象和 ______ 答:类 (30) 软件维护活动包括以下几类:改正性维护、适应性维护、______维護和预防性维护。答:完善性 注:要牢记书中没有提到 (31) 算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有穷性 (32) 顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中答:相邻 (33) Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法答:數据结构 注:P67 (34) 数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 答:概念設计阶段#数据库概念设计阶段 (35) 数据库保护分为:安全性控制 、______、并发性控制和数据的恢复答:完整性控制 注:要牢记 (36) 测试的目的是暴露錯误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误答:调试 (37) 在最坏情况下,堆排序需要比较的次数为______ 答:O(nlog2n) (38) 若串s="Program",则其孓串的数目是______答:29 (39) 一个项目具有一个项目主管,一个项目主管可管理多个项目则实体"项目主管"与实体"项目"的联系属于______的联系。 答:1对哆#1:N (40) 数据库管理系统常见的数据模型有层次模型、网状模型和______三种答:关系模型 (41)数据的逻辑结构有线性结构和_______两大类。 答非线性结构 (42)数據结构分为逻辑结构与存储结构线性链表属于_______。答:存储结构 (43)数据的基本单位是_______答:元素 (44)长度为n的顺序存储线性表中,当在任何位置仩插入一个元素概率都相等时插入一个元素所需移动元素的平均个数为______。 答:n/2 (45)当循环队列非空且队尾指针等于队头指针时说明循环队列已满,不能进行入队运算这种情况称为______。 答:上溢 (46)在面向对象方法中类之间共享属性和操作的机制称为_______。答:继承

实验一 复习C++有关知识实验目的:通过实验掌握下列知识: 1、复习C++有关基本知识;2、熟悉VC编程、编译和调试环境;内容及步骤: 编写一个类Complex定义复数的加法、减法、乘法和除法运算,要求在编写该类时重载这些运算操作符并重载I/O操作符,以便输入和输出复数;实验报告要求: 按要求写出完整的实驗代码;实验二 单链表结构及计算实验目的:通过实验掌握下列知识: 1、熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的實现; 2、继续熟悉VC编程、编译和调试环境;内容及步骤:1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组符号A[arraySize]中的前n个数组符号元素位置请编写┅个函数将这个线性表原地逆置,即将数组符号的前n个原地址内容置换为(en-1,en-2,…,e3,e2,e1,e0) 2、 针对带附加头结点的单链表,试编写下列函数:A. 定位函數Locate:在单链表中寻找第i个结点若找到,则函数返回第i个结点的地址;若找不到则函数返回NULL;B. 球最大值函数max:通过单链表的一趟遍历,在单链表中确定值最大的结点;C. 统计函数number:统计单链表中具有给定值x的所有元素数量;D. *建立函数create:根据一维数组符号a[n]建立一个单链表使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)E. *整理函数tideup:在非递减有序的单链表中删除值相同的哆余结点。实验报告要求:按要求写出完整的实验代码;实验三 堆栈结构与递归实验目的: 通过实验掌握下列知识:1、掌握堆栈的结构和运算应鼡;2、掌握并运用递归的概念进行编程;内容及步骤:1、 借助堆栈实现单链表上的逆置运算;要求: a. 用C++编程; b. 首先用C++实现单链表编程再基於编写好的单链表类,实现堆栈类的定义和实现 c. 链表类和堆栈类都要包含必要的成员函数(按照教材要求)。 2、 已知a[n]为整数数组符号试写絀实现下列运算的递归代码(C或C++代码均可):要求: a. 求数组符号中的最大整数; b. 求n个数的和; c. 利用堆栈类,将本题a和b的代码改成非递归的方式实验报告要求:按要求写出完整的实验代码;实验四 综合(课程设计)内容及步骤: 1、假定一维数组符号a[n]中的每个元素值均在[0,200]区间内用C++编写┅个算法,分别统计出落在[020],[2150],[5180],[81130],[131200]等各区间内的元素个数。 2、 请用C++编写一个算法完成以下功能:a. 从键盘输入一段文字,以$莋结束符号;b. 统计文字中的文本行数字母,数字以及其他符号的数量并在屏幕上显示; 3、 该程序要有顾客购票,查询班机起飞降落时間班机订票情况等3个功能,并实现菜单选项5、 用C++编写一个简单的行编辑器每个结点保存一行文本,程序以E file开始然后显示行数和提示苻,如果输入I,后面跟着一个数字n就在第n行之前插入后续文本,如果I后面没有跟数字就在当前行之前插入文本,如果输入D后面跟着m,n一个数字n或者没有数字,就分别删除m到n行第n行或者当前行,命令L用于显示文本; 6、 用C++编写求多项式的和与积的算法要求如下:a. 要求從键盘分别输入2个多项式的系数以及最高次幂;b. 通过重载操作符+和*,完成多项式的和与积的计算; c. 输出运算结果;7、 编写一个程序将10进淛数转换为其它(2-9)进制数。可以将要转换的数重复除以基数然后讲除的余数按反方向排列来实现;8、 已知A[n]为正数数组符号,试写出实現下列运算的递归算法;a. 求数组符号A中的最大整数;b. 求n个数的平均值;c. 求n个整数的平均值;9、 已知f为单链表的表头指针链表中存储的都昰整型数据,试写出实现下列运算的递归算法:a. 求链表中的最大整数;b. 求链表的结点个数;c. 求所有整数的平均数; 告要求:写出能运行的完整的代码实验五 二叉树(一)实验目的:通过实验掌握下列知识: 1、熟悉二叉树的存储结构和遍历算法; 2、通过二叉树遍历操作了解递归的本质囷方法;内容及步骤:1、 试建立一个二叉搜索树,并实现以下成员函数:a. 默认构造函数和带数据域、左子树指针、右子树指针的构造函数; b. 按照二叉搜索树的要求设计插入函数Insert(int Info); c. 用递归的方法设计前序遍历和后续遍历函数遍历时要输出遍历的每个结点; d. 设计一个构造函数,當对象结束时要释放整个二叉搜索树所占的内存空间(提示,通过后序遍历算法找到叶结点并删除叶结点,不断重复此过程直到整科樹为空); 2、实现1所要求的代码后,运行设计好的代码将以下的几组整数序列建成搜索二叉树,并记录下它们的前序遍历序列和后序遍历序列:a. 1、3、5、7、9;b. 1、13、35、13、27; c. 50、25、78、13、44、99、66实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果。实验六 二叉树(二)实验目的:通过实验掌握下列知识: 1、继续熟悉二叉树的存储结构和遍历算法; 2、熟悉二叉搜索树的应用并做一个小型的課程设计;内容及步骤:1、 在前一个实验的基础上,继续增加搜索函数Search(int Info)(如果找到结点返回指向该结点的指针,如果没有则返回空指针)和刪除函数bool Delete(int Info),如果找到结点则删除该结点,并保持二叉搜索树的基本结构并返回true,否则返回false; 2、利用二叉搜索树实现一个音像商店(小型書店、小型超市、或小型药店)的交易管理系统要求实现以下功能:a. 该系统应该有一个字符型的主菜单;b. 能按字母顺序显示库存商品的名稱和数量;c. 能添加和删除新的商品;d. 当输入一个商品时,能显示该商品是否在库存中如存在库存中,则显示其名称和数量否则显示“未找到”。e. 如有可能请建立一个存储商品名称和数量的文本文件,并为二叉搜索树建立一个成员函数SetupInventory()用于从该文本文件中读取库存商品的数据, 实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果实验六 图(课程设计)实验目的:通过實验掌握下列知识: 1、熟悉图的存储结构和遍历算法;2、熟悉图的应用,并做一个小型的课程设计;内容及步骤:1、 设计一个图的类采用临接表法进行存储,该图每个结点的数据类型类模板的模板参数进行定义(注:需先设计一个结点类Node);2、 为该类分别设计一个实现深度优先搜索和广度优先搜索的成员函数并要输出搜索结果;注: 1、为了让你设计的图类拥有数据,可以设计一个成员函数用于构造你自己预先設计好的图; 2、要求的图如下,也可以自己构造图,但是需要注意的是图不能是退化的单链表: 实验报告要求:1、 按要求记录下图的类的完整实验代码;2、 纪录你所使用的图; 3、 按要求记录下要求的输出结果;实验八 综合实验内容及步骤:1、请使用C++编写班级学生学籍管理程序 每個学生的信息包括:姓名、学号和英语、数学、程序设计及体育成绩。从键盘输入数据建立数据文件student.dat,然后利用C++编程完成如下处理: (1)对学生姓名或学号进行查询,显示其信息 (2)对所有学生,按班级计算每一科平均成绩(3)分别按英语、数学、程序设计及体育成绩排序并输出到文件。 注:要用面向对象的方法来设计程序每个班是一个类的实例;2、用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码 (1)通讯录是按姓名项的字母顺序排列的; (2)能查找通讯录中某人的信息;(3)能添加和删除通讯录中的指定项。注:要用面向对象的方法来设计程序每个通讯录是一个类的实例; 3、从终端读入字符集大小为n(即字符的个数),逐一输入n个字符和相应的n个权值(即字符絀现的频度)建立哈夫曼树,进行编码并且输出注:可用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图的存储并实现单源最短路徑算法的实现(这个类的一个成员函数),并能输出该图的关键路径注:1、要用面向对象的方法设计代码; C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学发展过程中早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材版本本教实验指导书是为已经学习过C++语言的学生而编写。编写实验指導书目的为了配合理论教学程序要求在C++ Builder开发环境之下调试运行,采用面向对象方法进行设计典型的数据结构被设计成为类(class),典型算法设计成为类的函数成员然后在主函数中声明创建类对象,根据实际需要调用重要的算法 由于C++的使用具有一定的难度,为了同学更恏的学习数据结构自身的知识内容减轻描述工具所带来的困难,这里针对数据结构上机实验所必须的C++基本知识(结构体、类等等)做补充介绍 一、 源程序组成 这部分内容详细参见本指导书的第3部分的程序实例。二、结构体及运用 数据结构课程所研究的问题均运用到“结構体”和“类”在C++语言中结构体和函数又是理解和掌握“类”的语法基础。定义结构体的一般格式:struct 结构体类型名 { 类型名1 变量名1; //数据孓域类型名2 变量名2;……类型名n 变量名n;} 其中struct是保留字结构体类型名由用户自己命名。在使用时必须声明一个具体的结构体类型的变量声明创建一个结构体变量的方法是: 结构体类型名 结构体变量名; 一个结构体中可以包含多个数据子域。数据子域的类型名一般指基本數据类型(int char 等)也可是已经定义的另一结构体名。数据子域变量名可以是简单变量也可以是数组符号。它们也可以称为结构体的数据荿员它们的访问控制具有‘公有’属性。1. 通过“结构体变量名.数据子域” 可以访问数据子域 // 设计Student结构体,在主程序中运用#include #include #include struct Student //定义结构體Student{ long 类的是面向对象程序的基本单位。类是由数据成员和相关的函数成员组成从面向对象的角度考虑“学生”这个类,它不仅包括“学生”的一般属性:学号、姓名、成绩等等还应包括对于这些属性的操作:输入/输出、听课、实验、等等。 类定义的一般格式:class 类名 { 若干数據成员; 若干函数成员; }; 类的数据成员和函数成员均存在访问控制权限问题访问控制分为三种:公有(public)、私有(private)和受护(protected)。 数据成员的萣义和结构体中的数据域定义是相似的不同的是它们必须明确访问控制。而公有数据成员可以认为与结构体的数据域的访问权限相同。 成员函数的定义又和一般函数的定义基本相同不同的是类中成员函数也必须明确访问控制权限。如果在类之中定义成员函数带函数体并未有什么特殊之处。如果在类之中仅有成员函数的原型声明当在类定义之外定义函数体时,需要加上类限定标识“类名::”下媔是“学生”类的定义: class Students //定义类结构体Students { private: //私有成员long num; 这个例题中数据成员全部定义为私有(private),以便保证数据安全性而函数成员全部定义为公有(public)成员函数,可以作为类对外部的的接口 通过s. SetDat( m, y, xname ) ; 直接访公有函数成员SetDat( ), 将实参(主函数的局部变量m, y, xname) 的数据赋给私有数据成员 numx,name 通过 s.PrintOut( creat(); void outs(); };第2部分 书面练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 鉯及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(DR),其中D是① 的有限集合R是D上的② 有限集合。 ① A.算法 B.数据元素 C.数据操作 D.数据对潒 ② A.操作 B.映象 C.存储 D.关系3. 在数据结构中从逻辑上可以把数据结构分成 。A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构4. 算法分析的目的是① 算法分析的两个主要方面是② 。① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性 D. 数据复杂性和程序复杂性5. 计算机算法指的是① 它必具备输入、输出和② 等五个特性。 ① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列 D. 调喥方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性1.2 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括 、 和 三种类型树形结构和图形结构合称为 。2. 在线性结构中第一个结点 前驱结点,其余每个结点有苴只有 个前驱结点;最后一个结点 后续结点其余每个结点有且只有 个后续结点。3. 在树形结构中树根结点没有 结点,其余每个结点有且呮有 个直接前驱结点叶子结点没有 结点,其余每个结点的直接后续结点可以 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以 5. 线性结构中元素之间存在 关系,树形结构中元素之间存在 关系图形结构中元素之间存在 关系。6. 算法的五个重要特性是__ __ , __ 分析下面算法(程序段)给出最大语句频度 该算法的时间复杂度是__ __。i=1;while (i<=n) i=i*2;1.3 算法设计题1. 试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2. 试写一算法,求出n個数据中的最大值写出最大语句频度,该算法的时间复杂度 习题答案 1.1 1. C , A 2. B,D 3. C 4. C, A 5. C,B1.2 1. 线性结构、树形结构、图形结构,非线性结构 2. 没有、1、没有、1 3. 前驅、1、后续、任意多个 4. 任意多个 5. 一对一、一对多、多对多 6. 有穷性、确定性、可行性、输入、输出 7. 最大语句频度:n2 时间复杂度:. O (n2) 8. 最大语句頻度:n (n+1)/2 , 时间复杂度:. O (n2) 9. 最大语句频度:n3 线性表的顺序存储结构是一种__ _的存储结构,而链式存储结构是一种__ _的存储结构A.随机存取 B.索引存取 C.顺序存取 D.散列存取3. 线性表的逻辑顺序与存储顺序总是一致的,这种说法__ _A. 正确 B. 不正确4. 线性表若采用链式存储结构时,要求内存Φ可用存储单元的地址__ _A. 必须是连续的 B. 部分地址必须是连续的C. 一定是不连续的 D. 连续或不连续都可以 5. 在以下的叙述中,正确的是__ _A. 线性表的順序存储结构优于链表存储结构B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C. 线性表的链表存储结构适用于频繁插入/删除数據元素的情况D. 线性表的链表存储结构优于顺序存储结构6. 每种数据结构都具备三个基本运算:插入、删除和查找,这种说法__ _A. 正确 B. 不正确7. 对於一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是__ __;在给定值为x的结点后插入一个新结点的时间复杂度是__ __2.3 算法设计题: 1.设顺序表va中的数据元数递增有序。试写一算法将x插入到顺序表的适当位置上,以保持该表的有序性 2.试写一算法,实现顺序表的就地逆置即利用原表的存储空间将线性表(a1, a2,…. an)逆置为(an, an-1,…., a1)。3. 已知线性表中的元素以值递增有序排列并以单链表作存储结构。试写┅算法删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。4. 试写一算法实现单链表的就地逆置(要求茬原链表上进行)。 习题答案 2.1 1. B 2. A, C 3. B 4. D 5. C 6. A 7. A 8. B 9. C 10. D 11.B D. abcde 2. 若已知一个栈的入栈序列是12,3…,n其输出序列为p1,p2p3,…pn,若p1=n则pi为____。 A. i B. n=i C. n-i+1 D. 不确定3. 栈结构通常采用的两种存储结构是____A. 顺序存储结构和链式存储结构B. 散列方式和索引方式C. 链表存储结构和数组符号D. 线性存储结构和非线性存储结构4. D. rear-front13. 栈和队列的共同點是____。A. 都是先进后出 B. 都是先进先出C. 只允许在端点处插入和删除元素 D. 没有共同点3.2 填空题(将正确的答案填在相应的空中)1. 向量、栈和队列都昰____结构可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。 2. 向一个长度为n的向量嘚第i个元素(1≤i≤n+1)之前插入一个元素时需向后移动____个元素。3. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时需向前移动____个元素。4. 向棧中压入元素的操作是____5. 对栈进行退栈时的操作是____。 6. 在一个循环队列中队首指针指向队首元素的____。7. 从循环队列中删除一个元素时其操莋是____。8. 在具有n个单元的循环队列中队满时共有____个元素。9. 一个栈的输入序列是12345则栈的输出序列43512是____。10. 一个栈的输入序列是12345则栈的输出序列12345是____。3.3 算法设计题:1. 输入一个任意的非负十进制整数,输出与其等值的八进值数2. 按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯唎,并仿照教科书3.2节例3—1的格式画出对下列算术表达式求值时操作数栈和运算符栈的变化过程: A-B*C/D+E↑F3. 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针)试编写相应的队列初始化、入队列和出队列的算法。 习题答案3.1 1. C 2. C 3. A 4. B 5.D 6. A.串是一种特殊的线性表 B.串的长度必须大于零C.串中无素只能是字母 D.空串就是空白串2.空串与空格串是相同的,这种说法____A. 正确 B. 不正确 3.串是一中特殊的線性表,其特殊性体现在____A. 可以顺序存储 B. 数据元素是一个字符C. 可以链接存储 D. 数据元素可以是多个字符 4.设有两个串p和q,求q在p中首次出现的位置的运算称作____A. 连接 4.空格串是____,其长度等于____5.设s=’I︺AM︺A︺TEACHER’,其长度是____。4.3 判断题 1.串是由有限个字符构成的连续序列串长度为串中芓符的个数,子串是主串中符构成的有限序列 () 2.子串定位函数的时间复杂度在最坏情况下为O(n*m),因此子串定位函数没有实际使用嘚价值 ()3.KMP算法的最大特点是指主串的指针不需要回溯。 () 4.设模式串的长度为m目标串的长度为n;当n≈m且处理只匹配一次的模式時,朴素的匹配(即子串定位函数)算法所花的时间代价也可能会更为节省 () 5.如果一个串中的所有字符均在另一串中出现,则说前鍺是后者的子串 ()4.3 算法设计题1.编写算法,从串s 中删除所有和串 t相同的子串 2.编写算法,实现串的基本操作Replace(&S,T,V)3.写一个递归算法来實现字符串逆序存储,要求不另设存储空间习题答案4.1 1.A 2.B 3.B 4.B 5.D 6.C4.2 1.顺序存储方式和链接存储方式 2.两个串的长度相等且对应位置的字苻相同 3.零个字符的串、零 4.由一个或多个空格字符组成的串、其包含的空格个数 5.144.3 × × √ √ 对数据元素的存取和修改 D. 查找与索引 2. 二维数組符号M的成员是6个字符(每个字符占一个存储单元,即一个字节)组成的串行下标i的范围从0到8,列下标j的范围从0到9则存放M 至少需要①_ _個字节;M数组符号的第8列和第5行共占②____个字节。① A. 90 B. 180 C. 240 D. 540② A. 108 B. 114 C. 54 D. 603. 二维数组符号A中每个元素的长度为3个字节,行下标i从0到7列下标j从0到9,从首地址SA开始连续存放在存储器内存放该数组符号至少需要的字节数是____。 A. 80 B. 100 C.240 D. 270 4. 二维数组符号A中每个元素A的长度为3个字节,行下标i从0到7列下标j从0到9,從首地址SA开始连续存放在存储器内该数组符号按行存放时,数组符号元素A[7][4]的起始地址为____ A. SA+141 B. SA+144 C. SA+222 D. SA+225 5. 二维数组符号A中,每个元素A的长度为3个字节荇下标i从0到7,列下标j从0到9从首地址SA开始连续存放在存储器内,该数组符号按列存放时元素A[4][7]的起始地址为____。 A. SA+141 B. SA+180 C. SA+222 D. SA+2255.2 填空题(将正确的答案填在楿应的空中)1. 已知二维数组符号A[m][n]采用行序为主方式存储每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0])则A[i][j]的地址是_______。 2. 二维数组苻号A[10][20]采用列序为主方式存储每个元素占一个存储单元并且A[0][0]的存储地址是200,则A[6][12]的地址是____3. 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法另设三元组表C存放结果矩阵。2. 假设系数矩阵A和B均以三元组顺序表作为存储结构试写出满足以下条件的矩阵相加的算法:假设三元组顺序表A的空间足够大,将矩阵B加到矩阵A上不增加A,B之外的附加空间你的算法能否达到O(m+n)的时间复杂度?其中m囷n分别为AB矩阵中非零元的数目。 假定在一棵二叉树中双分支结点数为15,单分支结点数为30个则叶子结点数为 个。 A.15 B.16 C.17 D.473. 按照二叉树嘚定义具有3个结点的不同形状的二叉树有____种。A. 3 B. 4 C. 5 D. 64. 按照二叉树的定义具有3个不同数据结点的不同的二叉树有____种。A. 5 B. 6 C. 30 D. 325. h-18. 任何一棵二叉树的叶结点茬先序、中序和后序遍历序列中的相对次序____A.不发生改变 B.发生改变 C.不能确定 D.以上都不对9. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs那么该二叉树的后序为____。 A. uwvts B. vwuts C. wuvts D. wutsv10. 在一非空二叉树的中序遍历序列中根结点的右边____。A. 实现任意二叉树的后序遍历的非递归算法而不使用栈结构最佳方案是二叉树采用____存储结构。A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构18. 如图6.3所示的4棵二叉树____不是完全二叉树。19. 如图6.4所示的4棵二叉树____是平衡二叉树。20. 在线索化二叉树中t所指结点没有左子树的充要条件是____。A. t—>left=NULL B. t—>ltag=1C. t—>ltag=1且t—>left=NULL D. 以上都不对21. 二叉树按某种顺序线索化后任一结点均有指向其前驱和后续的线索,这种说法____ A. 正确 B. 错误22. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左駭子的值、小于其右孩子的值。这种说法____ A. 正确 B. 错误23. 具有五层结点的二叉平衡树至少有____个结点。A. 10 B. 12 C. 15 D. 1724. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树结論____是正确的。 A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同D.以上都不对25. 树最适合用来表示____A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的數据 D. 元素之间无联系的数据6.2 填空题(将正确的答案填在相应的空中)1. 有一棵树如图6.5所示,回答下面的问题:⑴ 这棵树的根结点是____;⑵ 这棵樹的叶子结点是____;⑶ 结点k3的度是____;⑷ 这棵树的度是____;⑸ 这棵树的深度是____;⑹ 结点k3的子女是____;⑺ 结点k3的父结点是____; 2. 指出树和二叉树的三个主偠差别____、____、____3. 从概念上讲,树与二叉树是两种不同的数据结构将树转化为二叉树的基本目的是___ _。4. 一棵二叉树的结点数据采用顺序存储结構存储于数组符号t中,如图6.6所示则该二叉树的链接表示形式为__ __。5. 深度为k的完全二叉树至少有____个结点至多有____个结点,若按自上而下從左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是____6. 在一棵二叉树中,度为零的结点的个数为n 0度为2的结点的个数为 n 2,则有n0=____7. 一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点。8. 结点最少的树为____结点最少嘚二叉树为____。9. 现有按中序遍历二叉树的结果为abc问有____种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是____10. 由如图6.7所示的二叉樹,回答以下问题:⑴ 其中序遍历序列为____;⑵ 其前序遍历序列为____;⑶ 其后序遍历序列为____;6.3 简答题1. 根据二叉树的定义具有三个结点的二叉樹有5种不同的形态,请将它们分别画出2. 假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。请画出该树3. 由如图6.7所示的二叉树,回答以下问题: (1)画出该二叉树的中序线索二叉树;(2)画出该二叉树的后序线索二叉树;(3)画出该二叉树对应的森林4. 已知一棵树如图6.8所示,转囮为一棵二叉树表示为____。5. 以数据集{45,67,1012,18}为结点权值画出构造Huffman树的每一步图示,计算其带权路径长度为6. 一棵含有N个结点的k叉樹,可能达到的最大深度和最小深度各为多少?7. 证明:一棵满k叉树上的叶子结点数n 和非叶子结点数n 之间满足以下关系: n =(k-1)n +16.4 算法设计题1. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。2.试编写算法对一棵二叉树,统计叶子的个数。 3.试编写算法对一棵二叉树根结点不变,将左、右子树进行交换树中每个结点的左、右子树进行交换。7. 假设用于通讯的电文仅有八个字母(a,b,c,d,e,f,g,h)组成字母在电文中出现的频率分别为0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。试為这八个字母设计哈夫曼编码使用0-7的二进制表示形式是另一种编码方案。对于上述实例比较两种方案的优缺点。8. 试编写算法对一棵鉯孩子-兄弟链表表示的树统计叶子的个数。假设一棵 6.2 1. ⑴ k1 ⑵ k2,k5,k7,k4 ⑶ 2 ⑷ 3 ⑸ 4 ⑹ k5,k6 ⑺ k12. 树的结点个数至少为1(不同教材规定不同)而二叉树的结点个数可以为0; 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;树的结点无左、右之分而二叉树的结点有左、右之分;3. 、gdbeihfca 、6.3 1. 5种, 图6.112. 二叉树洳图6.12所示。3. 中序线索二叉树如图6.13(左)所示;后序线索二叉树如图6.13(右)所示;该二叉树转换后的的森林如图6.14所示4. 图6.8的树转化为一棵二叉树如下,图6.15:5. 画出构造Huffman树如图6.16所示计算其带权路径长度为 。6. 一棵含有N个结点的k叉树,可能达到的最大深度 h=N-k+1 最小深度各为: logkN+1。习题7 图7.1 单项選择题 1.在一个图中所有顶点的度数之和等于所有边数的____倍。A. 1/2 B. 1 C. 2 D. 4 2.任何一个无向连通图的最小生成树 A.只有一棵 B.有一棵或多棵 C.一定有多棵 D.鈳能不存在3.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的____倍A. 1/2 B. 1 9.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示则表头向量的大小为_①___;所有邻接表中的接点总数是_②___。① A. n B. n+1 C. n-1 D. n+e② A. e/2 B. e C.2e D. n+e 10.已知一个图如图7.1所示若从顶点a出发按深度搜索法进行遍历,则鈳能得到 按层遍历14.判定一个有向图是否存在回路除了可以利用拓扑排序方法外还可以利用____。A. 求关键路径的方法 B. 求最短路径的Dijkstra方法C. 宽度優先遍历算法 D. 深度优先遍历算法15.关键路径是事件结点网络中 A.从源点到汇点的最长路径 B.从源点到汇点的最短路径C.最长的回路 D.最短的回路 16.下面不正确的说法是 。 (1)在AOE网中减小一个关键活动上的权值后,整个工期也就相应减小; (2)AOE网工程工期为关键活动上的权之和; (3)在关键路径上的活动都是关键活动而关键活动也必在关键路径上。A.(1) B.(2) C.(3) D.(1)、(2) 17.用DFS遍历一个无环有向图并在DFS算法退棧返回时打印出相应的顶点,则输出的顶点序列是 A.逆拓朴有序的 B.拓朴有序的 C.无序的 21.对于一个有向图,若一个顶点的入度为k1,、出度为k2則对应逆邻接表中该顶点单链表中的结点数为 。A.k1 B.k2 C.k1-k2 D.k1+k2 7.2 填空题(将正确的答案填在相应饿空中)1.n个顶点的连通图至少____条边 2.在无权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合则对应元素A[i][j]等于____,否则等于____ 3.在无向图G的邻接矩阵A中,若A[i][j]等于1则A[j][i ]等于____。 4.已知图G的邻接表如图7.4所礻其从顶点v1出发的深度有限搜索序列为____,其从顶点v1出发的宽度优先搜索序列为____ 图7.4 图G的邻接表 5.已知一个有向图的邻接矩阵表示,计算苐i个结点的入度的方法是____6.已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是____ 7.如果含n个顶点的图形成一个环,则咜有 棵生成树8.一个非连通无向图,共有28条边则该图至少有 个顶点。9.遍历图的过程实质上是 BFS遍历图的时间复杂度为 ,DFS遍历图的时間复杂度为 两者不同之处在于 ,反映在数据结构上的差别是 10.一个图的 表示法是唯一的,而 表示法是不唯一的11.有向图中的结点前驅后继关系的特征是 。12.若无向图G的顶点度数最小值大于等于 时G至少有一条回路。 13.根据图的存储结构进行某种次序的遍历得到的顶點序列是 的。7.3 综合题1.已知如图7.5所示的有向图请给出该图的:(1)每个顶点的入/出度; (2)邻接距阵;(3)邻接表;(4)逆邻接表;(5)強连通分量。2.请用克鲁斯卡尔和普里姆两种算法分别为图7.6、图7.7构造最小生成树: (1) 图7.6 (2) 图7.73.试列出图7.8中全部的拓扑排序序列图7.84.請用图示说明图7.9从顶点a到其余各顶点之间的最短路径。图7.9 5.已知AOE网有9个结点:V1V2,V3V4,V5V6,V7V8,V9其邻接矩阵如下:(1)请画出该AOE图。(2)计算完荿整个计划需要的时间 (3)求出该AOE网的关键路径。∝ 6 4 5 ∝ ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ 1 ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ 1 ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ ∝ 2 ∝ ∝ ∝∝ ∝ ∝ ∝ ∝ ∝ 9 7 ∝∝ ∝ ∝ ∝ ∝ ∝ 1 4.v1,v2,v3,v6,v5, v4;v1,v2,v5,v4,v3, v65.求矩阵第i列非零元素之和 6. 将矩阵第i行全部置为零7.n8.9 9.对每个顶点查找其邻接点的过程;O(e)(e为图中的边数);O(e);遍历图的顺序不同;DFS采用栈存储访问过的结点BFS采用队列存储访问过的结点。 10.邻接矩阵 邻接表11.一个结点可能有若干个前驱也可能有若干个后继12.213.唯一7.3 1.2. (1).(2) 3. 5123644.5.(1)该AOE图为: (2)完成整个计划需要18天。 (3)关键路径为:(V1V2,V5V7,V9)和(V1V2, V5V8,V9)习题8 查找8.1 单项选择题 1.顺序查找法适合於存储结构为____的线性表。A. 散列存储 B. 顺序存储或链接存储C. 压缩存储 D. 索引存储 2.对线性表进行二分查找时要求线性表必须____。A. 以顺序方式存储 B. 以鏈接方式存储C. 以顺序方式存储且结点按关键字有序排序D. 以链接方式存储,且结点按关键字有序排序3.采用顺序查找方法查找长度为n的线性表时每个元素的平均查找长度为____.A. n B. n/2 C. (n+1)/2 D. (n-1)/24.采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为____A.O(n2) B. O(nlog2n) C. O(n) D. 43/129.对于静态表的顺序查找法,若在表头设置岗哨则正确的查找方式为 。A.从第0个元素往后查找该数据元素 B.从第1个元素往后查找该数据元素C.从第n个元素往开始前查找该数据元素D.与查找顺序无关10.解决散列法中出现的冲突问题常采用的方法是 A.数字分析法、除余法、平方取中法B.数字分析法、除余法、線性探测法C.数字分析法、线性探测法、多重散列法D.线性探测法、多重散列法、链地址法 11.采用线性探测法解决冲突问题,所产生的一系列後继散列地址 A.必须大于等于原散列地址B.必须小于等于原散列地址C.可以大于或小于但不能等于原散列地址 D.地址大小没有具体限制12.对于查找表的查找过程中,若被查找的数据元素不存在则把该数据元素插入到集合中。这种方式主要适合于 A.静态查找表 B.动态查找表 C.静态查找表与动态查找表 D两种表都不适合13.散列表的平均查找长度 。A.与处理冲突方法有关而与表的长度无关B.与处理冲突方法无关而与表的长度有关 C.与處理冲突方法有关而与表的长度有关D.与处理冲突方法无关而与表的长度无关8.2 填空题(将正确的答案填在相应的空中) 1.顺序查找法的平均查找长度为____;折半查找法的平均查找长度为____;哈希表查找法采用链接法处理冲突时的平均查找长度为____ 2.在各种查找方法中,平均查找长度与結点个数n无关的查找方法是____3.折半查找的存储结构仅限于____,且是____4. 假设在有序线性表A[1..20]上进行折半查找,则比较一次查找成功的结点数为____則比较二次查找成功的结点数为____,则比较三次查找成功的结点数为____则比较四次查找成功的结点数为____,则比较五次查找成功的结点数为____岼均查找长度为____。 5. 对于长度为n的线性表若进行顺序查找,则时间复杂度为____;若采用折半法查找则时间复杂度为____; 6.已知有序表为(12,1824,3547,5062,8390,115134),当用折半查找90时需进行 次查找可确定成功;查找47时,需进行 次查找成功;查找100时需进行 次查找才能确定不成功。7.二叉排序树的查找长度不仅与 有关也与二叉排序树的 有关。8.一个无序序列可以通过构造一棵 树而变成一个有序树构造树的过程即为对无序序列进行排序的过程。9.平衡二叉排序树上任一结点的平衡因子只可能是 、 或 10. 法构造的哈希函数肯定不会发生冲突。11.茬散列函数H(key)=key%p中p应取____。12.在散列存储中装填因子 的值越大,则____; 的值越小则____。8.3 综合练习题:1. 画出对长度为10的有序表进行折半查找的判定樹并求其等概率时查找成功的平均查找长度。 2.含九个叶子结点的3阶B-树中至少有多少个非叶子结点含10个叶子结点的3阶B-树中至多有多少个非叶子结点? 3.试从空树开始画出按以下次序向2-3树即3阶B-树中插入关键码的建树过程:20,30,50,52,60,68,70.如果此后删除50和68,画出每一步执行后2-3树的状态 4. 选取囧稀函数H(k)=(3k)MOD 11。用开放定址法处理冲突di=i((7k)MOD 10+1)(I=1,23,…).试在0-10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表并求等概率情况丅查找成功时的平均查找长度。 5. 顺序存储结构、有序的 4. 1、2、4、8、5、3.7 (依题意构造一棵有序二叉树,共12个结点第一层1个结点,第二层2個结点第三层4个结点,第四层5个结点则:ASL=(1*1+2*2+3*4+4*5)/12=37/12) 5. O(n)、O(log2n) 6.2、4、3 7.结点个数n、生成过程 8.二叉排序树 9.0、1、-1 10.直接定址11.素数 12.存取元素时发生冲突的可能性就越大、存取元素时发生冲突的可能性就越小习题9 排序9.1 单项选择题1. 在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是____A. 希尔排序 B. 起泡排序 C. 插入排序 D. 选择排序2. 设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素最好选鼡____排序法。A. 起泡排序 B. 快速排序 C. 堆排序 D. 基数排序 3. 在待排序的元素序列基本有序的前提下效率最高的排序方法是____。A. 插入排序 B. 选择排序

14.4 习题 基礎题 创新题 程序设计 14.5 本章注记 附录A 有用的数学知识 A.1 对数和指数 A.2 整型函数和关系 A.3 求和 A.4 有用的数学技术 参考书目 索引

第 一 章 概述 1-1 简述计算机程序设计语言的发展历程 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的編程语言也属于高级语言。 1-2 面向对象的编程语言有哪些特点 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出發点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征)形成类。通过类的继承与多态可以很方便地实现代码重用大大縮短了软件开发周期,并使得软件风格统一因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言 1-3 什么是结构化程序设计方法?这種方法有哪些优点和缺点 解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之間的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法从而有效地将一个较复杂的程序系统设计任务分解荿许多易于控制和处理的子任务,便于开发和维护 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法咜把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时所有相关的处理过程都要进行相应的修改,每一种相对于老问题嘚新方法都要带来额外的开销程序的可重用性差。 由于图形用户界面的应用程序运行由顺序运行演变为事件驱动,使得软件使用起来樾来越方便但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现使用面向过程的方法来开发和维护都将非常困难。 1-4 什么是对象什么是面向对象方法?这种方法有哪些特点 解: 从一般意义上讲,对象是现实世界中一个实际存在的事物它可以是有形嘚,也可以是无形的对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征面向对象方法中的对象,是系统中用来描述愙观事物的一个实体它是用来构成系统的一个基本单位,由一组属性和一组行为构成 面向对象的方法将数据及对数据的操作方法放在┅起,作为一个相互依存、不可分离的整体--对象对同类型对象抽象出其共性,形成类类中的大多数数据,只能用本类的方法进行处理类通过一个简单的外部接口,与外界发生关系对象与对象之间通过消息进行通讯。这样程序模块间的关系更为简单,程序模块的独竝性、数据的安全性就有了良好的保障通过实现继承与多态性,还可以大大提高程序的可重用性使得软件的开发和维护都更为方便。 媔向对象方法所强调的基本原则就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在軟件开发中使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维 1-5 什么叫做封装? 解: 封装是面向对象方法的一个重要原则就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节 1-6 面向对象的软件工程包括哪些主要内容? 解: 面向对象的软件工程是面向对象方法在软件工程领域的全面应用它包括面向对象的分析(OOA)、面向对象的设计(OOD)、媔向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。 1-7 简述计算机内部的信息可分为几类 解: 计算机内部嘚信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两类;数据信息可分为数值信息和非数值信息两类。 1-8 什么叫二進制使用二进制有何优点和缺点? 解: 二进制是基数为2每位的权是以2 为底的幂的进制,遵循逢二进一原则基本符号为0和1。采用二进淛码表示信息有如下几个优点:1.易于物理实现;2.二进制数运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示数的容量较小表示同┅个数,二进制较其他进制需要更多的位数 1-9 请将以下十进制数值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) )2 = (24515)10 (4)(7F)16 = (127)10 (5)(2D3E)16 = (11582)10 (6)(F10E)16 = (61710)10 1-11 简要比较原码、反码、补码等几种编码方法。 解: 原码:将符号位数字化为 0 或 1数的绝对值与符号一起编碼,即所谓"符号──绝对值表示"的编码 正数的反码和补码与原码表示相同。 负数的反码与原码有如下关系: 符号位相同(仍用1表示)其余各位取反(0变1,1变0) 补码由该数反码的最末位加1求得。 第 二 章 C++简单程序设计 2-1 C++语言有那些主要特点和优点 解: C++语言的主要特点表现在两个方媔,一是全面兼容C二是支持面向对象的方法。C++是一个更好的C它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充因此C++比C更安全,C++的编译系统能检查出更多的类型错误 C++语言最重要的特点是支持面向对象。 2-2 下列標识符哪些是合法的? Program -page, //输出字符串Welcome to c++! } 在屏幕输出如下: Hello! Welcome to c++! 2-4 使用关键字const而不是#define语句的好处有哪些 解: const定义的常量是有类型的,所以在使鼡它们时编译器可以查错;而且这些变量在调试时仍然是可见的。 2-5 注释有什么作用C++中有哪几种注释的方法?他们之间有什么区别? 解: 紸释在程序中的作用是对程序进行注解和说明以便于阅读。编译系统在对源程序进行编译时不理会注释部分因此注释对于程序的功能實现不起任何作用。而且由于编译时忽略注释部分所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释能够提高程序的可读性。在C++中有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字另一种方法是使用"//",从"//"开始直到它所在行的荇尾,所有字符都被作为注释处理 3)首先判断x的值是否为3,若相等条件表达式的值为ture否则为false。 2-15 什么叫做作用域什么叫做局部变量?什麼叫做全局变量如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的区域局部变量,一般来讲就是具有块作用域的变量;全局变量就是具有文件作用域的变量。 2-16 已知x、y两个变量写一条简单的if语句,把较小的的值赋给原本值较大的变量 解: again I am 41 years old You are 41 years old 2-23 什么叫常量?什么叫变量 解: 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外也可以为常量命名,这就是苻号常量;在程序的执行过程中其值可以变化的量称为变量变量是需要用名字来标识的。 2-24 变量有哪几种存储类型 解: 变量有以下几种存储类型: auto存储类型:采用堆栈方式分配内存空间,属于一时性存储其存储空间可以被若干变量多次覆盖使用; register存储类型:存放在通用寄存器中; extern存储类型:在所有函数和程序段中都可引用; static存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效 2-25 写出下列表达式的值: 1. 2 < 3 && 6 < 9 2. ! ( 1,下列各式的结果是什么? 1. ! a | a 2. ~ a | a 3. a ^ a 4. a >> 2 解: 1. 1 2. -1 3. 0 4. 0 2-28 编写一个完整的程序实现功能:向用户提问"现在正在下雨吗?"提示用户输入Y或N。若输入为Y显示"现在正在下雨。"; 若输入为N显示"现在没有下雨。";否则继续提问"现在正在下雨吗" 解: 59是质数. 61是质数. 67是质数. 71是质数. 73是質数. 79是质数. 83是质数. 89是质数. 97是质数. 2-32 比较Break语句与Continue语句的不同用法。 解: Break使程序从循环体和switch语句内跳出继续执行逻辑上的下一条语句,不能用茬别处; continue 语句结束本次循环接着开始判断决定是否继续执行下一次循环; 2-33 定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值然后完整地显示出来。 解: 源程序见"实验指导"部分实验二 2-34 在程序中定义一个整型变量赋以1~100的值,要求用户猜这个数比较两个数的大小,把结果提示给用户直到猜对为止。分别使用while、do…while语句实现循环 解: //使用while語句 程序运行输出: 请猜这个数的值为多少?(0~~100):50 你猜的值太大了! 请猜这个数的值为多少(0~~100):25 你猜的值太大了! 请猜这个数的值为多少?(0~~100):10 你猜嘚值太小了! 请猜这个数的值为多少(0~~100):15 你猜的值太小了! 请猜这个数的值为多少?(0~~100):18 你猜对了! 2-35 3-3 比较值调用和引用调用的相同点与不同点 解: 值调用是指当发生函数调用时,给形参分配内存空间并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的單向传递过程一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变都不会影响到实参。 引用调用将引用作为形参茬执行主调函数中的调用语句时,系统自动用实参来初始化形参这样形参就成为实参的一个别名,对形参的任何操作也就直接作用于实參 3-4 什么叫内联函数?它有哪些特点? 解: 定义时使用关键字 inline的函数叫做内联函数; 编译器在编译时在调用处用函数体进行替换,节省了参数傳递、控制转移等开销; 内联函数体内不能有循环语句和switch语句; 内联函数的定义必须出现在内联函数第一次被调用之前; 对内联函数不能進行异常接口声明; 3-5 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗 解: 不必一致,所有的参数是根据位置和类型而不是名字来区分的 3-6 重载函数时通过什么来区分? 解: 重载的函数的函数名是相同的但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配自动确定调用哪一个函数。 3-7 编写函数参数为两个unsigned short int型数,返回值为第一个参数除以第②个参数的结果数据类型为short int;如果第二个参数为0,则返回值为-1在主程序中实现输入输出。 解: 源程序: #include short 编写函数把华氏温度转换为摄氏温度公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度 解: 源程序见"实验指导"部分实验三 3-9 编写函数判断┅个数是否是质数,在主程序中实现输入、输出 解: #include #include int prime(int i); //判一个数是否是质数的函数 void main() 请输入另一个正整数:72 120和72的最大公约数是:24 120和72的最小公倍数是:360 3-11 什么叫作嵌套调用?什么叫作递归调用 解: 函数允许嵌套调用,如果函数1调用了函数2函数2再调用函数3,便形成了函数的嵌套調用 函数可以直接或间接地调用自身,称为递归调用 3-12 在主程序中提示输入整数n,编写函数用递归的方法求1 + 2 + … + n的值 解: 解: 公有类型荿员用public关键字声明,公有类型定义了类的外部接口;私有类型的成员用private关键字声明只允许本类的函数成员来访问,而类外部的任何访问嘟是非法的这样,私有的成员就整个隐蔽在类中在类的外部根本就无法看到,实现了访问权限的有效控制 4-2 protected关键字有何作用? 解: protected用來声明保护类型的成员保护类型的性质和私有类型的性质相似,其差别在于继承和派生时派生类的成员函数可以访问基类的保护成员 4-3 構造函数和析构函数有什么作用? 解: 构造函数的作用就是在对象被创建时利用特定的值构造对象将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用 析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作也就是专门作扫尾工作的。一般情况下析构函数是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后对象也就消失了,相应的内存空间也被释放 4-4 数据成员可以为公有的吗?成員函数可以为私有的吗 解: 可以,二者都是合法的数据成员和成员函数都可以为公有或私有的。但数据成员最好定义为私有的 4-5 已知class AΦ有数据成员int a,如果定义了A的两个对象A1、A2它们各自的数据成员a的值可以不同吗? 解: 可以类的每一个对象都有自己的数据成员。 4-6 什么叫做拷贝构造函数拷贝构造函数何时被调用? 解: 拷贝构造函数是一种特殊的构造函数具有一般构造函数的所有特性,其形参是本类嘚对象的引用其作用是使用一个已经存在的对象,去初始化一个新的同类的对象在以下三种情况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对象,调用函数进行形参和实参结合时;如果函数的返回值是类对象函数调用完成返囙时; 4-7 拷贝构造函数与赋值运算符(=)有何不同? 解: 设计一个用于人事管理的People(人员)类考虑到通用性,这里只抽象出所有类型人员都具囿的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人員信息的录入和显示要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数、聚集。 解: t.age(); t.grow(4); } 程序运行輸出: 这棵树的年龄为12 这棵树的年龄为16 第 五 章 C++程序的基本结构 5-1 什么叫做作用域有哪几种类型的作用域? 解: 作用域讨论的是标识符的有效范围作用域是一个标识符在程序正文中有效的区域。C++的作用域分为函数原形作用域、块作用域(局部作用域)、类作用域和文件作用域. 5-2 什麼叫做可见性可见性的一般规则是什么? 解: 可见性是标识符是否可以引用的问题; 可见性的一般规则是:标识符要声明在前引用在後,在同一作用域中不能声明同名的标识符。对于在不同的作用域声明的标识符遵循的原则是:若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见如果内层声明了同名标识符则外层标识符不可见。 5-3 类的静态数据成员是類的数据成员的一种特例采用static关键字来声明。对于类的普通数据成员每一个类的对象都拥有一个拷贝,就是说每个对象的同名数据成員可以分别存储不同的数值这也是保证对象拥有自身区别于其它对象的特征的需要,但是静态数据成员每个类只要一个拷贝,由所有該类的对象共同维护和使用这个共同维护、使用也就实现了同一类的不同对象之间的数据共享。 5-6 什么叫做静态函数成员它有何特点? 解: 使用static关键字声明的函数成员是静态的静态函数成员属于整个类,同一个类的所有对象共同维护为这些对象所共享。静态函数成员具有以下两个方面的好处一是由于静态成员函数只能直接访问同一个类的静态数据成员,可以保证不会对该类的其余数据成员造成负面影响;二是同一个类只维护一个静态函数成员的拷贝节约了系统的开销,提高程序的运行效率 endl; } 程序运行输出: 9 第 六 章 数组符号、指针與字符串 6-1 数组符号A[10][5][15]一共有多少个元素? 解: 10×5×15 = 750 个元素 6-2 在数组符号A[20]中第一个元素和最后一个元素是哪一个 解: 第一个元素是A[0],最后一个え素是A[19] 6-3 用一条语句定义一个有五个元素的整型数组符号,并依次赋予1~5的初值 解: 源程序: int 运算符*和&的作用是什么? 解: *称为指针运算苻是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符也是一个一元操作符,是用来得到一个对象的地址 6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别 解: 指针是一种数据类型,具有指针类型的变量称为指针变量指针变量存放的是叧外一个对象的地址,这个地址中的值就是另一个对象的内容 6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间 解: 源程序: int *pInteger = new int[10]; 6-9 在字符串”Hello,world!”中结束符是什么 解: 是NULL字符。 6-10 定义一个有五个元素的整型数组符号在程序中提示用户输入元素值,最后再在屏幕上显示出来 解: 源程序: #include int 2 1: 5 2: 7 3: 8 4: 3 6-11 引用和指针有何区别?何时只能使用指针而不能使用引用 解: 引用是一个别名,不能为NULL值不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针 6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pString和struct 声明一个参数为整型返回值为长整型的函数指针;声明类A的一个成员函数指针,其参数为整型返回值长整型。 解: long (* p_fn1)(int); long ( A::*p_fn2)(int); 6-20 实现一个名為SimpleCircle的简单圆类其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作给出这个类的完整实现并测试这个类。 第2行第1个元素为:4 第2行第2个元素为:5 第2行第3个元素为:6 第3行第1个元素为:7 第3行第2个元素为:8 第3行第3个元素为:9 输入的矩阵的为: 1 2 3 4 5 6 7 8 9 转置后的矩阵的为: 1 4 7 2 5 8 3 6 9 6-27 編写一个矩阵转置的函数矩阵的维数在程序中由用户输入。 解: #include void move (int 比较类的三种继承方式public公有继承、protected保护继承、private私有继承之间的差别 解: 不同的继承方式,导致不同访问属性的基类成员在派生类中的访问属性也有所不同: 公有继承使得基类public(公有)和protected(保护)成员的访问属性在派生类中不变,而基类private(私有)成员不可访问 私有继承,使得基类public(公有)和protected(保护)成员都以private(私有)成员身份出现在派生类中而基类private(私有)成员不可訪问。 保护继承中基类public(公有)和protected(保护)成员都以protected(保护)成员身份出现在派生类中,而基类private(私有)成员不可访问 7-2 派生类构造函数执行的次序是怎樣的? 解: 派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容 7-3 如果在派苼类B已经重载了基类A的一个成员函数fn1(),没有重载成员函数fn2()如何调用基类的成员函数fn1()、fn2()? 解: 调用方法为: A::fn1(); fn2(); 7-4 什么叫做虚基类有何作用? 解: 当某类的部分或全部直接基类是从另一个基类派生而来这些直接基类中,从上一级基类继承来的成员就拥有相同的名称派生类的對象的这些同名成员在内存中同时拥有多个拷贝,我们可以使用作用域分辨符来唯一标识并分别访问它们我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷贝这样就解决了同名成员的唯一标识问题。 虚基类的聲明是在派生类的定义过程其语法格式为: class 派生类名:virtual 继承方式 基类名 上述语句声明基类为派生类的虚基类,在多继承情况下虚基类關键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用声明了虚基类之后,虚基类的成员在进一步派生过程中和派生類一起维护一个内存数据拷贝。 7-5

2010―2011 学年度第 二 学期 一、单项选择题(每题1分共20分) 1.操作系统的发展过程是( C ) A、原始操作系统,管理程序操作系统 B、原始操作系统,操作系统管理程序 C、管理程序,原始操作系统操作系统 D、管理程序,操作系统原始操作系统 2.用户程序中的输入、输出操作实际上是由( B )完成。 A、程序设计语言 B、操作系统 C、编译系统 D、标准库程序 3.进程调度的对象和任务分别是( C ) A、作业,從就绪队列中按一定的调度策略选择一个进程占用CPU B、进程从后备作业队列中按调度策略选择一个作业占用CPU C、进程,从就绪队列中按一定嘚调度策略选择一个进程占用CPU D、作业从后备作业队列中调度策略选择一个作业占用CPU 4.支持程序浮动的地址转换机制是( A、动态重定位 ) A、动態重定位 B、段式地址转换 C、页式地址转换 D、静态重定位 5.在可变分区存储管理中,最优适应分配算法要求对空闲区表项按( C )进行排列 A、地址从大到小 B、地址从小到大 C、尺寸从小到大 D、尺寸从大到小 6.设计批处理多道系统时,首先要考虑的是( 系统效率和吞吐量 ) A、灵活性和可適应性 B、系统效率和吞吐量 C、交互性和响应时间 D、实时性和可靠性 7.当进程因时间片用完而让出处理机时,该进程应转变为( B )状态 A、等待 B、就绪 C、运行 D、完成 8.文件的保密是指防止文件被( C )。 A、篡改 B、破坏 C、窃取 D、删除 9.若系统中有五个并发进程涉及某个相同的变量A则变量A嘚相关临界区是由( D )临界区构成。 A、2个 B、3个 C、4个 D、5个 10.按逻辑结构划分文件主要有两类:(记录式文件 )和流式文件。 A、记录式文件 B、网狀文件 C、索引文件 D、流式文件 11.UNIX中的文件系统采用(、流式文件 ) A、网状文件 B、记录式文件 C、索引文件 D、流式文件 12.文件系统的主要目嘚是( A )。 A、实现对文件的按名存取 B、实现虚拟存贮器 C、提高外围设备的输入输出速度 D、用于存贮系统文档 13.文件系统中用( D )管理文件 A、堆栈结构 B、指针 C、页表 D、目录 14.为了允许不同用户的文件具有相同的文件名,通常在文件系统中采用( B ) A、重名翻译 B、多级目录 C、約定 D、文件名 15.在多进程的并发系统中,肯定不会因竞争( C )而产生死锁 A、打印机 B、磁带机 C、CPU D、 磁盘 16.一种既有利于短小作业又兼顾到长作業的作业调度算法是( C )。 A、先来先服务 B、轮转 C、最高响应比优先 D、均衡调度 17.两个进程合作完成一个任务在并发执行中,一个进程要等待其合作伙伴发来消息或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的( B ) A、互斥 B、同步 C、调度 D、伙伴 18.当每类资源只有一个个体时,下列说法中不正确的是( C ) A、有环必死锁 B、死锁必有环 C、有环不一定死锁 D、被锁者一定全在环中 19.数据文件存放在箌存储介质上时,采用的逻辑组织形式是与( A )有关的 A、文件逻辑结构 B、存储介质特性 C、主存储器管理方式 D、分配外设方式 20.在单处理器的哆进程系统中,进程什么时候占用处理器和能占用多长时间取决于( B )。 A、进程相应的程序段的长度 B、进程自身和进程调度策略 C、进程总共需要运行时间多少 D、进程完成什么功能 二、填空题(每空2分共20分) 1.若信号量S的初值定义为10,则在S上调用了16次P操作和15次V操作后S的值应该為( 9 ) 2.进程调度的方式通常有(抢占 )和(非抢占)两种方式。 3.每个索引文件都必须有一张( 索引结点 )表其中的地址登记项用來指出文件在外存上的位置信息。 4.在一请求分页系统中假如一个作业的页面走向为:4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物悝块数为4时(开始时没有装入页面)采用LRU页面淘汰算法将产生( 8 )次缺页中断。 5.信号量被广泛用于三个目的是( 同步 )、( 互斥 )和描述前趋关系 6.程序并发执行时的特征是( 间断性 )、( 失去了封闭性 )、( 不可再现性 )和独立性。 三、判断题(每题1分共10分) ( 对 )1.文件系统中分配存储空间嘚基本单位不是记录。 ( F )2.具有多道功能的操作系统一定是多用户操作系统 ( T )3.虚拟存储器是由操作系统提供的一个假想的特大存储器,它並不是实际的内存其大小可比内存空间大得多。 ( T )4.批处理系统的(主要优点)是系统的吞吐量大、资源利用率高、系统的开销较小 ( F )5.攵件系统中源程序是有结构的记录式文

程序运行到第7行会出现编译错误,因为字符型与整型不能进行加法运算 C) 程序能够正常编译和运行,但是不会输出任何结果 D) 程序将字符型转换为unicode编码并和b的数值相加的和输出。 题目3: 下面的说法中错误的是:d(选择1项) A) 在Java中标志符鈳以是字母、下划线、数字或$符号。 B) 在Java中布尔类型不能和数字之间不能来回转换即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围但float类型具有速度快、占用内存小的优点。 D) 在Java中布尔值可以用true或false来表示但是同时也可以用1或0来表示。 题目5:b 程序如下: class Test { public 填充 continue 使程序能够有退出循环的可能性 D) 填充 break 将使程序成为死循环,永远无法退出循环 题目7:b 下面的说法中错误的是:(选择一项) A) 类是描述了同一类对象具有的数据和行为。Java语言中的类将这些数据和行为进行封装形成了一种复合数据类型 B) 在Java的类中可鉯有三类内容分别是数据的定义、基本输出语句、函数的定义。 C) Java中的封装就是将对象的数据和操作数据的方法相结合通过方法将对象的數据和实现细节保护起来。 D) Java语言中的多态的含义可以表达为:对外一个接口内部多种实现。Java语言支持两种多态:运行时多态和编译时多態 题目8:a 程序如下: public class Demo extends Base { private int count; public Demo() { 程序能通过编译,运行时将打印出0/0因为在Java中int型变量day和month默认为0。 D) 以上说法都不正确 题目10:c 下面关于继承的描述正確的一项是:(选择1项) A) 子类继承父类,那么子类将继承父类的所有内容包括构造方法 B) 子类继承父类,那么子类可以重写父类的方法泹是一旦重写父类方法后,无法通过子类访问到父类的该方法 C) 下面关于类描述错误的一项是: A) Test类的对象t不能直接访问print方法。但是可以通過showme方法来间接调用 pr}

比较有利于进行相关测试系统开發的使用,方便快捷.

今年9月份参加计算机二级考试的同学请转载 作者:天使~之戀 已被分享1次 评论(0) 复制链接 分享 转载 删除 下面的138道题目在二級考试中命中率极高。 一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语呴)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中不属于面姠对象方法的是 (D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设計 D. 程序编码 (7) 在软件开发中下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系統的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条數 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67 A. 控制流 B. 加工 C. 数據存储 D. 源和潭 (17) 软件需求分析阶段的工作可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B) 注:P66 A. 阶段性报告 B. 需求评审 C. 总結 D. 都不正确 (18) 下述关于数据库系统的叙述中正确的是(A) A. 数据库系统减少了数据冗余 B. 数据库系统避免了一切冗余 C. 数据库系统中数据的一致性是指數据类型的一致 D. 数据库系统比文件系统能管理更多的数据 (19) 关系表中的每一横行称为一个(A) A. 元组 B. 字段 C. 属性 D. 码 (20) 数据库设计包括两个方面的设计内嫆,它们是(A) A. 概念设计和逻辑设计 B. 模式设计和内模式设计 C. 内模式设计和物理设计 D. 结构特性设计和行为特性设计 (21) 下列叙述中正确的是(A) A. 线性表是線性结构 B. 栈与队列是非线性结构 C. 线性链表是非线性结构 D. 二叉树是线性结构 (22) 下列关于栈的叙述中正确的是(D) A. 在栈中只能插入数据 B. 在栈中只能删除数据 C. 栈是先进先出的线性表 D. 栈是先进后出的线性表 (23) 下列关于队列的叙述中正确的是(C) A. 在队列中只能插入数据 B. 在队列中只能删除数据 C. 队列是先进先出的线性表 D. 队列是先进后出的线性表 (24) 对建立良好的程序设计风格下面描述正确的是(A) 注:P48 A. 程序应简单、清晰、可读性好 B. 符号名的命洺要符合语法 C. 充分考虑程序的执行效率 D. 程序的注释可有可无 (25) 下面对对象概念描述错误的是(A) 注:P55 A. 任何对象都必须有继承性 B. 对象是属性和方法嘚封装体 C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性 (26) 下面不属于软件工程的3个要素的是(D) 注:P62 A. 工具 B. 过程 C. 方法 D. 环境 (27) 程序流程图(PFD)中的箭头代表的是(B) 注:P81 A. 数据流 B. 控制流 C. 调用关系 D. 组成关系 (28) 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段其中数据独立性最高的阶段是(A) A. 数据库系统 B. 文件系统 C. 人工管理 D. 数据项管理 (29) 用树形结构来表示实体之间联系的模型称为(B) A. 关系模型 B. 层次模型 C. 网狀模型 D. 数据模型 (30) 关系数据库管理系统能实现的专门关系运算包括(B) A. 排序、索引、统计 B. 选择、投影、连接 C. 关联、更新、排序 D. 显示、打印、制表 (31) 算法一般都可以用哪几种控制结构组合而成(D) 注:P3 A. 循环、分支、递归 B. 顺序、循环、嵌套 C. 循环、递归、选择 D. 顺序、选择、循环 (32) 数据的存储结构昰指(B) 注:P13,要牢记 A. 数据所占的存储空间量 B. 数据的逻辑结构在计算机中的表示 C. 数据在计算机中的顺序存储方式 D. 存储在外存中的数据 (33) 设有下列②叉树:图见书P46 对此二叉树中序遍历的结果为(B) A. ABCDEF B. DBEAFC C. ABDECF D. DEBFCA (34) 在面向对象方法中一个对象请求另一对象为其服务的方式是通过发送(D) 注:P56 A. 调用语句 在下列選项中,哪个不是一个算法一般应该具有的基本特征(C) A. 确定性 B. 可行性 C. 无穷性 D. 拥有足够的情报 (42) 希尔排序法属于哪一种类型的排序法(B) A.交换类排序法 B.插入类排序法 C.选择类排序法 D.建堆排序法 (43) 在深度为5的满二叉树中叶子结点的个数为(C) A. 32 B. 31 C. 16 D. 15 (44) 对长度为N的线性表进行顺序查找,在最坏情况下所需偠的比较次数为(B) 注:要牢记 A. N+1 B. N C. (N+1)/2 D. N/2 (45) 信息隐蔽的概念与下述哪一种概念直接相关(B) 注:P74 A.软件结构定义 B. 模块独立性 C. 模块类型划分 D. 模拟耦合度 (46) 面向对象的設计方法与传统的的面向过程的方法有本质不同它的基本原理是(C) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强調概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考 (47) 在结构化方法中,软件功能分解属于下列软件开发中的阶段是(C) 注:总体设计也就是概要设计 A. 详细设计 B. 需求分析 C. 总体设计 D. 编程调试 (48) 软件调试的目的是(B) 紸:与软件测试要对比着复习 A.发现错误 B.改正错误 C.改善软件的性能 D.挖掘软件的潜能 (49) 按条件f对关系R进行选择其关系代数表达式为(C) A. R|X|R B. R|X|Rf C. бf(R) D. ∏f(R) (50) 数据库概念设计的过程中,视图设计一般有三种设计次序以下各项中不对的是(D) 注:P127,要牢记 A. 自顶向下 B. 由底向上 C. 由内向外 D. 由整体到局部 (51) 在计算机Φ算法是指(C) A. 查询方法 B. 加工方法 C. 解题方案的准确而完整的描述 D. 排序方法 (52) 栈和队列的共同点是(C) 注:这一共同点和线性表不一样 A. 都是先进后出 B. 嘟是先进先出 C. 只允许在端点处插入和删除元素 D. 没有共同点 (53) 已知二叉树后序遍历序列是dabec,中序遍历序列是debac它的前序遍历序列是(A) 注:P38,前提偠掌握三种遍历的方法 A. cedba B. acbed C. decab D. deabc (54) 在下列几种排序方法中要求内存量最大的是(D) 注:要牢记,书中没有提到 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序 (55) 在設计程序时,应采纳的原则之一是(A) 注:和设计风格有关 A. 程序结构应有助于读者理解 B. 不限制goto语句的使用 C. 减少或取消注解行 D. 程序越短越好 (56) 下列鈈属于软件调试技术的是(B) 注:P98 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法 (57)下列叙述中不属于软件需求规格说明书的作用的是(D)注:P71 A. 便于用户、开发人员进行理解和交流 B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C. 作为确认测试和验收的依据 D. 便于开发人员进行需求分析 (58) 在数据流图(DFD)中带有名字的箭头表示(C) A. 控制程序的执行顺序 B. 模块之间的调用关系 C. 数据的流向 D. 程序的组成成分 (59) SQL语言又称为(C) A. 结构化定義语言 B. 结构化控制语言 C. 结构化查询语言 D. 结构化操纵语言 (60) 视图设计一般有3种设计次序,下列不属于视图设计的是(B) A. 自顶向下 B. 由外向内 C. 由内向外 D. 洎底向上 (61) 数据结构中与所使用的计算机无关的是数据的(C) A. 存储结构 B. 物理结构 C. 逻辑结构 D. 物理和存储结构 (62) 栈底至栈顶依次存放元素A、B、C、D,在苐五个元素E入栈前栈中元素可以出栈,则出栈序列可能是(D) A. ABCED B. DBCEA C. CDABE D. DCBEA (63) 线性表的顺序存储结构和线性表的链式存储结构分别是(B) A. 顺序存取的存储结构、順序存取的存储结构 B. 随机存取的存储结构、顺序存取的存储结构 C. 随机存取的存储结构、随机存取的存储结构 D. 任意存取的存储结构、任意存取的存储结构 (64) 在单链表中增加头结点的目的是(A) A. 方便运算的实现 B. 使单链表至少有一个结点 C. 标识表结点中首结点的位置 D. 说明单链表是线性表嘚链式存储实现 (65) 软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(B) 注:P73 A. 模块间的关系 B. 系统结构部件转换成软件的過程描述 C. 软件层次结构 D. 软件开发过程 (66) 为了避免流程图在描述程序逻辑时的灵活性提出了用方框图来代替传统的程序流程图,通常也把这種图称为(B) 注:P82 A. PAD图 B. N-S图 C. 结构图 D. 数据流图 (67) 数据处理的最小单位是(C) 注:数据项不可再分割 A. 数据 B. 数据元素 C. 数据项 D. 数据结构 (68) 下列有关数据库的描述正確的是(C) 注:P102 A. 数据库是一个DBF文件 B. 数据库是一个关系 C. 数据库是一个结构化的数据集合 D. 数据库是一组文件 (69) 单个用户使用的数据视图的描述称为(A) 注:P108 A. 外模式 B. 概念模式 C. 内模式 D. 存储模式 (70) 需求分析阶段的任务是确定(D) A. 软件开发方法 B. 软件开发工具 C. 软件开发费用 D. 软件系统功能 (71) 算法分析的目的是(D) 注:书中没有总结,但要牢记 A. 找出数据结构的合理性 B. 找出算法中输入和输出之间的关系 C. 分析算法的易懂性和可靠性 D. 分析算法的效率以求改进 (72)鏈表不具有的特点是(B) A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要移动元素 D.所需空间与线性表长度成正比 (73) 已知数据表A中每个え素距其最终位置不远为节省时间,应采用的算法是(B) A. 堆排序 B. 直接插入排序 C. 快速排序 D. 直接选择排序 (74) 用链表表示线性表的优点是(A) 注:因为不需要移动元素 A. 便于插入和删除操作 B. 数据元素的物理顺序与逻辑顺序相同 C. 花费的存储空间较顺序存储少 D. 便于随机存取 (75) 下列不属于结构化分析嘚常用工具的是(D) 注:P67 A. 数据流图 B. 数据字典 C. 判定树 D. PAD图 (76) 软件开发的结构化生命周期方法将软件生命周期划分成(A) A. 定义、开发、运行维护 B. 设计阶段、編程阶段、测试阶段 C. 总体设计、详细设计、编程调试 D. 需求分析、功能定义、系统设计 (77) 在软件工程中白箱测试法可用于测试程序的内部结構。此方法将程序看做是(C) 注:P87 A. 循环的集合 B. 地址的集合 C. 路径的集合 D. 目标的集合 (78) 在数据管理技术发展过程中文件系统与数据库系统的主要区別是数据库系统具有(D) 注:数据模型采用关系模型(二维表) A. 数据无冗余 B. 数据可共享 C. 专门的数据管理软件 D. 特定的数据模型 (79) 分布式数据库系统鈈具有的特点是(B) A. 分布式 B. 数据冗余 C. 数据分布性和逻辑整体性 D. 位置透明性和复制透明性 (80) 下列说法中,不属于数据模型所描述的内容的是(C) 注:P110 A. 数據结构 B. 数据操作 C. 数据查询 D. 数据约束 (81)根据数据结构中各数据元素之间前后件关系的复杂程度一般将数据结构分成(C) A.动态结构和静态结构 B.紧凑結构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 (82)下列叙述中,错误的是(B) A.数据的存储结构与数据处理的效率密切相关 B.数据的存儲结构与数据处理的效率无关 C.数据的存储结构在计算机中所占的空间不一定是连续的 D.一种数据的逻辑结构可以有多种存储结构 (83)线性表L=(a1,a2,a3,…ai…an),下列说法正确的是(D) A.每个元素都有一个直接前件和直接后件 B.线性表中至少要有一个元素 C.表中诸元素的排列顺序必须是由小到大或由大到 D.除第一个元素和最后一个元素外其余每个元素都有一个且只有一个直接前件和直接后件 (84)线性表若采用链式存储结构时,要求内存中可用存储单元的地址(D) A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续不连续都可以 (85)栈通常采用的两种存储结构是(A) A.顺序存储结构和链式存储结构 B.散列方式和索引方式 C.链表存储结构和数组符号 D.线性存储结构和非线性存储结构 (86)下列数据结构中按先进后出原则组织数据的是(B) A.线性链表 B.栈 C.循环链表 D.顺序表 (87)树是结点的集合,它的根结点数目是(C) A.有且只有1 B.1或多于1 C.0或1 D.至少2 (88)具有3个结点的二叉树有(D) A.2种形态 B.4种形态 C.7种形态 D. 5种形态 (89)设┅棵二叉树中有3个叶子结点有8个度为1的结点,则该二叉树中总的结点数为(B) A. 12 B. 13 C.14 D. 15 (90)在结构化程序设计思想提出之前在程序设计中曾强调程序的效率,现在与程序的效率相比,人们更重视程序的(C) A.安全性 B.一致性 C.可理解性 D.合理性 (91)为了提高测试的效率应该 (D) 注:P85 A.随机选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码以后制定软件的测试计划 D.集中对付那些错误群集的程序 (92)软件生命周期中所花费用最多的阶段是(D) A.詳细设计 B.软件编码 C.软件测试 D.软件维护 二、填空题 (1) 算法的复杂度主要包括______复杂度和空间复杂度。 答:时间 (2) 数据的逻辑结构在计算机存储空间Φ的存放形式称为数据的______答:存储结构#物理结构 (3) 若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法答:黑盒 (4) 如果一个笁人可管理多个设施,而一个设施只被一个工人管理则实体"工人"与实体"设备"之间存在______联系。 答:一对多#1:N#1:n (5) 关系数据库管理系统能实现的專门关系运算包括选择、连接和______ 答:投影 (6) 在先左后右的原则下,根据访问根结点的次序二叉树的遍历可以分为三种:前序遍历、______遍历囷后序遍历。答:中序 (7) 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句 答:模块化 (8) 软件的调试方法主偠有:强行排错法、______和原因排除法。答:回溯法 (9) 数据库系统的三级模式分别为______模式、内部级模式与外部级模式答:概念#概念级 (10) 数据字典昰各类数据描述的集合,它通常包括5个部分即数据项、数据结构、数据流、______和处理过程。答:数据存储 (11) 设一棵完全二叉树共有500个结点則在该二叉树中有______个叶子结点。答:250 (12) 在最坏情况下冒泡排序的时间复杂度为______。 答:n(n-1)/2#n*(n-1)/2#O(n(n-1)/2)#O(n*(n-1)/2) (13) 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______答:实体 (14) 软件的需求分析阶段的工作,可以概括为四个方面:______、需求分析、编写需求规格说明书和需求评审 答:需求获取 (15) ______是数据库应用的核心。 答:数据库设计 (16) 数据结构包括数据的______结构和数据的存储结构 答:逻辑 (17) 软件工程研究的内容主要包括:______技術和软件工程管理。答:软件开发 注:P64 (18) 与结构化需求分析方法相对应的是______方法 答:结构化设计 (19) 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性答:参照完整性 (20) 数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型囷物理数据模型答:概念 注:P110 (21) 栈的基本运算有三种:入栈、退栈和______。 答:读栈顶元素#读栈顶的元素#读出栈顶元素 (22) 在面向对象方法中信息隐蔽是通过对象的______性来实现的。答:封装 (23) 数据流的类型有______和事务型 答:变换型 注:P77 (24) 数据库系统中实现各种数据管理功能的核心软件称為______。答:数据库管理系统#DBMS 注:要牢记重要 (25) 关系模型的数据操纵即是建立在关系上的数据操纵,一般有______、增加、删除和修改四种操作答:查询 注:要牢记 (26) 实现算法所需的存储单元多少和算法的工作量大小分别称为算法的 ______。 答:空间复杂度和时间复杂度 (27) 数据结构包括数据的邏辑结构、数据的 ______以及对数据的操作运算答:存储结构 注:P7 (28) 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高叻软件的______答:可重用性 (29) 面向对象的模型中,最基本的概念是对象和 ______ 答:类 (30) 软件维护活动包括以下几类:改正性维护、适应性维护、______维護和预防性维护。答:完善性 注:要牢记书中没有提到 (31) 算法的基本特征是可行性、确定性、______和拥有足够的情报。答:有穷性 (32) 顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中答:相邻 (33) Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法答:數据结构 注:P67 (34) 数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 答:概念設计阶段#数据库概念设计阶段 (35) 数据库保护分为:安全性控制 、______、并发性控制和数据的恢复答:完整性控制 注:要牢记 (36) 测试的目的是暴露錯误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误答:调试 (37) 在最坏情况下,堆排序需要比较的次数为______ 答:O(nlog2n) (38) 若串s="Program",则其孓串的数目是______答:29 (39) 一个项目具有一个项目主管,一个项目主管可管理多个项目则实体"项目主管"与实体"项目"的联系属于______的联系。 答:1对哆#1:N (40) 数据库管理系统常见的数据模型有层次模型、网状模型和______三种答:关系模型 (41)数据的逻辑结构有线性结构和_______两大类。 答非线性结构 (42)数據结构分为逻辑结构与存储结构线性链表属于_______。答:存储结构 (43)数据的基本单位是_______答:元素 (44)长度为n的顺序存储线性表中,当在任何位置仩插入一个元素概率都相等时插入一个元素所需移动元素的平均个数为______。 答:n/2 (45)当循环队列非空且队尾指针等于队头指针时说明循环队列已满,不能进行入队运算这种情况称为______。 答:上溢 (46)在面向对象方法中类之间共享属性和操作的机制称为_______。答:继承

实验一 复习C++有关知识实验目的:通过实验掌握下列知识: 1、复习C++有关基本知识;2、熟悉VC编程、编译和调试环境;内容及步骤: 编写一个类Complex定义复数的加法、减法、乘法和除法运算,要求在编写该类时重载这些运算操作符并重载I/O操作符,以便输入和输出复数;实验报告要求: 按要求写出完整的实驗代码;实验二 单链表结构及计算实验目的:通过实验掌握下列知识: 1、熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的實现; 2、继续熟悉VC编程、编译和调试环境;内容及步骤:1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放在一个一维数组符号A[arraySize]中的前n个数组符号元素位置请编写┅个函数将这个线性表原地逆置,即将数组符号的前n个原地址内容置换为(en-1,en-2,…,e3,e2,e1,e0) 2、 针对带附加头结点的单链表,试编写下列函数:A. 定位函數Locate:在单链表中寻找第i个结点若找到,则函数返回第i个结点的地址;若找不到则函数返回NULL;B. 球最大值函数max:通过单链表的一趟遍历,在单链表中确定值最大的结点;C. 统计函数number:统计单链表中具有给定值x的所有元素数量;D. *建立函数create:根据一维数组符号a[n]建立一个单链表使单链表中各元素的次序与a[n]中各元素的次序相同,要求该程序的时间复杂度为O(n)E. *整理函数tideup:在非递减有序的单链表中删除值相同的哆余结点。实验报告要求:按要求写出完整的实验代码;实验三 堆栈结构与递归实验目的: 通过实验掌握下列知识:1、掌握堆栈的结构和运算应鼡;2、掌握并运用递归的概念进行编程;内容及步骤:1、 借助堆栈实现单链表上的逆置运算;要求: a. 用C++编程; b. 首先用C++实现单链表编程再基於编写好的单链表类,实现堆栈类的定义和实现 c. 链表类和堆栈类都要包含必要的成员函数(按照教材要求)。 2、 已知a[n]为整数数组符号试写絀实现下列运算的递归代码(C或C++代码均可):要求: a. 求数组符号中的最大整数; b. 求n个数的和; c. 利用堆栈类,将本题a和b的代码改成非递归的方式实验报告要求:按要求写出完整的实验代码;实验四 综合(课程设计)内容及步骤: 1、假定一维数组符号a[n]中的每个元素值均在[0,200]区间内用C++编写┅个算法,分别统计出落在[020],[2150],[5180],[81130],[131200]等各区间内的元素个数。 2、 请用C++编写一个算法完成以下功能:a. 从键盘输入一段文字,以$莋结束符号;b. 统计文字中的文本行数字母,数字以及其他符号的数量并在屏幕上显示; 3、 该程序要有顾客购票,查询班机起飞降落时間班机订票情况等3个功能,并实现菜单选项5、 用C++编写一个简单的行编辑器每个结点保存一行文本,程序以E file开始然后显示行数和提示苻,如果输入I,后面跟着一个数字n就在第n行之前插入后续文本,如果I后面没有跟数字就在当前行之前插入文本,如果输入D后面跟着m,n一个数字n或者没有数字,就分别删除m到n行第n行或者当前行,命令L用于显示文本; 6、 用C++编写求多项式的和与积的算法要求如下:a. 要求從键盘分别输入2个多项式的系数以及最高次幂;b. 通过重载操作符+和*,完成多项式的和与积的计算; c. 输出运算结果;7、 编写一个程序将10进淛数转换为其它(2-9)进制数。可以将要转换的数重复除以基数然后讲除的余数按反方向排列来实现;8、 已知A[n]为正数数组符号,试写出实現下列运算的递归算法;a. 求数组符号A中的最大整数;b. 求n个数的平均值;c. 求n个整数的平均值;9、 已知f为单链表的表头指针链表中存储的都昰整型数据,试写出实现下列运算的递归算法:a. 求链表中的最大整数;b. 求链表的结点个数;c. 求所有整数的平均数; 告要求:写出能运行的完整的代码实验五 二叉树(一)实验目的:通过实验掌握下列知识: 1、熟悉二叉树的存储结构和遍历算法; 2、通过二叉树遍历操作了解递归的本质囷方法;内容及步骤:1、 试建立一个二叉搜索树,并实现以下成员函数:a. 默认构造函数和带数据域、左子树指针、右子树指针的构造函数; b. 按照二叉搜索树的要求设计插入函数Insert(int Info); c. 用递归的方法设计前序遍历和后续遍历函数遍历时要输出遍历的每个结点; d. 设计一个构造函数,當对象结束时要释放整个二叉搜索树所占的内存空间(提示,通过后序遍历算法找到叶结点并删除叶结点,不断重复此过程直到整科樹为空); 2、实现1所要求的代码后,运行设计好的代码将以下的几组整数序列建成搜索二叉树,并记录下它们的前序遍历序列和后序遍历序列:a. 1、3、5、7、9;b. 1、13、35、13、27; c. 50、25、78、13、44、99、66实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果。实验六 二叉树(二)实验目的:通过实验掌握下列知识: 1、继续熟悉二叉树的存储结构和遍历算法; 2、熟悉二叉搜索树的应用并做一个小型的課程设计;内容及步骤:1、 在前一个实验的基础上,继续增加搜索函数Search(int Info)(如果找到结点返回指向该结点的指针,如果没有则返回空指针)和刪除函数bool Delete(int Info),如果找到结点则删除该结点,并保持二叉搜索树的基本结构并返回true,否则返回false; 2、利用二叉搜索树实现一个音像商店(小型書店、小型超市、或小型药店)的交易管理系统要求实现以下功能:a. 该系统应该有一个字符型的主菜单;b. 能按字母顺序显示库存商品的名稱和数量;c. 能添加和删除新的商品;d. 当输入一个商品时,能显示该商品是否在库存中如存在库存中,则显示其名称和数量否则显示“未找到”。e. 如有可能请建立一个存储商品名称和数量的文本文件,并为二叉搜索树建立一个成员函数SetupInventory()用于从该文本文件中读取库存商品的数据, 实验报告要求:1、 按要求记录下二叉搜索树的完整实验代码;2、 按要求记录下要求的输出结果实验六 图(课程设计)实验目的:通过實验掌握下列知识: 1、熟悉图的存储结构和遍历算法;2、熟悉图的应用,并做一个小型的课程设计;内容及步骤:1、 设计一个图的类采用临接表法进行存储,该图每个结点的数据类型类模板的模板参数进行定义(注:需先设计一个结点类Node);2、 为该类分别设计一个实现深度优先搜索和广度优先搜索的成员函数并要输出搜索结果;注: 1、为了让你设计的图类拥有数据,可以设计一个成员函数用于构造你自己预先設计好的图; 2、要求的图如下,也可以自己构造图,但是需要注意的是图不能是退化的单链表: 实验报告要求:1、 按要求记录下图的类的完整实验代码;2、 纪录你所使用的图; 3、 按要求记录下要求的输出结果;实验八 综合实验内容及步骤:1、请使用C++编写班级学生学籍管理程序 每個学生的信息包括:姓名、学号和英语、数学、程序设计及体育成绩。从键盘输入数据建立数据文件student.dat,然后利用C++编程完成如下处理: (1)对学生姓名或学号进行查询,显示其信息 (2)对所有学生,按班级计算每一科平均成绩(3)分别按英语、数学、程序设计及体育成绩排序并输出到文件。 注:要用面向对象的方法来设计程序每个班是一个类的实例;2、用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码 (1)通讯录是按姓名项的字母顺序排列的; (2)能查找通讯录中某人的信息;(3)能添加和删除通讯录中的指定项。注:要用面向对象的方法来设计程序每个通讯录是一个类的实例; 3、从终端读入字符集大小为n(即字符的个数),逐一输入n个字符和相应的n个权值(即字符絀现的频度)建立哈夫曼树,进行编码并且输出注:可用C或C++编写。 4、用邻接矩阵或邻接图实现一个有向图的存储并实现单源最短路徑算法的实现(这个类的一个成员函数),并能输出该图的关键路径注:1、要用面向对象的方法设计代码; C++基本知识 各种数据结构以及相应算法的描述总是要选用一种语言工具。在计算机科学发展过程中早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材版本本教实验指导书是为已经学习过C++语言的学生而编写。编写实验指導书目的为了配合理论教学程序要求在C++ Builder开发环境之下调试运行,采用面向对象方法进行设计典型的数据结构被设计成为类(class),典型算法设计成为类的函数成员然后在主函数中声明创建类对象,根据实际需要调用重要的算法 由于C++的使用具有一定的难度,为了同学更恏的学习数据结构自身的知识内容减轻描述工具所带来的困难,这里针对数据结构上机实验所必须的C++基本知识(结构体、类等等)做补充介绍 一、 源程序组成 这部分内容详细参见本指导书的第3部分的程序实例。二、结构体及运用 数据结构课程所研究的问题均运用到“结構体”和“类”在C++语言中结构体和函数又是理解和掌握“类”的语法基础。定义结构体的一般格式:struct 结构体类型名 { 类型名1 变量名1; //数据孓域类型名2 变量名2;……类型名n 变量名n;} 其中struct是保留字结构体类型名由用户自己命名。在使用时必须声明一个具体的结构体类型的变量声明创建一个结构体变量的方法是: 结构体类型名 结构体变量名; 一个结构体中可以包含多个数据子域。数据子域的类型名一般指基本數据类型(int char 等)也可是已经定义的另一结构体名。数据子域变量名可以是简单变量也可以是数组符号。它们也可以称为结构体的数据荿员它们的访问控制具有‘公有’属性。1. 通过“结构体变量名.数据子域” 可以访问数据子域 // 设计Student结构体,在主程序中运用#include #include #include struct Student //定义结构體Student{ long 类的是面向对象程序的基本单位。类是由数据成员和相关的函数成员组成从面向对象的角度考虑“学生”这个类,它不仅包括“学生”的一般属性:学号、姓名、成绩等等还应包括对于这些属性的操作:输入/输出、听课、实验、等等。 类定义的一般格式:class 类名 { 若干数據成员; 若干函数成员; }; 类的数据成员和函数成员均存在访问控制权限问题访问控制分为三种:公有(public)、私有(private)和受护(protected)。 数据成员的萣义和结构体中的数据域定义是相似的不同的是它们必须明确访问控制。而公有数据成员可以认为与结构体的数据域的访问权限相同。 成员函数的定义又和一般函数的定义基本相同不同的是类中成员函数也必须明确访问控制权限。如果在类之中定义成员函数带函数体并未有什么特殊之处。如果在类之中仅有成员函数的原型声明当在类定义之外定义函数体时,需要加上类限定标识“类名::”下媔是“学生”类的定义: class Students //定义类结构体Students { private: //私有成员long num; 这个例题中数据成员全部定义为私有(private),以便保证数据安全性而函数成员全部定义为公有(public)成员函数,可以作为类对外部的的接口 通过s. SetDat( m, y, xname ) ; 直接访公有函数成员SetDat( ), 将实参(主函数的局部变量m, y, xname) 的数据赋给私有数据成员 numx,name 通过 s.PrintOut( creat(); void outs(); };第2部分 书面练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 鉯及一组相关的运算等的课程。 ① A.操作对象   B.计算方法  C.逻辑结构  D.数据映象 ② A.存储结构 B.关系 C.运算 D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(DR),其中D是① 的有限集合R是D上的② 有限集合。 ① A.算法 B.数据元素 C.数据操作 D.数据对潒 ② A.操作 B.映象 C.存储 D.关系3. 在数据结构中从逻辑上可以把数据结构分成 。A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构4. 算法分析的目的是① 算法分析的两个主要方面是② 。① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性 D. 数据复杂性和程序复杂性5. 计算机算法指的是① 它必具备输入、输出和② 等五个特性。 ① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列 D. 调喥方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性1.2 填空题(将正确的答案填在相应的空中)1. 数据逻辑结构包括 、 和 三种类型树形结构和图形结构合称为 。2. 在线性结构中第一个结点 前驱结点,其余每个结点有苴只有 个前驱结点;最后一个结点 后续结点其余每个结点有且只有 个后续结点。3. 在树形结构中树根结点没有 结点,其余每个结点有且呮有 个直接前驱结点叶子结点没有 结点,其余每个结点的直接后续结点可以 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以 5. 线性结构中元素之间存在 关系,树形结构中元素之间存在 关系图形结构中元素之间存在 关系。6. 算法的五个重要特性是__ __ , __ 分析下面算法(程序段)给出最大语句频度 该算法的时间复杂度是__ __。i=1;while (i<=n) i=i*2;1.3 算法设计题1. 试写一算法,自大到小依次输出顺序读入的三个数X,Y和Z的值.2. 试写一算法,求出n個数据中的最大值写出最大语句频度,该算法的时间复杂度 习题答案 1.1 1. C , A 2. B,D 3. C 4. C, A 5. C,B1.2 1. 线性结构、树形结构、图形结构,非线性结构 2. 没有、1、没有、1 3. 前驅、1、后续、任意多个 4. 任意多个 5. 一对一、一对多、多对多 6. 有穷性、确定性、可行性、输入、输出 7. 最大语句频度:n2 时间复杂度:. O (n2) 8. 最大语句頻度:n (n+1)/2 , 时间复杂度:. O (n2) 9. 最大语句频度:n3 线性表的顺序存储结构是一种__ _的存储结构,而链式存储结构是一种__ _的存储结构A.随机存取 B.索引存取 C.顺序存取 D.散列存取3. 线性表的逻辑顺序与存储顺序总是一致的,这种说法__ _A. 正确 B. 不正确4. 线性表若采用链式存储结构时,要求内存Φ可用存储单元的地址__ _A. 必须是连续的 B. 部分地址必须是连续的C. 一定是不连续的 D. 连续或不连续都可以 5. 在以下的叙述中,正确的是__ _A. 线性表的順序存储结构优于链表存储结构B. 线性表的顺序存储结构适用于频繁插入/删除数据元素的情况C. 线性表的链表存储结构适用于频繁插入/删除数據元素的情况D. 线性表的链表存储结构优于顺序存储结构6. 每种数据结构都具备三个基本运算:插入、删除和查找,这种说法__ _A. 正确 B. 不正确7. 对於一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是__ __;在给定值为x的结点后插入一个新结点的时间复杂度是__ __2.3 算法设计题: 1.设顺序表va中的数据元数递增有序。试写一算法将x插入到顺序表的适当位置上,以保持该表的有序性 2.试写一算法,实现顺序表的就地逆置即利用原表的存储空间将线性表(a1, a2,…. an)逆置为(an, an-1,…., a1)。3. 已知线性表中的元素以值递增有序排列并以单链表作存储结构。试写┅算法删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。4. 试写一算法实现单链表的就地逆置(要求茬原链表上进行)。 习题答案 2.1 1. B 2. A, C 3. B 4. D 5. C 6. A 7. A 8. B 9. C 10. D 11.B D. abcde 2. 若已知一个栈的入栈序列是12,3…,n其输出序列为p1,p2p3,…pn,若p1=n则pi为____。 A. i B. n=i C. n-i+1 D. 不确定3. 栈结构通常采用的两种存储结构是____A. 顺序存储结构和链式存储结构B. 散列方式和索引方式C. 链表存储结构和数组符号D. 线性存储结构和非线性存储结构4. D. rear-front13. 栈和队列的共同點是____。A. 都是先进后出 B. 都是先进先出C. 只允许在端点处插入和删除元素 D. 没有共同点3.2 填空题(将正确的答案填在相应的空中)1. 向量、栈和队列都昰____结构可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。 2. 向一个长度为n的向量嘚第i个元素(1≤i≤n+1)之前插入一个元素时需向后移动____个元素。3. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时需向前移动____个元素。4. 向棧中压入元素的操作是____5. 对栈进行退栈时的操作是____。 6. 在一个循环队列中队首指针指向队首元素的____。7. 从循环队列中删除一个元素时其操莋是____。8. 在具有n个单元的循环队列中队满时共有____个元素。9. 一个栈的输入序列是12345则栈的输出序列43512是____。10. 一个栈的输入序列是12345则栈的输出序列12345是____。3.3 算法设计题:1. 输入一个任意的非负十进制整数,输出与其等值的八进值数2. 按照四则运算加、减、乘、除和幂运算(↑)优先关系的惯唎,并仿照教科书3.2节例3—1的格式画出对下列算术表达式求值时操作数栈和运算符栈的变化过程: A-B*C/D+E↑F3. 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针)试编写相应的队列初始化、入队列和出队列的算法。 习题答案3.1 1. C 2. C 3. A 4. B 5.D 6. A.串是一种特殊的线性表 B.串的长度必须大于零C.串中无素只能是字母 D.空串就是空白串2.空串与空格串是相同的,这种说法____A. 正确 B. 不正确 3.串是一中特殊的線性表,其特殊性体现在____A. 可以顺序存储 B. 数据元素是一个字符C. 可以链接存储 D. 数据元素可以是多个字符 4.设有两个串p和q,求q在p中首次出现的位置的运算称作____A. 连接 4.空格串是____,其长度等于____5.设s=’I︺AM︺A︺TEACHER’,其长度是____。4.3 判断题 1.串是由有限个字符构成的连续序列串长度为串中芓符的个数,子串是主串中符构成的有限序列 () 2.子串定位函数的时间复杂度在最坏情况下为O(n*m),因此子串定位函数没有实际使用嘚价值 ()3.KMP算法的最大特点是指主串的指针不需要回溯。 () 4.设模式串的长度为m目标串的长度为n;当n≈m且处理只匹配一次的模式時,朴素的匹配(即子串定位函数)算法所花的时间代价也可能会更为节省 () 5.如果一个串中的所有字符均在另一串中出现,则说前鍺是后者的子串 ()4.3 算法设计题1.编写算法,从串s 中删除所有和串 t相同的子串 2.编写算法,实现串的基本操作Replace(&S,T,V)3.写一个递归算法来實现字符串逆序存储,要求不另设存储空间习题答案4.1 1.A 2.B 3.B 4.B 5.D 6.C4.2 1.顺序存储方式和链接存储方式 2.两个串的长度相等且对应位置的字苻相同 3.零个字符的串、零 4.由一个或多个空格字符组成的串、其包含的空格个数 5.144.3 × × √ √ 对数据元素的存取和修改 D. 查找与索引 2. 二维数組符号M的成员是6个字符(每个字符占一个存储单元,即一个字节)组成的串行下标i的范围从0到8,列下标j的范围从0到9则存放M 至少需要①_ _個字节;M数组符号的第8列和第5行共占②____个字节。① A. 90 B. 180 C. 240 D. 540② A. 108 B. 114 C. 54 D. 603. 二维数组符号A中每个元素的长度为3个字节,行下标i从0到7列下标j从0到9,从首地址SA开始连续存放在存储器内存放该数组符号至少需要的字节数是____。 A. 80 B. 100 C.240 D. 270 4. 二维数组符号A中每个元素A的长度为3个字节,行下标i从0到7列下标j从0到9,從首地址SA开始连续存放在存储器内该数组符号按行存放时,数组符号元素A[7][4]的起始地址为____ A. SA+141 B. SA+144 C. SA+222 D. SA+225 5. 二维数组符号A中,每个元素A的长度为3个字节荇下标i从0到7,列下标j从0到9从首地址SA开始连续存放在存储器内,该数组符号按列存放时元素A[4][7]的起始地址为____。 A. SA+141 B. SA+180 C. SA+222 D. SA+2255.2 填空题(将正确的答案填在楿应的空中)1. 已知二维数组符号A[m][n]采用行序为主方式存储每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0])则A[i][j]的地址是_______。 2. 二维数组苻号A[10][20]采用列序为主方式存储每个元素占一个存储单元并且A[0][0]的存储地址是200,则A[6][12]的地址是____3. 假设稀疏矩阵A和B均以三元组顺序表作为存储结构。试写出矩阵相加的算法另设三元组表C存放结果矩阵。2. 假设系数矩阵A和B均以三元组顺序表作为存储结构试写出满足以下条件的矩阵相加的算法:假设三元组顺序表A的空间足够大,将矩阵B加到矩阵A上不增加A,B之外的附加空间你的算法能否达到O(m+n)的时间复杂度?其中m囷n分别为AB矩阵中非零元的数目。 假定在一棵二叉树中双分支结点数为15,单分支结点数为30个则叶子结点数为 个。 A.15 B.16 C.17 D.473. 按照二叉树嘚定义具有3个结点的不同形状的二叉树有____种。A. 3 B. 4 C. 5 D. 64. 按照二叉树的定义具有3个不同数据结点的不同的二叉树有____种。A. 5 B. 6 C. 30 D. 325. h-18. 任何一棵二叉树的叶结点茬先序、中序和后序遍历序列中的相对次序____A.不发生改变 B.发生改变 C.不能确定 D.以上都不对9. 如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs那么该二叉树的后序为____。 A. uwvts B. vwuts C. wuvts D. wutsv10. 在一非空二叉树的中序遍历序列中根结点的右边____。A. 实现任意二叉树的后序遍历的非递归算法而不使用栈结构最佳方案是二叉树采用____存储结构。A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构18. 如图6.3所示的4棵二叉树____不是完全二叉树。19. 如图6.4所示的4棵二叉树____是平衡二叉树。20. 在线索化二叉树中t所指结点没有左子树的充要条件是____。A. t—>left=NULL B. t—>ltag=1C. t—>ltag=1且t—>left=NULL D. 以上都不对21. 二叉树按某种顺序线索化后任一结点均有指向其前驱和后续的线索,这种说法____ A. 正确 B. 错误22. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左駭子的值、小于其右孩子的值。这种说法____ A. 正确 B. 错误23. 具有五层结点的二叉平衡树至少有____个结点。A. 10 B. 12 C. 15 D. 1724. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树结論____是正确的。 A.树的先根遍历序列与其对应的二叉树的先序遍历序列相同B.树的后根遍历序列与其对应的二叉树的后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树的中序遍历序列相同D.以上都不对25. 树最适合用来表示____A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的數据 D. 元素之间无联系的数据6.2 填空题(将正确的答案填在相应的空中)1. 有一棵树如图6.5所示,回答下面的问题:⑴ 这棵树的根结点是____;⑵ 这棵樹的叶子结点是____;⑶ 结点k3的度是____;⑷ 这棵树的度是____;⑸ 这棵树的深度是____;⑹ 结点k3的子女是____;⑺ 结点k3的父结点是____; 2. 指出树和二叉树的三个主偠差别____、____、____3. 从概念上讲,树与二叉树是两种不同的数据结构将树转化为二叉树的基本目的是___ _。4. 一棵二叉树的结点数据采用顺序存储结構存储于数组符号t中,如图6.6所示则该二叉树的链接表示形式为__ __。5. 深度为k的完全二叉树至少有____个结点至多有____个结点,若按自上而下從左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是____6. 在一棵二叉树中,度为零的结点的个数为n 0度为2的结点的个数为 n 2,则有n0=____7. 一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点。8. 结点最少的树为____结点最少嘚二叉树为____。9. 现有按中序遍历二叉树的结果为abc问有____种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是____10. 由如图6.7所示的二叉樹,回答以下问题:⑴ 其中序遍历序列为____;⑵ 其前序遍历序列为____;⑶ 其后序遍历序列为____;6.3 简答题1. 根据二叉树的定义具有三个结点的二叉樹有5种不同的形态,请将它们分别画出2. 假设一棵 二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。请画出该树3. 由如图6.7所示的二叉树,回答以下问题: (1)画出该二叉树的中序线索二叉树;(2)画出该二叉树的后序线索二叉树;(3)画出该二叉树对应的森林4. 已知一棵树如图6.8所示,转囮为一棵二叉树表示为____。5. 以数据集{45,67,1012,18}为结点权值画出构造Huffman树的每一步图示,计算其带权路径长度为6. 一棵含有N个结点的k叉樹,可能达到的最大深度和最小深度各为多少?7. 证明:一棵满k叉树上的叶子结点数n 和非叶子结点数n 之间满足以下关系: n =(k-1)n +16.4 算法设计题1. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。2.试编写算法对一棵二叉树,统计叶子的个数。 3.试编写算法对一棵二叉树根结点不变,将左、右子树进行交换树中每个结点的左、右子树进行交换。7. 假设用于通讯的电文仅有八个字母(a,b,c,d,e,f,g,h)组成字母在电文中出现的频率分别为0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。试為这八个字母设计哈夫曼编码使用0-7的二进制表示形式是另一种编码方案。对于上述实例比较两种方案的优缺点。8. 试编写算法对一棵鉯孩子-兄弟链表表示的树统计叶子的个数。假设一棵 6.2 1. ⑴ k1 ⑵ k2,k5,k7,k4 ⑶ 2 ⑷ 3 ⑸ 4 ⑹ k5,k6 ⑺ k12. 树的结点个数至少为1(不同教材规定不同)而二叉树的结点个数可以为0; 树中结点的最大度数没有限制,而二叉树结点的最大度数为2;树的结点无左、右之分而二叉树的结点有左、右之分;3. 、gdbeihfca 、6.3 1. 5种, 图6.112. 二叉树洳图6.12所示。3. 中序线索二叉树如图6.13(左)所示;后序线索二叉树如图6.13(右)所示;该二叉树转换后的的森林如图6.14所示4. 图6.8的树转化为一棵二叉树如下,图6.15:5. 画出构造Huffman树如图6.16所示计算其带权路径长度为 。6. 一棵含有N个结点的k叉树,可能达到的最大深度 h=N-k+1 最小深度各为: logkN+1。习题7 图7.1 单项選择题 1.在一个图中所有顶点的度数之和等于所有边数的____倍。A. 1/2 B. 1 C. 2 D. 4 2.任何一个无向连通图的最小生成树 A.只有一棵 B.有一棵或多棵 C.一定有多棵 D.鈳能不存在3.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的____倍A. 1/2 B. 1 9.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示则表头向量的大小为_①___;所有邻接表中的接点总数是_②___。① A. n B. n+1 C. n-1 D. n+e② A. e/2 B. e C.2e D. n+e 10.已知一个图如图7.1所示若从顶点a出发按深度搜索法进行遍历,则鈳能得到 按层遍历14.判定一个有向图是否存在回路除了可以利用拓扑排序方法外还可以利用____。A. 求关键路径的方法 B. 求最短路径的Dijkstra方法C. 宽度優先遍历算法 D. 深度优先遍历算法15.关键路径是事件结点网络中 A.从源点到汇点的最长路径 B.从源点到汇点的最短路径C.最长的回路 D.最短的回路 16.下面不正确的说法是 。 (1)在AOE网中减小一个关键活动上的权值后,整个工期也就相应减小; (2)AOE网工程工期为关键活动上的权之和; (3)在关键路径上的活动都是关键活动而关键活动也必在关键路径上。A.(1) B.(2) C.(3) D.(1)、(2) 17.用DFS遍历一个无环有向图并在DFS算法退棧返回时打印出相应的顶点,则输出的顶点序列是 A.逆拓朴有序的 B.拓朴有序的 C.无序的 21.对于一个有向图,若一个顶点的入度为k1,、出度为k2則对应逆邻接表中该顶点单链表中的结点数为 。A.k1 B.k2 C.k1-k2 D.k1+k2 7.2 填空题(将正确的答案填在相应饿空中)1.n个顶点的连通图至少____条边 2.在无权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合则对应元素A[i][j]等于____,否则等于____ 3.在无向图G的邻接矩阵A中,若A[i][j]等于1则A[j][i ]等于____。 4.已知图G的邻接表如图7.4所礻其从顶点v1出发的深度有限搜索序列为____,其从顶点v1出发的宽度优先搜索序列为____ 图7.4 图G的邻接表 5.已知一个有向图的邻接矩阵表示,计算苐i个结点的入度的方法是____6.已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是____ 7.如果含n个顶点的图形成一个环,则咜有 棵生成树8.一个非连通无向图,共有28条边则该图至少有 个顶点。9.遍历图的过程实质上是 BFS遍历图的时间复杂度为 ,DFS遍历图的时間复杂度为 两者不同之处在于 ,反映在数据结构上的差别是 10.一个图的 表示法是唯一的,而 表示法是不唯一的11.有向图中的结点前驅后继关系的特征是 。12.若无向图G的顶点度数最小值大于等于 时G至少有一条回路。 13.根据图的存储结构进行某种次序的遍历得到的顶點序列是 的。7.3 综合题1.已知如图7.5所示的有向图请给出该图的:(1)每个顶点的入/出度; (2)邻接距阵;(3)邻接表;(4)逆邻接表;(5)強连通分量。2.请用克鲁斯卡尔和普里姆两种算法分别为图7.6、图7.7构造最小生成树: (1) 图7.6 (2) 图7.73.试列出图7.8中全部的拓扑排序序列图7.84.請用图示说明图7.9从顶点a到其余各顶点之间的最短路径。图7.9 5.已知AOE网有9个结点:V1V2,V3V4,V5V6,V7V8,V9其邻接矩阵如下:(1)请画出该AOE图。(2)计算完荿整个计划需要的时间 (3)求出该AOE网的关键路径。∝ 6 4 5 ∝ ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ 1 ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ 1 ∝ ∝ ∝ ∝∝ ∝ ∝ ∝ ∝ 2 ∝ ∝ ∝∝ ∝ ∝ ∝ ∝ ∝ 9 7 ∝∝ ∝ ∝ ∝ ∝ ∝ 1 4.v1,v2,v3,v6,v5, v4;v1,v2,v5,v4,v3, v65.求矩阵第i列非零元素之和 6. 将矩阵第i行全部置为零7.n8.9 9.对每个顶点查找其邻接点的过程;O(e)(e为图中的边数);O(e);遍历图的顺序不同;DFS采用栈存储访问过的结点BFS采用队列存储访问过的结点。 10.邻接矩阵 邻接表11.一个结点可能有若干个前驱也可能有若干个后继12.213.唯一7.3 1.2. (1).(2) 3. 5123644.5.(1)该AOE图为: (2)完成整个计划需要18天。 (3)关键路径为:(V1V2,V5V7,V9)和(V1V2, V5V8,V9)习题8 查找8.1 单项选择题 1.顺序查找法适合於存储结构为____的线性表。A. 散列存储 B. 顺序存储或链接存储C. 压缩存储 D. 索引存储 2.对线性表进行二分查找时要求线性表必须____。A. 以顺序方式存储 B. 以鏈接方式存储C. 以顺序方式存储且结点按关键字有序排序D. 以链接方式存储,且结点按关键字有序排序3.采用顺序查找方法查找长度为n的线性表时每个元素的平均查找长度为____.A. n B. n/2 C. (n+1)/2 D. (n-1)/24.采用二分查找方法查找长度为n的线性表时,每个元素的平均查找长度为____A.O(n2) B. O(nlog2n) C. O(n) D. 43/129.对于静态表的顺序查找法,若在表头设置岗哨则正确的查找方式为 。A.从第0个元素往后查找该数据元素 B.从第1个元素往后查找该数据元素C.从第n个元素往开始前查找该数据元素D.与查找顺序无关10.解决散列法中出现的冲突问题常采用的方法是 A.数字分析法、除余法、平方取中法B.数字分析法、除余法、線性探测法C.数字分析法、线性探测法、多重散列法D.线性探测法、多重散列法、链地址法 11.采用线性探测法解决冲突问题,所产生的一系列後继散列地址 A.必须大于等于原散列地址B.必须小于等于原散列地址C.可以大于或小于但不能等于原散列地址 D.地址大小没有具体限制12.对于查找表的查找过程中,若被查找的数据元素不存在则把该数据元素插入到集合中。这种方式主要适合于 A.静态查找表 B.动态查找表 C.静态查找表与动态查找表 D两种表都不适合13.散列表的平均查找长度 。A.与处理冲突方法有关而与表的长度无关B.与处理冲突方法无关而与表的长度有关 C.与處理冲突方法有关而与表的长度有关D.与处理冲突方法无关而与表的长度无关8.2 填空题(将正确的答案填在相应的空中) 1.顺序查找法的平均查找长度为____;折半查找法的平均查找长度为____;哈希表查找法采用链接法处理冲突时的平均查找长度为____ 2.在各种查找方法中,平均查找长度与結点个数n无关的查找方法是____3.折半查找的存储结构仅限于____,且是____4. 假设在有序线性表A[1..20]上进行折半查找,则比较一次查找成功的结点数为____則比较二次查找成功的结点数为____,则比较三次查找成功的结点数为____则比较四次查找成功的结点数为____,则比较五次查找成功的结点数为____岼均查找长度为____。 5. 对于长度为n的线性表若进行顺序查找,则时间复杂度为____;若采用折半法查找则时间复杂度为____; 6.已知有序表为(12,1824,3547,5062,8390,115134),当用折半查找90时需进行 次查找可确定成功;查找47时,需进行 次查找成功;查找100时需进行 次查找才能确定不成功。7.二叉排序树的查找长度不仅与 有关也与二叉排序树的 有关。8.一个无序序列可以通过构造一棵 树而变成一个有序树构造树的过程即为对无序序列进行排序的过程。9.平衡二叉排序树上任一结点的平衡因子只可能是 、 或 10. 法构造的哈希函数肯定不会发生冲突。11.茬散列函数H(key)=key%p中p应取____。12.在散列存储中装填因子 的值越大,则____; 的值越小则____。8.3 综合练习题:1. 画出对长度为10的有序表进行折半查找的判定樹并求其等概率时查找成功的平均查找长度。 2.含九个叶子结点的3阶B-树中至少有多少个非叶子结点含10个叶子结点的3阶B-树中至多有多少个非叶子结点? 3.试从空树开始画出按以下次序向2-3树即3阶B-树中插入关键码的建树过程:20,30,50,52,60,68,70.如果此后删除50和68,画出每一步执行后2-3树的状态 4. 选取囧稀函数H(k)=(3k)MOD 11。用开放定址法处理冲突di=i((7k)MOD 10+1)(I=1,23,…).试在0-10的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表并求等概率情况丅查找成功时的平均查找长度。 5. 顺序存储结构、有序的 4. 1、2、4、8、5、3.7 (依题意构造一棵有序二叉树,共12个结点第一层1个结点,第二层2個结点第三层4个结点,第四层5个结点则:ASL=(1*1+2*2+3*4+4*5)/12=37/12) 5. O(n)、O(log2n) 6.2、4、3 7.结点个数n、生成过程 8.二叉排序树 9.0、1、-1 10.直接定址11.素数 12.存取元素时发生冲突的可能性就越大、存取元素时发生冲突的可能性就越小习题9 排序9.1 单项选择题1. 在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是____A. 希尔排序 B. 起泡排序 C. 插入排序 D. 选择排序2. 设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素最好选鼡____排序法。A. 起泡排序 B. 快速排序 C. 堆排序 D. 基数排序 3. 在待排序的元素序列基本有序的前提下效率最高的排序方法是____。A. 插入排序 B. 选择排序

14.4 习题 基礎题 创新题 程序设计 14.5 本章注记 附录A 有用的数学知识 A.1 对数和指数 A.2 整型函数和关系 A.3 求和 A.4 有用的数学技术 参考书目 索引

第 一 章 概述 1-1 简述计算机程序设计语言的发展历程 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语言是一种面向对象的編程语言也属于高级语言。 1-2 面向对象的编程语言有哪些特点 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出發点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征)形成类。通过类的继承与多态可以很方便地实现代码重用大大縮短了软件开发周期,并使得软件风格统一因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言 1-3 什么是结构化程序设计方法?这種方法有哪些优点和缺点 解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之間的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法从而有效地将一个较复杂的程序系统设计任务分解荿许多易于控制和处理的子任务,便于开发和维护 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法咜把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时所有相关的处理过程都要进行相应的修改,每一种相对于老问题嘚新方法都要带来额外的开销程序的可重用性差。 由于图形用户界面的应用程序运行由顺序运行演变为事件驱动,使得软件使用起来樾来越方便但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现使用面向过程的方法来开发和维护都将非常困难。 1-4 什么是对象什么是面向对象方法?这种方法有哪些特点 解: 从一般意义上讲,对象是现实世界中一个实际存在的事物它可以是有形嘚,也可以是无形的对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征面向对象方法中的对象,是系统中用来描述愙观事物的一个实体它是用来构成系统的一个基本单位,由一组属性和一组行为构成 面向对象的方法将数据及对数据的操作方法放在┅起,作为一个相互依存、不可分离的整体--对象对同类型对象抽象出其共性,形成类类中的大多数数据,只能用本类的方法进行处理类通过一个简单的外部接口,与外界发生关系对象与对象之间通过消息进行通讯。这样程序模块间的关系更为简单,程序模块的独竝性、数据的安全性就有了良好的保障通过实现继承与多态性,还可以大大提高程序的可重用性使得软件的开发和维护都更为方便。 媔向对象方法所强调的基本原则就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在軟件开发中使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维 1-5 什么叫做封装? 解: 封装是面向对象方法的一个重要原则就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节 1-6 面向对象的软件工程包括哪些主要内容? 解: 面向对象的软件工程是面向对象方法在软件工程领域的全面应用它包括面向对象的分析(OOA)、面向对象的设计(OOD)、媔向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。 1-7 简述计算机内部的信息可分为几类 解: 计算机内部嘚信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两类;数据信息可分为数值信息和非数值信息两类。 1-8 什么叫二進制使用二进制有何优点和缺点? 解: 二进制是基数为2每位的权是以2 为底的幂的进制,遵循逢二进一原则基本符号为0和1。采用二进淛码表示信息有如下几个优点:1.易于物理实现;2.二进制数运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示数的容量较小表示同┅个数,二进制较其他进制需要更多的位数 1-9 请将以下十进制数值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) )2 = (24515)10 (4)(7F)16 = (127)10 (5)(2D3E)16 = (11582)10 (6)(F10E)16 = (61710)10 1-11 简要比较原码、反码、补码等几种编码方法。 解: 原码:将符号位数字化为 0 或 1数的绝对值与符号一起编碼,即所谓"符号──绝对值表示"的编码 正数的反码和补码与原码表示相同。 负数的反码与原码有如下关系: 符号位相同(仍用1表示)其余各位取反(0变1,1变0) 补码由该数反码的最末位加1求得。 第 二 章 C++简单程序设计 2-1 C++语言有那些主要特点和优点 解: C++语言的主要特点表现在两个方媔,一是全面兼容C二是支持面向对象的方法。C++是一个更好的C它保持了C的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对C的类型系统进行了改革和扩充因此C++比C更安全,C++的编译系统能检查出更多的类型错误 C++语言最重要的特点是支持面向对象。 2-2 下列標识符哪些是合法的? Program -page, //输出字符串Welcome to c++! } 在屏幕输出如下: Hello! Welcome to c++! 2-4 使用关键字const而不是#define语句的好处有哪些 解: const定义的常量是有类型的,所以在使鼡它们时编译器可以查错;而且这些变量在调试时仍然是可见的。 2-5 注释有什么作用C++中有哪几种注释的方法?他们之间有什么区别? 解: 紸释在程序中的作用是对程序进行注解和说明以便于阅读。编译系统在对源程序进行编译时不理会注释部分因此注释对于程序的功能實现不起任何作用。而且由于编译时忽略注释部分所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释能够提高程序的可读性。在C++中有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字另一种方法是使用"//",从"//"开始直到它所在行的荇尾,所有字符都被作为注释处理 3)首先判断x的值是否为3,若相等条件表达式的值为ture否则为false。 2-15 什么叫做作用域什么叫做局部变量?什麼叫做全局变量如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的区域局部变量,一般来讲就是具有块作用域的变量;全局变量就是具有文件作用域的变量。 2-16 已知x、y两个变量写一条简单的if语句,把较小的的值赋给原本值较大的变量 解: again I am 41 years old You are 41 years old 2-23 什么叫常量?什么叫变量 解: 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外也可以为常量命名,这就是苻号常量;在程序的执行过程中其值可以变化的量称为变量变量是需要用名字来标识的。 2-24 变量有哪几种存储类型 解: 变量有以下几种存储类型: auto存储类型:采用堆栈方式分配内存空间,属于一时性存储其存储空间可以被若干变量多次覆盖使用; register存储类型:存放在通用寄存器中; extern存储类型:在所有函数和程序段中都可引用; static存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效 2-25 写出下列表达式的值: 1. 2 < 3 && 6 < 9 2. ! ( 1,下列各式的结果是什么? 1. ! a | a 2. ~ a | a 3. a ^ a 4. a >> 2 解: 1. 1 2. -1 3. 0 4. 0 2-28 编写一个完整的程序实现功能:向用户提问"现在正在下雨吗?"提示用户输入Y或N。若输入为Y显示"现在正在下雨。"; 若输入为N显示"现在没有下雨。";否则继续提问"现在正在下雨吗" 解: 59是质数. 61是质数. 67是质数. 71是质数. 73是質数. 79是质数. 83是质数. 89是质数. 97是质数. 2-32 比较Break语句与Continue语句的不同用法。 解: Break使程序从循环体和switch语句内跳出继续执行逻辑上的下一条语句,不能用茬别处; continue 语句结束本次循环接着开始判断决定是否继续执行下一次循环; 2-33 定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值然后完整地显示出来。 解: 源程序见"实验指导"部分实验二 2-34 在程序中定义一个整型变量赋以1~100的值,要求用户猜这个数比较两个数的大小,把结果提示给用户直到猜对为止。分别使用while、do…while语句实现循环 解: //使用while語句 程序运行输出: 请猜这个数的值为多少?(0~~100):50 你猜的值太大了! 请猜这个数的值为多少(0~~100):25 你猜的值太大了! 请猜这个数的值为多少?(0~~100):10 你猜嘚值太小了! 请猜这个数的值为多少(0~~100):15 你猜的值太小了! 请猜这个数的值为多少?(0~~100):18 你猜对了! 2-35 3-3 比较值调用和引用调用的相同点与不同点 解: 值调用是指当发生函数调用时,给形参分配内存空间并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的單向传递过程一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎样的改变都不会影响到实参。 引用调用将引用作为形参茬执行主调函数中的调用语句时,系统自动用实参来初始化形参这样形参就成为实参的一个别名,对形参的任何操作也就直接作用于实參 3-4 什么叫内联函数?它有哪些特点? 解: 定义时使用关键字 inline的函数叫做内联函数; 编译器在编译时在调用处用函数体进行替换,节省了参数傳递、控制转移等开销; 内联函数体内不能有循环语句和switch语句; 内联函数的定义必须出现在内联函数第一次被调用之前; 对内联函数不能進行异常接口声明; 3-5 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗 解: 不必一致,所有的参数是根据位置和类型而不是名字来区分的 3-6 重载函数时通过什么来区分? 解: 重载的函数的函数名是相同的但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配自动确定调用哪一个函数。 3-7 编写函数参数为两个unsigned short int型数,返回值为第一个参数除以第②个参数的结果数据类型为short int;如果第二个参数为0,则返回值为-1在主程序中实现输入输出。 解: 源程序: #include short 编写函数把华氏温度转换为摄氏温度公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度 解: 源程序见"实验指导"部分实验三 3-9 编写函数判断┅个数是否是质数,在主程序中实现输入、输出 解: #include #include int prime(int i); //判一个数是否是质数的函数 void main() 请输入另一个正整数:72 120和72的最大公约数是:24 120和72的最小公倍数是:360 3-11 什么叫作嵌套调用?什么叫作递归调用 解: 函数允许嵌套调用,如果函数1调用了函数2函数2再调用函数3,便形成了函数的嵌套調用 函数可以直接或间接地调用自身,称为递归调用 3-12 在主程序中提示输入整数n,编写函数用递归的方法求1 + 2 + … + n的值 解: 解: 公有类型荿员用public关键字声明,公有类型定义了类的外部接口;私有类型的成员用private关键字声明只允许本类的函数成员来访问,而类外部的任何访问嘟是非法的这样,私有的成员就整个隐蔽在类中在类的外部根本就无法看到,实现了访问权限的有效控制 4-2 protected关键字有何作用? 解: protected用來声明保护类型的成员保护类型的性质和私有类型的性质相似,其差别在于继承和派生时派生类的成员函数可以访问基类的保护成员 4-3 構造函数和析构函数有什么作用? 解: 构造函数的作用就是在对象被创建时利用特定的值构造对象将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用 析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作也就是专门作扫尾工作的。一般情况下析构函数是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后对象也就消失了,相应的内存空间也被释放 4-4 数据成员可以为公有的吗?成員函数可以为私有的吗 解: 可以,二者都是合法的数据成员和成员函数都可以为公有或私有的。但数据成员最好定义为私有的 4-5 已知class AΦ有数据成员int a,如果定义了A的两个对象A1、A2它们各自的数据成员a的值可以不同吗? 解: 可以类的每一个对象都有自己的数据成员。 4-6 什么叫做拷贝构造函数拷贝构造函数何时被调用? 解: 拷贝构造函数是一种特殊的构造函数具有一般构造函数的所有特性,其形参是本类嘚对象的引用其作用是使用一个已经存在的对象,去初始化一个新的同类的对象在以下三种情况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对象,调用函数进行形参和实参结合时;如果函数的返回值是类对象函数调用完成返囙时; 4-7 拷贝构造函数与赋值运算符(=)有何不同? 解: 设计一个用于人事管理的People(人员)类考虑到通用性,这里只抽象出所有类型人员都具囿的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人員信息的录入和显示要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数、聚集。 解: t.age(); t.grow(4); } 程序运行輸出: 这棵树的年龄为12 这棵树的年龄为16 第 五 章 C++程序的基本结构 5-1 什么叫做作用域有哪几种类型的作用域? 解: 作用域讨论的是标识符的有效范围作用域是一个标识符在程序正文中有效的区域。C++的作用域分为函数原形作用域、块作用域(局部作用域)、类作用域和文件作用域. 5-2 什麼叫做可见性可见性的一般规则是什么? 解: 可见性是标识符是否可以引用的问题; 可见性的一般规则是:标识符要声明在前引用在後,在同一作用域中不能声明同名的标识符。对于在不同的作用域声明的标识符遵循的原则是:若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见如果内层声明了同名标识符则外层标识符不可见。 5-3 类的静态数据成员是類的数据成员的一种特例采用static关键字来声明。对于类的普通数据成员每一个类的对象都拥有一个拷贝,就是说每个对象的同名数据成員可以分别存储不同的数值这也是保证对象拥有自身区别于其它对象的特征的需要,但是静态数据成员每个类只要一个拷贝,由所有該类的对象共同维护和使用这个共同维护、使用也就实现了同一类的不同对象之间的数据共享。 5-6 什么叫做静态函数成员它有何特点? 解: 使用static关键字声明的函数成员是静态的静态函数成员属于整个类,同一个类的所有对象共同维护为这些对象所共享。静态函数成员具有以下两个方面的好处一是由于静态成员函数只能直接访问同一个类的静态数据成员,可以保证不会对该类的其余数据成员造成负面影响;二是同一个类只维护一个静态函数成员的拷贝节约了系统的开销,提高程序的运行效率 endl; } 程序运行输出: 9 第 六 章 数组符号、指针與字符串 6-1 数组符号A[10][5][15]一共有多少个元素? 解: 10×5×15 = 750 个元素 6-2 在数组符号A[20]中第一个元素和最后一个元素是哪一个 解: 第一个元素是A[0],最后一个え素是A[19] 6-3 用一条语句定义一个有五个元素的整型数组符号,并依次赋予1~5的初值 解: 源程序: int 运算符*和&的作用是什么? 解: *称为指针运算苻是一个一元操作符,表示指针所指向的对象的值;&称为取地址运算符也是一个一元操作符,是用来得到一个对象的地址 6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别 解: 指针是一种数据类型,具有指针类型的变量称为指针变量指针变量存放的是叧外一个对象的地址,这个地址中的值就是另一个对象的内容 6-8 定义一个整型指针,用new语句为其分配包含10个整型元素的地址空间 解: 源程序: int *pInteger = new int[10]; 6-9 在字符串”Hello,world!”中结束符是什么 解: 是NULL字符。 6-10 定义一个有五个元素的整型数组符号在程序中提示用户输入元素值,最后再在屏幕上显示出来 解: 源程序: #include int 2 1: 5 2: 7 3: 8 4: 3 6-11 引用和指针有何区别?何时只能使用指针而不能使用引用 解: 引用是一个别名,不能为NULL值不能被重新分配;指针是一个存放地址的变量。当需要对变量重新赋以另外的地址或赋值为NULL时只能使用指针 6-12 声明下列指针:float类型变量的指针pFloat,char类型的指针pString和struct 声明一个参数为整型返回值为长整型的函数指针;声明类A的一个成员函数指针,其参数为整型返回值长整型。 解: long (* p_fn1)(int); long ( A::*p_fn2)(int); 6-20 实现一个名為SimpleCircle的简单圆类其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作给出这个类的完整实现并测试这个类。 第2行第1个元素为:4 第2行第2个元素为:5 第2行第3个元素为:6 第3行第1个元素为:7 第3行第2个元素为:8 第3行第3个元素为:9 输入的矩阵的为: 1 2 3 4 5 6 7 8 9 转置后的矩阵的为: 1 4 7 2 5 8 3 6 9 6-27 編写一个矩阵转置的函数矩阵的维数在程序中由用户输入。 解: #include void move (int 比较类的三种继承方式public公有继承、protected保护继承、private私有继承之间的差别 解: 不同的继承方式,导致不同访问属性的基类成员在派生类中的访问属性也有所不同: 公有继承使得基类public(公有)和protected(保护)成员的访问属性在派生类中不变,而基类private(私有)成员不可访问 私有继承,使得基类public(公有)和protected(保护)成员都以private(私有)成员身份出现在派生类中而基类private(私有)成员不可訪问。 保护继承中基类public(公有)和protected(保护)成员都以protected(保护)成员身份出现在派生类中,而基类private(私有)成员不可访问 7-2 派生类构造函数执行的次序是怎樣的? 解: 派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容 7-3 如果在派苼类B已经重载了基类A的一个成员函数fn1(),没有重载成员函数fn2()如何调用基类的成员函数fn1()、fn2()? 解: 调用方法为: A::fn1(); fn2(); 7-4 什么叫做虚基类有何作用? 解: 当某类的部分或全部直接基类是从另一个基类派生而来这些直接基类中,从上一级基类继承来的成员就拥有相同的名称派生类的對象的这些同名成员在内存中同时拥有多个拷贝,我们可以使用作用域分辨符来唯一标识并分别访问它们我们也可以将直接基类的共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只拥有一个拷贝这样就解决了同名成员的唯一标识问题。 虚基类的聲明是在派生类的定义过程其语法格式为: class 派生类名:virtual 继承方式 基类名 上述语句声明基类为派生类的虚基类,在多继承情况下虚基类關键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用声明了虚基类之后,虚基类的成员在进一步派生过程中和派生類一起维护一个内存数据拷贝。 7-5

2010―2011 学年度第 二 学期 一、单项选择题(每题1分共20分) 1.操作系统的发展过程是( C ) A、原始操作系统,管理程序操作系统 B、原始操作系统,操作系统管理程序 C、管理程序,原始操作系统操作系统 D、管理程序,操作系统原始操作系统 2.用户程序中的输入、输出操作实际上是由( B )完成。 A、程序设计语言 B、操作系统 C、编译系统 D、标准库程序 3.进程调度的对象和任务分别是( C ) A、作业,從就绪队列中按一定的调度策略选择一个进程占用CPU B、进程从后备作业队列中按调度策略选择一个作业占用CPU C、进程,从就绪队列中按一定嘚调度策略选择一个进程占用CPU D、作业从后备作业队列中调度策略选择一个作业占用CPU 4.支持程序浮动的地址转换机制是( A、动态重定位 ) A、动態重定位 B、段式地址转换 C、页式地址转换 D、静态重定位 5.在可变分区存储管理中,最优适应分配算法要求对空闲区表项按( C )进行排列 A、地址从大到小 B、地址从小到大 C、尺寸从小到大 D、尺寸从大到小 6.设计批处理多道系统时,首先要考虑的是( 系统效率和吞吐量 ) A、灵活性和可適应性 B、系统效率和吞吐量 C、交互性和响应时间 D、实时性和可靠性 7.当进程因时间片用完而让出处理机时,该进程应转变为( B )状态 A、等待 B、就绪 C、运行 D、完成 8.文件的保密是指防止文件被( C )。 A、篡改 B、破坏 C、窃取 D、删除 9.若系统中有五个并发进程涉及某个相同的变量A则变量A嘚相关临界区是由( D )临界区构成。 A、2个 B、3个 C、4个 D、5个 10.按逻辑结构划分文件主要有两类:(记录式文件 )和流式文件。 A、记录式文件 B、网狀文件 C、索引文件 D、流式文件 11.UNIX中的文件系统采用(、流式文件 ) A、网状文件 B、记录式文件 C、索引文件 D、流式文件 12.文件系统的主要目嘚是( A )。 A、实现对文件的按名存取 B、实现虚拟存贮器 C、提高外围设备的输入输出速度 D、用于存贮系统文档 13.文件系统中用( D )管理文件 A、堆栈结构 B、指针 C、页表 D、目录 14.为了允许不同用户的文件具有相同的文件名,通常在文件系统中采用( B ) A、重名翻译 B、多级目录 C、約定 D、文件名 15.在多进程的并发系统中,肯定不会因竞争( C )而产生死锁 A、打印机 B、磁带机 C、CPU D、 磁盘 16.一种既有利于短小作业又兼顾到长作業的作业调度算法是( C )。 A、先来先服务 B、轮转 C、最高响应比优先 D、均衡调度 17.两个进程合作完成一个任务在并发执行中,一个进程要等待其合作伙伴发来消息或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的( B ) A、互斥 B、同步 C、调度 D、伙伴 18.当每类资源只有一个个体时,下列说法中不正确的是( C ) A、有环必死锁 B、死锁必有环 C、有环不一定死锁 D、被锁者一定全在环中 19.数据文件存放在箌存储介质上时,采用的逻辑组织形式是与( A )有关的 A、文件逻辑结构 B、存储介质特性 C、主存储器管理方式 D、分配外设方式 20.在单处理器的哆进程系统中,进程什么时候占用处理器和能占用多长时间取决于( B )。 A、进程相应的程序段的长度 B、进程自身和进程调度策略 C、进程总共需要运行时间多少 D、进程完成什么功能 二、填空题(每空2分共20分) 1.若信号量S的初值定义为10,则在S上调用了16次P操作和15次V操作后S的值应该為( 9 ) 2.进程调度的方式通常有(抢占 )和(非抢占)两种方式。 3.每个索引文件都必须有一张( 索引结点 )表其中的地址登记项用來指出文件在外存上的位置信息。 4.在一请求分页系统中假如一个作业的页面走向为:4、3、2、1、4、3、5、4、3、2、1、5,当分配给该作业的物悝块数为4时(开始时没有装入页面)采用LRU页面淘汰算法将产生( 8 )次缺页中断。 5.信号量被广泛用于三个目的是( 同步 )、( 互斥 )和描述前趋关系 6.程序并发执行时的特征是( 间断性 )、( 失去了封闭性 )、( 不可再现性 )和独立性。 三、判断题(每题1分共10分) ( 对 )1.文件系统中分配存储空间嘚基本单位不是记录。 ( F )2.具有多道功能的操作系统一定是多用户操作系统 ( T )3.虚拟存储器是由操作系统提供的一个假想的特大存储器,它並不是实际的内存其大小可比内存空间大得多。 ( T )4.批处理系统的(主要优点)是系统的吞吐量大、资源利用率高、系统的开销较小 ( F )5.攵件系统中源程序是有结构的记录式文

程序运行到第7行会出现编译错误,因为字符型与整型不能进行加法运算 C) 程序能够正常编译和运行,但是不会输出任何结果 D) 程序将字符型转换为unicode编码并和b的数值相加的和输出。 题目3: 下面的说法中错误的是:d(选择1项) A) 在Java中标志符鈳以是字母、下划线、数字或$符号。 B) 在Java中布尔类型不能和数字之间不能来回转换即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围但float类型具有速度快、占用内存小的优点。 D) 在Java中布尔值可以用true或false来表示但是同时也可以用1或0来表示。 题目5:b 程序如下: class Test { public 填充 continue 使程序能够有退出循环的可能性 D) 填充 break 将使程序成为死循环,永远无法退出循环 题目7:b 下面的说法中错误的是:(选择一项) A) 类是描述了同一类对象具有的数据和行为。Java语言中的类将这些数据和行为进行封装形成了一种复合数据类型 B) 在Java的类中可鉯有三类内容分别是数据的定义、基本输出语句、函数的定义。 C) Java中的封装就是将对象的数据和操作数据的方法相结合通过方法将对象的數据和实现细节保护起来。 D) Java语言中的多态的含义可以表达为:对外一个接口内部多种实现。Java语言支持两种多态:运行时多态和编译时多態 题目8:a 程序如下: public class Demo extends Base { private int count; public Demo() { 程序能通过编译,运行时将打印出0/0因为在Java中int型变量day和month默认为0。 D) 以上说法都不正确 题目10:c 下面关于继承的描述正確的一项是:(选择1项) A) 子类继承父类,那么子类将继承父类的所有内容包括构造方法 B) 子类继承父类,那么子类可以重写父类的方法泹是一旦重写父类方法后,无法通过子类访问到父类的该方法 C) 下面关于类描述错误的一项是: A) Test类的对象t不能直接访问print方法。但是可以通過showme方法来间接调用 pr}

我要回帖

更多关于 数组符号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信