全国计算机二级Python资料
简介 教材资料,可供学习,参与考试
<div>
<div style="text-align: center;"><span style="mso-spacerun: 'yes'; font-size: 12pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">计算机二级公共基础知识 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">考试方式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.不单独考试,与其他二级科目结合在一起,作为二级科目考核内容的一部分 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.考试方式:上机考试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.考试题型:10 道选择题,占 10 分</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;"> </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">基本要求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握算法的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握基本的数据结构及其操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握基本排序和查找算法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.掌握逐步求精的结构化程序设计方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.掌握数据库的基本知识,了解数据库的设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;"> </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">考试内容 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.数据结构与算法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.程序设计基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.软件工程基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.数据库设计基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">1</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">2 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 12pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第一章 数据结构与算法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">本章内容导学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.算法的基本概念。算法的时间复杂度和空间复杂度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.数据结构的定义。数据的逻辑结构与存储结构、数据结构的图形表示、线性结构与 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">非线性结构的概念。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.线性表的定义。线性表的顺序存储结构及其插入与删除运算。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.栈和队列的定义。栈和队列的顺序存储结构及其基本运算。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.线性单链表、双向链表与循环链表的结构及其基本运算。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.树的基本概念。二叉树的定义及其存储结构;二叉树的前序、中序和后续遍历。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.顺序查找与二分法查找算法。基本排序算法(交换类排序、选择类排序插入类排序)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第一节 算法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.算法的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法是程序的灵魂。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法就是解决问题的操作步骤。注意事项:算法既不等于计算方法,也不等于程序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.算法的基本特征 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可行性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法在特定的执行环境中必须有一个或多个输出。简单来说,就是算法必须是可以执 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">行的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">确定性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法中的每一步描述都是明确的,没有多义性。只要输入相同,初始状态相同,无论 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">执行多少次,结果都是相同的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有穷性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有效性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法在拥有足够的输入信息和初始化信息时,才是有效的;否则是无效的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.算法的基本要素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个算法通常由两种基本要素组成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对数据对象的运算和操作。例如算术运算(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">+、-、*、/)等。</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">3 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法的控制结构。是指算法中各个操作之间的执行顺序,一般由顺序、选择和循环 3 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">种基本结构组成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.算法复杂度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个算法复杂度的高低体现在运行该算法所需要的计算机资源的多少。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所需资源越多,算法复杂性越高。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所需资源越少,算法复杂性越低。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计算机资源中,最重要的资源就是时间(CPU)和空间(存储器)资源。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">因此,算法的时间复杂度就包括了算法的时间复杂度和空间复杂度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">时间复杂度:是指执行算法所需要的计算工作量。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法的时间复杂度和算法程序执行的具体时间是不一致的,因为算法程序执行的具体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">时间受所使用的计算机、程序设计语言以及算法实现过程中许多细节的影响,而算法的时 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">间复杂度与这些因素无关。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法的计算工作量是用算法所执行的基本运算次数来度量的,而算法所执行的基本运 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算次数是问题规模 n 的函数,即算法工作量=f(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n),其中 n 是问题规模,也就是计算量的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">大小。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项:在同一个问题规模下,算法所执行的基本运算次数还可能与特定的输入有 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关。即输入不同时,算法所执行基本运算次数也不同。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">例如,在简单插入排序中,对输入序列 a:12345、b:15243、c:54321 进行由小到大排 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">序时,a 所需工作量最少,c 所需工作量最多。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">此时,可以采用平均时间复杂度和最坏情况下的时间复杂度来度量。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">空间复杂度:是指执行这个算法所需要的内存空间。包括三个部分: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">输入数据所占用的存储空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序本身所占用的存储空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法在执行过程中所占需要的额外空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意:如果额外空间量相对于问题规模(即输入数据所占用的存储空间)来说是常数, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">则称该算法是原地工作的。为了降低算法的空间复杂度,通常采用压缩存储技术。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.算法的空间复杂度是指( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法在执行过程中所需要的计算机存储空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法所处理的数据量 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.算法程序中的语句或指令条数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法在执行过程中所需要的临时工作单元数</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法空间复杂度的概念。算法的空间复杂度是指算法在执行过程中所 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需要的内存空间,因此选项 A 正确。选项 B 描述的是输入数据所占用的存储空间,选择 C </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">描述的是程序本身所占用的存储空间。选项 D 描述的是算法执行过程中所需要的额外空间, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">因此 B、C、D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.算法的有穷性是指( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法程序的运行时间是有限的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法程序所处理的数据量是有限的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.算法程序的长度是有限的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法只能被有限的用户使用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法有穷性的理解。有穷性是指算法程序的运行时间是有限的,而不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是算法的数据量、长度和用户。因此,选项 A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法就是程序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.设计算法时只需要考虑数据结构的设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.设计算法时只需要考虑结果的可靠性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.以上三种说法都不对 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法定义的理解。算法是解决问题的操作步骤,既不等于程序,也不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">等于数学中的计算方法,因此 A 错误。算法不仅要考虑对数据对象的运算和操作,还要考 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">虑算法的数据结构,B、C 错误,因此选项 D 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.程序执行的效率与数据的存储结构密切相关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.程序执行的效率只取决于程序的控制结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序执行的效率只取决于所处理的数据量 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.以上说法均错误 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查程序执行效率的理解。程序执行的效率与数据的存储结构、数据的逻 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">辑结构、程序的控制结构、所处理的数据量等有关。因此选项 A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.一个算法的空间复杂度大,则其时间复杂度也必定大 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.一个算法的空间复杂度大,则其时间复杂度必定小 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.一个算法的时间复杂度大,则其空间复杂度必定小 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法的时间复杂度与空间复杂度没有直接关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">4</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法的时间复杂度和空间复杂度的关系。算法的时间复杂度和空间复 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">杂度没有直接关系,所以选项 D 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法的效率只与问题的规模有关,而与数据的存储结构无关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法的时间复杂度是指执行算法所需要的计算工作量 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据的逻辑结构与存储结构是一一对应的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法的时间复杂度与空间复杂度一定相关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法综合知识。算法效率与问题的规模和数据的存储结构都有关,A </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">错误。B 是算法时间复杂度的定义,因此正确。由于数据元素在计算机存储空间中的位置 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系可能与逻辑关系不同,因此数据的逻辑结构和存储结构不是一一对应的,C 错误。算 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">法的时间复杂度和空间复杂度没有直接关系,所以选项 D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法时间复杂度与计算机的运行速度有关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法的时间复杂度与运行算法时特定的输入有关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.算法的时间复杂度与算法程序中的语句条数成正比 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法的时间复杂度与算法程序编制者的水平有关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法时间复杂度的理解。算法时间复杂度和算法的运行时间并不一致, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">它与问题的规模和特定的输入有关,与其他因素无关。因此选项 B 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.算法空间复杂度是指算法程序中指令的条数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.压缩数据存储空间不会降低算法的空间复杂度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.算法的空间复杂度与算法所处理的数据存储空间有关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法的空间复杂度是指算法程序控制结构的复杂程度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法空间复杂度的理解。算法空间复杂度是指执行这个算法所需要的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">内存空间,所以选项 C 正确,选项 A、D 错误。压缩存储技术可以减少算法的空间复杂度, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选项 B 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">9.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.数据的存储结构会影响算法的效率 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法设计只需考虑结果的可靠性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.算法的复杂度指算法控制结构的复杂程序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.算法的复杂度是用算法中指令的条数来度量的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">5</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查算法复杂度和算法设计的理解。数据的存储结构会影响算法的复杂度, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">即会影响算法的效率,因此选项 A 正确。算法设计不仅要考虑可靠性,还要有可行性、确 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定性、有穷性、有效性等基本特征。因此选项 B 错误。算法的复杂度包括时间复杂度和空 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">间复杂度,因此选项 C、D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第二节 数据结构的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.数据结构的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顾名思义,数据结构包含两个要素:数据和结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据:需要处理的数据元素的集合,且这些数据元素具有某个共同特征。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构:就是关系,是指集合中各个数据元素之间存在的某种关系。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据数据元素之间的不同特性关系,可分为 4 种结构: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">集合 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树形结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">网状结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在数据处理的领域中,通常将两两数据元素之间的关系用前后件来描述。前后件关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是数据元素之间最基本的关系,数据元素之间的任何关系都可以用前后件关系来描述。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.数据的逻辑结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在数据结构的定义中,并没有考虑到数据元素的存储,这样的数据结构实际上就是数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据的逻辑结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据逻辑结构的定义:反应数据元素之间逻辑关系的数据结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逻辑结构的数学形式定义:二元组。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B=(D,R),其中 B 表示数据结构,D 是数据元素的集合,R 表示 D 上关系的集合。例 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如把学历看作一个数据结构,则可以表示为: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B=(D,R) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D={本科,硕士,博士} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">R={(本科,硕士),(硕士,博士)} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.数据的存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">又称数据的存储结构,是数据的逻辑结构在计算机存储空间中的存放方式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">6</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,因此在 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的存储结构中,既要存放各数据元素的信息,还要存放各数据元素之间的前后件关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的信息。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">两种最主要的数据存储方式:顺序存储结构和链式存储结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序存储结构:主要用于线性的数据结构,特点是把逻辑上相邻的数据元素存储在物 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">理上相邻的存储单元里。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链式存储结构:在每个节点中至少包含一个指针域,用来表示数据元素在逻辑上的联 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系,特点是在逻辑上相邻的数据元素在物理上不一定相邻。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.数据结构的图形表示 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">每一个二元组,都可以用图形来表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用中间标有元素值的方框表示数据元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用一条有向线段表示元素之间的关系(也可以是无向线段) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3 个基本概念: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根节点:没有前件的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">终端节点(或叶子节点):没有后件的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">内部节点(或中间节点):除根节点和叶子节点以外的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.线性结构与非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构划分成两大类 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">型:线性结构和非线性结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性结构(非空数据结构),满足下面两个条件: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有且只有一个根节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">每个节点最多只有一个前件,也最多有一个后件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">不满足上述两个条件的数据结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">主要包括树形结构和网状结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果一个数据结构没有数据元素,则称该数据结构为空数据结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个空的数据结构究竟属于线性结构还是非线性结构,要根据具体情况来确定。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.有一个以上根节点的数据结构不一定是非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.只有一个根节点的数据结构不一定是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">7</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.循环链表是非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.双向链表是非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性结构的定义。线性结构应该满足两个条件,即有且只有一个根结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点,每个节点最多有一个前件,最多有一个后件,因此 B 正确。有一个以上根节点的数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构一定是非线性结构,因此 A 错误。循环链表和双向链表都是线性结构,因此 C、D 错 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.顺序存储结构能存储有序表,链式存储结构不能存储有序表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.链式存储结构比顺序存储结构节省存储空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查两种数据存储方式的理解。顺序存储结构的存储一定是连续的,链式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">存储结构的存储空间不一定是连续的,因此 A 正确。顺序存储结构和链式存储结构都可以 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">针对线性结构和非线性结构存储,因此 B、C 错误。因为链式存储需要额外增加指针域, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所以会增加存储空间,D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.下列链表中,其逻辑结构属于非线性结构的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.二叉链表 B.循环链表 C.双向链表 D.带链的栈 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据结构的分类。带链的栈可以用来收集计算机存储空间中所有空闲 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链表,就称为双向链表,循环链表在单链表的基础上仅对表的链接方式稍做改变,属于线 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性表。因此 B、C、D 都属于线性结构。二叉链表是属于二叉树的链式存储,属于非线性结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">构,因此选 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.设数据集合为 D={1,3,5,7,9},D 上的关系为 R,下列关系使数据结构 B=(D,R)为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">非线性结构的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.R={(5,1),(7,9),(1,7),(9,3)} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.R={(9,7),(1,3),(7,1),(3,5)} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.R={(1,9),(9,7),(7,5),(5,3)} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.R={(1,3),(3,5),(5,9),(7,3)} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据结构的图形表示。在 A 选项中,5 为根节点,线性表为 51793。B </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选项中,9 为根节点,线性表为 97135。C 选项中,1 为根节点,线性表为 19753。D 选项 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中,节点 1 和 7 都是根节点,属于非线性结构,故选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.下列叙述中错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">8</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.数据结构中的数据元素可以是另一数据结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.数据结构中的数据元素不能是另一数据结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.空数据结构可以是线性结构也可以是非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.非空数据结构可以没有根节点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据结构概念。数据结构中的数据元素,具有某个共同特征即可,因 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">此可以是另一数据结构。A 正确,B 错误。空数据结构如果对该数据结构的算法是按线性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构的规则来处理的,则属于线性结构,否则属于非线性结构,因此 C 正确。非空数据结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">构如非线性结构可以没有根结点,因此 D 正确。所以答案选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.下列叙述中错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.向量是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.非空线性结构中只有一个节点没有前件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.非空线性结构中只有一个节点没有后件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.具有两个以上指针域的链式结构一定属于非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性结构的特点。根据线性结构的特点,A、B、C 正确,D 错误,例 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如双向链表有两个指针,但它是线性结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.能采用顺序存储的必定是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.所有的线性结构都可以采用顺序存储 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.具有两个以上指针域的链式结构一定属于非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.循环队列是队列的链式存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据结构和存储结构之间的关系。线性结构和非线性结构都可以采用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序存储,A 错误。所有的线性结构都可以采用顺序存储,B 正确。例如双向链表有两个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指针,但它是线性结构,C 错误。循环队列是队列的顺序存储结构,因此 D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第三节 线性表及其顺序存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.线性表的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在数据结构中,线性结构习惯称为线性表,是最常用也是最简单的数据结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:线性表是 n(n>=0)个数据元素构成的有限序列,表中除第一个元素外的每一 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个元素,有且仅有一个前件,除最后一个元素外,有且仅有一个后件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">非空线性表的表示:(a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">,a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">,… , a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i </span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">,…,a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">n</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">),a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i </span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(1<= i <= n)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.线性表的特征 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">9</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">非空线性表具有以下结构特征: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">只有一个根节点,即节点 a1,无前件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">只有一个终端节点,即节点 an,无后件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">除根节点与终端节点外,其他所有节点有且只有一个前件,一个后件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项:节点个数 n 称为线性表的长度,n=0 时即为空表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.线性表的顺序存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表既可以采用顺序存储结构,也可以采用链式存储结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序存储:将线性表中的元素一个接一个地存储在一片相邻存储区域中,也称为顺序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序表的两个基本特征: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表中的所有元素所占的存储空间是连续的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序表中元素的位置关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">LOC(a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">) = LOC(a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">) + (i-1) * k,其中 LOC(a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">)表示数据元素 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的位置,k 表示每个数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据元素所占用的存储单元。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论:只要确定了首地址,顺序表内任一元素的地址都可以计算出来。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.线性表的插入操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表的插入操作:在表的第 i(1<=i<=n+1)个位置上,插入一个新节点 x,使长度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为 n 的线性表变为长度为 n+1 的线性表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">插入操作的步骤(在第 i 个元素之前插入一个新元素): </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">把原来的第 n 个节点至第 i 个节点依次往后移一个元素位置。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">把新节点放在第 i 个位置上。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表长度加 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表(15,9,17,5,8)分别在第一个位置插入 16,第 4 个位置插入 2,最 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">后一个元素的下一个位置插入 11。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在第一个位置上插入一个新元素,需要移动所有元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在第 n 个元素之后插入一个新元素,不需要移动元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在第 i(1<=i<=n)个元素之前插入一个新元素,则原来的第 i 个元素之后(包括第 i </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个元素)的所有元素都必须移动。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.线性表的删除操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">10</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表的删除操作:将表的第 i(1<=i<=n)个节点删除,使长度为 n 的线性表变为长 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">度为 n-1 的线性表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除操作的步骤(删除第 i 个元素): </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">把原来的第 i 个节点之后(不包括第 i 个元素)的 n-i 个元素依次前移一个位置。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表长度减 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表(15,9,17,5,8)分别删除第一个元素,删除第 3 个元素,删除最后 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除第一个元素,需要移动其他所有元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除第 n 个元素,不需要移动元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除第 i(1<=i<=n)个元素,则原来的第 i 个元素之后(不包括第 i 个元素)的所有 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素都必须依次向前移动。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.线性表顺序存储结构的适用场景 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">建立之后元素不常变动的线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">适用于长度较小的线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">不适用于需要经常进行插入和删除操作的线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.在线性表的顺序存储结构中,其存储空间连续,以下说法正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.各个元素所占的字节数相同,元素的存储顺序与逻辑顺序一致 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.各个元素所占的字节数相同,元素的存储顺序与逻辑顺序不一致 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.各个元素所占的字节数不同,元素的存储顺序与逻辑顺序一致 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.各个元素所占的字节数不同,元素的存储顺序与逻辑顺序不一致 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性表顺序存储结构特征。顺序表有两个基本特征:线性表中的所有 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的。因此 A 正确,B、C、D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.下列关于线性表的插入运算描述正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.线性表存储空间已满情况下,继续插入的错误运算称为“上溢”。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.在线性表的末尾插入新元素,需要移动线性表中的所有元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.在线性表的第一个位置处插入新元素,不需要移动线性表中的所有元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.线性表的插入运算的时间主要花在元素的插入上。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性表插入操作。线性表在初始建立时会开辟一个大于线性表长度的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">存储空间,当存储空间已满时,继续插入就会导致“上溢”错误,A 正确。在线性表的末 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">11</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">尾插入新元素,不需要移动元素,B 错误。在第一个位置上插入一个新元素,需移动表中 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的所有元素,C 错误。线性表的插入运算时间主要是花在元素的移动上,D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.下列关于线性表的删除运算描述错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.若删除线性表的末尾元素,不需移动线性表的所有元素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.若删除线性表的第一个元素,则需要移动线性表的所有元素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.线性表每删除一个元素,线性表的长度减少 1D.线性表的顺序存储结构适合常变动 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的长度较大的线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性表删除操作。根据线性表的删除运算,A、B、C 正确。线性表不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">适合需要经常进行插入和删除操作的线性表,D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第四节 栈和队列 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.栈的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在栈中,允许插入和删除的一端叫栈顶,不允许插入和删除的一端叫栈底。通常用指 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">针 top 来表示栈顶位置,用指针 bottom 指向栈底。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当栈中没有元素时,称为空栈。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:栈 S=(a1,a2,a3,…,an)入栈和出栈示意图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.栈的特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈的特点是后进先出。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈顶元素总是最后被插入,最早被删除的元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈底元素总是最早被插入,最后被删除的元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在顺序存储结构下,栈的插入和删除都不需要移动表中其他元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈顶指针 top 动态反映了栈中元素的变化情况。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.栈的基本操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入栈:栈的插入,即在栈顶位置插入一个新元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">出栈:栈的删除,即取出栈顶元素并赋给指定变量。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">取栈顶元素:将栈顶元素(即栈顶指针 top 指向的元素)的值赋给指定变量。注意事 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">项:栈和一般线性表类似,也有顺序存储和链式存储两种方式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.队列的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队列也是一种特殊的线性表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:是指允许在一端进行插入,而在另一端进行删除的线性表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">12</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">13 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在队列中,允许进行删除的一端叫队头;允许进行插入的一端叫队尾。从队头删除元 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">素叫出队,在队尾插入元素叫入队。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队列的特点:先进先出。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:食堂排队就餐。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.队列的运算 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序存储的线性表可以用来表示队列,为了指出出队运算的队头位置,需要一个队头 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指针(front),为了表示入队运算的队尾位置,需要一个队尾指针(rear)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">front 总是指向队头元素的前一个位置,rear 总是指向队尾元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入队:往队尾插入一个元素。先将 rear 指针加 1,然后在 rear 指向的位置上插入元 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">出队:从队头删除一个元素。先将 front 指针加 1,然后删除 front 指向位置上的元 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:a,b,c 入队,a 出队。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.循环队列 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">循环队列是队列的顺序存储结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">假设一维数组(1:m)作为循环队列的存储空间时,当循环队列初始状态为空时,此 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">时 front=rear=m。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入队:在循环队列的队尾插入一个新元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">先将 rear 指针加 1,然后在 rear 指向的位置上插入元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当 rear=m+1 时,rear 置 1。即在最后一个位置插入元素后,紧接着在第一个位置插 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入新元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">出队:在循环队列队头删除一个元素,并赋值给指定变量。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">先将 front 指针加 1,然后删除 front 指向位置上的元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当 front=m+1 时,front 置 1。即在最后一个位置删除元素后,紧接着在第一个位置 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.循环队列的判空和判满 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在循环队列中,队列为空和队列满时都有 front=rear,为了区分这两种情况,我们增 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">加一个标志量 S,当 S=0 时,循环队列为空,当 S=1 时,循环队列为非空。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论:当 S=0,即循环队列为空时,不能再进行出队运算,否则会发生下溢错误;当 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">S=1 时,并且 front=rear,即循环队列满时,不能再进行入队运算,否则会发生上溢错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.设有栈 S 和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F 入栈,然后从栈中 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">退出 3 个元素依次入队,在将 X,Y,Z 入栈后,将栈中所有元素退出并依次入队,最后将队 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">列中所有元素退出,则出队的顺序为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.DEFXYZABC B.FEDZYXCBA </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.FEDXYZCBA D.DEFZYXABC </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈和队列的特点。栈的特点是后进先出,队列的特点是先进先出。所 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">以 ABCDEF 依次入栈后,退出 3 个元素为 FED 进入队列,接着 XYZ 入栈,栈中为 ABCDXYZ, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">将栈中所有元素入队,则队列中为 FEDZYXCBA,所以出队顺序是 FEDZYXCBA,因此选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.设栈的存储空间是 S(1:m),初始状态为 top=0。现经过一系列正常的入栈和退栈 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">操作后,top=m+1,则栈中元素的个数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.0 B.m C.不可能 D.m+1 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈的定义。根据初始状态 top=0,可知入栈时 top+1,当占栈满时, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">即 top=m 时,元素个数最多为 m 个。top=m+1 是不可能的,因为会导致上溢错误。因此答 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">案选 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.设栈的存储空间是 S(1:50),初始状态为 top=-1。现经过一系列正常的入栈和退 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">栈操作后,top=30,则栈中元素的个数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.20 B.19 C.31 D.30 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈的定义。在栈结构中,初始状态 top=-1,此时 top 指向的就是栈顶 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素,此时栈中元素的个数和栈顶指针所指的位置是相等的。故答案选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.设栈的存储空间是 S(1:m),初始状态为 top=m+1。则栈中元素的个数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.top-m+1 B.m-top+1 C.m-top D.top-m </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈的定义。在栈结构中,初始状态 top=m+1,若有元素入栈,则 top-1, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在插入新的元素,此时栈中元素的个数为 m-top+1,故选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.对于循环队列,下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.队头指针是固定不变的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.队头指针一定大于队尾指针 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.队头指针一定小于队尾指针 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.队头指针可以大于队尾指针,也可以小于队尾指针 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查循环队列的基本性质。循环队列是队列的顺序存储结构,循环队列的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队头指针和队尾指针都不是固定的,而是随着入队和出队动态变化的。队头指针可以大于 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队尾指针,也可以小于队尾指针。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">14</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.栈和队列都只能顺序存储 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.循环队列是队列的顺序存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.循环链表是循环队列的链式存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.栈是顺序存储结构而队列是链式存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈和队列结构的比较。栈和队列既可采用顺序存储结构,也可以采用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链式存储结构,A、D 错误。循环队列是队列的顺序存储结构,B 正确。循环链表不是循环 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队列的链式存储结构,C 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.在循环队列中,队尾指针的动态变化决定队列的长度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.在循环队列中,队头指针和队尾指针的动态变化决定队列的长度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.在带链的队列中,队头指针和队尾指针的动态变化决定队列的长度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.在带链的栈中,栈顶指针的动态变化栈中元素的个数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查栈和队列的两种存储方式的理解。在循环队列中,从队头指针 front </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指向的后一个位置直到队尾指针 rear 指向位置之间所有的元素均为队列中的元素,所以 B </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">正确,A 错误。线性链表中,由于前一个结点包含下一个结点的指针,尾结点指针为空, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">要插入删除元素,只需要改变相应位置的结点指针即可,头指针和尾指针无法决定链表长 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">度,因此 C、D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.循环队列的存储空间为 Q(1:50),初始状态为 front=rear=50。经过一系列正常 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的入队与退队操作后,front=rear=25,此后又正常地插入了一个元素,则循环队列中的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素个数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.51 B.50 C.46 D.1 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查循环队列的入队和出队操作。循环队列是队列的一种顺序存储结构, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入队运算时,队尾指针进 1(即 rear+1),然后在 rear 指针指向的位置插入新元素。当 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">front=rear=25 时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">空,所以插入操作之后队列里只有一个元素。D 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第五节 线性链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.线性链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表的链式存储结构简称链表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链表的特点:用一组不连续的存储单元存储线性表中的各个元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">15</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链表的基本单位是节点,每个节点包含两部分内容:一个是数据域,用于存放数据元 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">素本身的信息,一个是指针域,存放下一个数据元素的地址。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在线性链表中,指向链表中第一个节点的指针,称为这个链表的头指针(head),链 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表最后一个节点的指针域为空,用 NULL 表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:线性表(A,B,C,D)的链表的存储结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链表中数据节点的存储单元可以是连续的,也可以是不连续的,各节点在存储空间中 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的位置关系与逻辑关系不一致。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当 head==null 时,此时链表为空。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当每个节点中只有一个指针域,称为单链表。有时每个节点存储两个指针域,一个指 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">针域存放上一个元素的地址,一个指针存放下一个元素的地址,称为双向链表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:双向链表 ABCD 示意图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">双向链表的意义:可以很方便的知道任一结点的前件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.带链的栈和带链的队列 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">带链的栈:用链式存储结构实现的栈,简称链栈。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链栈的示例讲解:a1a2a3 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">带链的队列:用链式存储结构实现的队列,简称链队。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链队的示例讲解:a1a2a3 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.顺序表和链表的比较 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.线性链表的基本操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">查找指定元素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">只能顺序查找,即从头节点开始依次遍历每个节点,如果值相等,返回该节点的位置, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果遍历完整个链表都没找到,返回 null。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:线性链表(1,5,2,3)中查找值为 2 的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">插入元素(将值为 e 的新节点插入到链表的第 i 个节点即 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的位置上) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">查找节点 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">并由指针 p 指向该节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">生成新节点*s。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">将新节点*s 的数据域置 e。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">将新节点*s 的指针域指向 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">16</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">将结点*p 的指针域指向新节点*s。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">删除元素(删除单链表的第 i 个节点 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">查找节点 ai-1 并由指针 p 指向该节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">临时保存待删除结点 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的地址在 q 中,以备释放。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">将结点*p 的指针域指向 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的直接后继结点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">释放结点 a</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的空间。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.循环链表及其基本操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在单链表中,最后一个节点的指针域的值由 NULL 改为指向表头结点,这样的链表称 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为循环链表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在循环链表中,从任何一个节点出发,可以访问到表中其他所有的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.下列关于线性链表的叙述中,正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.各数据节点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.各数据节点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.进行插入与删除时,不需要删除移动表中的元素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.以上说法均不正确 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性表链式存储结构的理解。一般来说,线性表的链式存储结构中, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">各数据节点的存储单元是不一致的,而且存储顺序与逻辑顺序也不一致。线性链表中数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的插入和删除不需要移动元素,只需要修改指针即可,所以 A、B、D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点是()。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.节省存储空间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.插入和删除运算效率高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.便于查找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.排序时减少元素的比较次数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查线性表的链式存储结构和顺序存储结构的优缺点比较,根据前面知识 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">提炼部分的讲解,答案选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.从表中任何一个节点位置出发就可以不重复地访问到表中其他所有节点的链表是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.循环链表 B.双向链表 C.单向链表 D.二叉链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查循环链表的特点的理解。在单链表的第一个结点前增加一个表头结点, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队头指针指向表头结点,最后一个结点的指针域的值由 NULL 改为指向表头结点,这样的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">链表称为循环链表。在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">17</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">没有重复地扫描到表中其他所有的结点。双向链表与二叉链表都可以扫描到所有结点,但 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是会有重复。有序链表如果是单链表的情况下,不能扫描到所有结点。故 A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.有两个指针域的链表一定是二叉树的存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.有多个指针域的链表一定是非线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.有多个指针域的链表有可能是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.只有一个根结点的数据结构一定是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查双向链表和二叉树的链式结构的理解。双向链表节点有两个指针域, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指向前一个节点的指针和指向后一个节点的指针,但它是线性结构,A、B 选项错误。树只 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有一个根节点,但它是一种简单的非线性结构,D 选项错误。故只有 C 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.非空循环链表所表示的数据结构( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.有根结点也有叶子结点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.没有根结点但有叶子结点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.有根结点但没有叶子结点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.没有根结点也没有叶子结点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查非空循环链表结构的理解。在单链表的第一个结点前增加一个表头结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点,队头指针指向表头结点,最后一个结点的指针域的值由 NULL 改为指向表头结点,这 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">样的链表称为循环链表。循环链表是线性结构,有且只有一个根结点,每一个结点最多有 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个前件,也最多有一个后件。循环链表表头结点为根结点,链表的最后一个结点为叶子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">节点,虽然它含有一个指向表头结点的指针,但是表头结点并不是它的一个后件。故选择 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.下列叙述中错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.在带链队列中,队头指针和队尾指针都是在动态变化的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.在带链栈中,栈顶指针和栈底指针都是在动态变化的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.在带链队列中,队头指针和队尾指针可以指向同一个位置 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查带链的栈和带链的队列的理解。带链的队列就是用一个单链表来表示 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队列,队列中的每一个元素对应链表中的一个节点,在入队和退队过程中,队头指针和队 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">尾指针都是在动态变化的,A 选项叙述正确,循环队列中当队列满或者空时,队头指针和 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">队尾指针指向同一个位置,D 选项叙述正确。栈也可以采用链式存储结构表示,把栈组织 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">成一个单链表,这种数据结构可称为带链的栈,入栈和退栈过程中栈底指针不变,栈顶指 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">针随之变化,B 选项叙述错误,C 选项叙述正确。故选择 B 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">18</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第六节 树和二叉树 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.树的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树是一种简单的非线性结构,以分支关系来表示层次结构的数据。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树的相关术语 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根:在树结构中,没有前件的节点且只有一个。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">父节点:每个节点只有一个前件,称为父节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">子节点:每个节点可以有多个后件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">叶子节点:没有后件的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">节点的度:该节点所拥有的后件的个数。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树的度:所有节点中最大的度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树的深度:树的最大层次。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">子树:以某节点的一个子节点为根构成的树。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论:在树中,总节点数等于树中所有节点的度之和再加 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.二叉树及其基本性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树是一个有限节点集合,该集合或者为空,或者由一个根结点及其两棵互不相交 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的左、右二叉子树所组成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树与树是相似的,树结构中的相关术语都可以应用到二叉树中。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树的特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树可以为空,空的二叉树没有节点,非空二叉树有且只有一个根节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">每个节点最多有两棵子树,即二叉树中不存在度大于 2 的节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树的子树有左右之分,其次序不能任意颠倒。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树共有 5 种基本形态。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.特殊的二叉树 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">满二叉树:除最后一层外,每一层上的所有节点都有两个子节点的二叉树。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">满二叉树的性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">满二叉树在第 i 层上有 2</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个节点,即每一层上的节点数都是最大节点数。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一棵深度为 K 的满二叉树,整棵二叉树共有 2</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">K</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">-1 个节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">满二叉树只有度为 2 和度为 0 的节点,没有度为 1 的节点。并且所有度为 0 的节点都 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是同一层,即最后一层。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.特殊的二叉树 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">19</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">完全二叉树:除最后一层外,每一层上的节点数都达到最大值,在最后一层上只缺少 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">右边的若干节点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">完全二叉树的性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">叶子节点只可能在最后两层。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对于任一节点,若其右子树的深度为 m,则该节点左子树的深度为 m 或为 m+1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.二叉树的基本性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 1:在二叉树的第 K 层上,最多有 2</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">K-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 2:深度为 K 的二叉树中,最多有 2</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">K</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">-1 个节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 3:对于任何一棵二叉树,度为 0 的节点总是比度为 2 的节点个数多 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 4:具有 n 个节点的二叉树,其深度至少是[log</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n] + 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 5:具有 n 个节点的完全二叉树的深度为[log</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n] + 1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性质 6:设完全二叉树共有 n 个节点,如果从根节点开始按层次从左到右依次 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">编号,有以下结论: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">若 i=1,则该节点为根节点,无父节点;若 i>1,则该节点的父节点编号为[i/2]。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">若 2i>n,该节点无左子节点(也无右子节点);若 2i<=n,则编号为 i 的左子节点编号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为 2i。</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">若 2i+1>n,则该节点无右子节点;若 2i+1<=n,则编号为 i 的结点的右子节点编号为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2i+1。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.二叉树的存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树通常采用链式存储结构。分别为左指针域(指向该节点的左子节点)、数据域 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(用于存放数据元素的值)、右指针域(指向该节点的右子节点)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树的链式存储结构也叫二叉链表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">满二叉树和完全二叉树可以按层次进行顺序存储。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.二叉树的遍历 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树的遍历是指不重复地访问二叉树中的所有节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在遍历二叉树的过程中,一般先遍历左子树,再遍历右子树。在先左后右的原则下, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据根结点的次序不同,二叉树的遍历可以分为前序遍历(根左右)、中序遍历(左根右)、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">后序遍历(左右根)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">前序遍历:首先访问根结点,然后遍历左子树,最后遍历右子树。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中序遍历:首先遍历左子树,然后访问根结点,最后遍历右子树。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">后序遍历:首先遍历左子树,然后遍历右子树,最后访问根结点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">20</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">21 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项:已知一棵二叉树的前序序列和中序序列,可以唯一确定这棵二叉树;已知 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一棵二叉树的后序序列和中序序列,也可以唯一确定这棵二叉树。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.一棵二叉树共有 25 个结点,其中 5 个是叶子结点,则度为 1 的结点数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.16 B.10 C.6 D.4 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二叉树性质 3。根据二叉树的性质 3:在任意一棵二叉树中,度为 0 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的叶子结点总是比度为 2 的结点多一个,所以本题中度为 2 的结点是 5-1=4 个,所以度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为 1 的结点的个数是 25-5-4=16 个。选项 A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.对下列二叉树进行前序遍历的结果是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.DYBEAFCZX </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.YDEBFZXCA </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.ABDYECFXZ </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.ABCDEFXYZ </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二叉树的遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树为空,则执行空操作。否则:①访问根结点;②前序遍历左子树;③前序遍历右子树, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.在深度为 7 的满二叉树中,度为 2 的结点个数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.64 B.63 C.32 D.31 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查满二叉树的性质。在树结构中,一个节点所拥有的后件个数称为该节 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点的度。深度,定义一棵树的根节点所在的层次为1,其他节点所在的层次等于它的父节 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点所在的层次加1,树的最大层次称为树的深度。满二叉树指除最后一层外,每一层上的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所有节点都有两个子节点的二叉树。一棵深度为 K 的满二叉树,整棵二叉树共有 2K-1 个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">节点;满二叉树在其第 i 层上有 2i-1 个节点。在满二叉树中,只有度为 2 和度为 0 的节 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点。深度为 7 的满二叉树,节点个数为 27-1=127,第七层叶节点个数为 27-1=64,则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">127-64=63,B 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.深度为7的完全二叉树中共有 125 个结点,则该完全二叉树中的叶子结点数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.64 B.63 C.32 D.31 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查完全二叉树的性质。在树结构中,定义一棵树的根结点所在的层次为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1,其他结点所在的层次等于它的父结点所在的层次加1,树的最大层次称为树的深度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的若干结点。深度为 6 的满二叉树,结点个数为 26-1=63,则第 7 层共有 125-63=62 个叶 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">子结点,分别挂在第 6 层的左边 31 个结点上,加上第 6 层的最后 1 个叶子结点,该完全 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二叉树共有 63 个叶子结点,故 B 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.深度为 5 的完全二叉树的结点数不可能是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.15 B.16 C.17 D.18 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二叉树的性质 2 和完全二叉树的概念的理解。在树结构中,定义一棵 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1,树的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在最后一层上只缺少右边的若干结点。深度为 5 的二叉树,结点个数最多为 25-1=31,最 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">少为 24=16,不可能是 15,故正确答案为 A 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.设二叉树中共有 31 个结点,其中的结点值互不相同。如果该二叉树的后序序列与 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中序序列相同,则该二叉树的深度为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.31 B.16 C.17 D.5 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二叉树遍历的理解。二叉树遍历可以分为 3 种:前序遍历(访问根结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。由结点值互不相 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">同而后序序列与中序序列相同,可知该二叉树所有的结点都没有右子树,所以 31 个结点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的二叉树深度为 31。故选 A 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.某棵树只有度为 3 的结点和叶子结点,其中度为 3 的结点有 8 个,则该树中的叶子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结点数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.15 B.16 C.17 D.不存在这样的树 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查树的理解。由于只有度为 3 的结点和叶子结点,可知最后一层都为叶 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">子结点,倒数第二层一部分结点度为 3,一部分为叶子结点,其余的结点的度均为 3,计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算度为 3 的结点总数(3</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">3-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">-1)/2 < 8 < (3</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">4-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">-1)/2,可知树共有 4 层。前两层有度为 3 的结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">点(3</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">3-1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">-1)/2 =4 个,第三层有 3</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">3-1 </span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">=9 个节点,其中度为 3 的节点 4 个,度为 0 的节点 5 个, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">故该树中的叶子结点数为 4×3+5=17。 故选 C 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.非完全二叉树可以采用顺序存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.有两个指针域的链表就是二叉链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.有的二叉树也能用顺序存储结构表示 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.顺序存储结构一定是线性结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">22</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">23 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二叉树的定义的理解。非完全二叉树采用的是链式存储结构,A 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有两个指针域的链表不一定是二叉链表,比如双向链表,B 错误。完全二叉树通常用顺序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构表示,C 正确,D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第七节 查找技术 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.顺序查找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:从线性表的第一个元素开始,逐个将线性表中的元素与被查元素进行比较, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果相等,则查找成功,停止查找;若整个线性表扫描完毕,仍未找到与被查元素相等的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素,则表示线性表中没有要查找的元素,查找失败。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:在一维数组[11,5,3,9,7]中查找元素 3 和 8。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法的时间复杂度 O(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最好情况:1 次,第一个元素就是要查找的元素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏情况:n 次,最后一个元素就是要找的元素或者找不到 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">平均情况下:n/2 次。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序查找虽然效率很低,但以下两种只能采用顺序查找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表是无序的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表是有序的,但采用链式存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.折半查找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">两个必要条件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用顺序存储结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">线性表是有序表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:对于长度为 n 的有序线性表,利用二分法查找元素 X 的过程如下:将 X 的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">值与线性表的中间项进行比较。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果 X 的值与中间项的值相等,则查找成功,结束查找。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果 X 的值小于中间项的值,则在线性表的前半部分以二分法继续查找。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果 X 大于中间项的值,则在线性表的后半部分以二分法继续查找。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:在长度为 8 的线性表{5,16,20,27,30,36,44,55}查找元素 30。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">算法的时间复杂度 O(log2n)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.在长度为 97 的顺序有序表中作二分查找,最多需要的比较次数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.48 B.96 C.7 D.6</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">24 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二分查找的理解。对于长度为 n 的有序线性表,在最坏情况下,二分 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">查找只需要比较 log</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n。本题中 n=97,最多需要比较的次数是 log</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">97,6<log</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">97<7,故需要 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">比较 7 次。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.二分查找法只适用于顺序存储的有序线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.二分查找法适用于任何存储结构的有序线性表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.二分查找法适用于有序循环链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.二分查找法适用于有序双向链表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查二分查找的应用。二分查找应用的条件是有序的顺序表,故 A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.设表的长度为 n。下列查找算法中,在最坏情况下,比较次数最少的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.顺序查找 B.寻找最大项 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.寻找最小项 D.有序表的二分查找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查查找技术的理解。在最坏情况下,顺序查找的比较次数是 n 次,寻找 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最大项或寻找最小项的比较次数是 n-1,有序表的二分查找是 log2n。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第八节 排序技术 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.交换类排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">冒泡排序法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:通过两两相邻数据元素之间的比较和交换,不断地消去逆序,直到所有数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据元素有序为止。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">操作步骤 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">从前往后扫描,如果相邻的两个数据元素,前面的元素大于后面的元素,则将它们交 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">换,并称消去了一个逆序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">然后进行第二趟排序,对前 n-1 个记录进行同样操作,其结果是使关键字次大的记录 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">被安置到第 n-1 个记录的位置上。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继续上述操作,直到整个线性表完全有序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{49,38,65,97,76,13,27}使用冒泡排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏情况下冒泡排序需要比较的次数为 n(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n-1)/2,时间复杂度 O(n2)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">快速排序法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">快速排序是有冒泡排序改进而来,在冒泡排序过程中,只对相邻的两个记录进行比较, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">因此每次交换两个相邻记录时只能消除一个逆序。如果能通过两个(不相邻)记录的一次</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">25 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">交换,消除多个逆序,则会大大加快排序的速度。快速排序方法中的一次交换可能消除多 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个逆序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:在待排序的 n 个元素中取一个元素 K(通常取第一个元素),以元素 K 作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为分割标准,把所有小于 K 元素的数据元素都移动到 K 前面,把所有大于 K 的数据元素都 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">移动到 K 后面,结果将待排序序列分为两个子表,这称为一趟排序。然后对这两个子表分 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">别重复上述过程,直到分割的子表只有一个元素,排序完成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{45,30,61,82,74,12,26,49}使用快速排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">快速排序最坏情况下需要进行 n(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n-1)/2 次比较,实际排序效率要比冒泡排序高得 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">多。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.插入类排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">插入类排序是每次将其中一个待排元素,按其元素值的大小插入前面已排好序的子表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中的适当位置,直到全部元素插入完成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">简单插入排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:把 n 个待排序的元素看成是一个有序表和无序表。初始时,有序表中只包 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">含一个元素,无序表中包含另外的 n-1 个元素,每次取无序表中的第一个元素插入有序表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中的正确位置,使之成为增加一个元素的新有序表。插入元素时,插入位置及其后的记录 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">依次向后移动。最后有序表的长度为 n,而无序表为空,此时排序完成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{49,38,65,97,76,13,27,48}使用简单插入排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">简单插入排序最好情况下,比较次数为 n-1。最坏情况下,比较次数为 n(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n-1)/2。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">时间复杂度为 O(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">希尔排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:先取一个整数(增量)d1<n,把全部数据元素分成 d1 个组,所有距离为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">d1 倍数的元素放在一组中,组成一个子序列,对每个子序列分别进行简单插入排序。然后 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">取 d2<d1,重复上述分组和排序工作,直到 di=1,即所有的记录在一组中为止。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{49,38,65,97,76,13,27,49,55,4}使用希尔排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏情况下,希尔排序所需要的比较次数为 n </span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">1.5</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.选择类排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选择类排序是每一次从待排序序列中选出值最小的元素,顺序放在已排好序的有序子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表的后面,直到全部序列满足排好序为止。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">简单选择排序</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">26 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:先从所有的 n 个待排序的数据元素中选择最小的元素,将该元素与第一个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元素交换,再从剩下的 n-1 个元素中选出最小的元素与第二个元素交换。重复这样的操作, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">直到所有元素有序为止。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{49,38,65,97,49,13,27,76}使用简单选择排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏情况下,简单选择排序所需要的比较次数为 n(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n-1)/2。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">堆排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本思想:先将一个无序序列建成堆,然后将堆顶元素与堆中最后一个元素交换。不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">考虑已经换到最后的那个元素,将剩下的 n-1 个元素重新调整为堆。重复此操作,直到所 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有元素有序为止。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示例:对线性表{47,91,53,85,30,12,24,36}使用堆排序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏情况下,堆排序所需要的比较次数为 nlog</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.对长度为 10 的线性表进行冒泡排序,最坏情况下需要互换的次数为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.9 B.10 C.45 D.90 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考察冒泡排序算法。冒泡法是在扫描过程中逐次比较相邻两个元素的大小, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最坏的情况下是每次比较都要将相邻的两个元素互换,需要互换的次数是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">9+8+7+6+5+4+3+2+1=45,选项 C 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.在排序过程中,每一次数据元素的移动会产生新的逆序的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.快速排序 B.简单插入排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.冒泡排序 D.以上说法均不正确 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考察几种排序算法的基本概念。冒泡排序只交换相邻元素,但不是每次移 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">动都会产生新的逆序。简单插入排序不会产生新的逆序。快速排序每一次移动都会产生新 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的逆序,因此 A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.下列排序方法中,最坏情况下时间复杂度(即比较次数)低于 O(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">n</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">)的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.快速排序 B.希尔排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.简单插入排序 D.冒泡排序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考察几种排序算法的时间复杂度。希尔排序的时间效率与所取的增量序列 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有关,如果增量序列为:d</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">1</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">=n/2, d</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">+1=d</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">i</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">/2,在最坏情况下,希尔排序所需要的比较次数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为 O(n</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">1.5</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">)。最坏情况下,时间复杂度低于 O(n</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">2</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">)的排序算法有堆排序和希尔排序。B 选项正 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.下列序列中不满足堆条件的是()。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.(98,95,93,96,89,85,76,64,55,49)</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">27 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.(98,95,93,94,89,85,76,64,55,49) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.(98,95,93,94,89,90,76,64,55,49) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.(98,95,93,94,89,90,76,80,55,49) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考察堆排序算法的理解。若有n个元素的序列,将元素按顺序组成一棵完 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于其左右子 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结点的值;小根堆,所有结点的值小于或等于其左右子结点的值。B、C、D 选项属于大根 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">堆,A 选项由于 98>95,判断属于大根堆,但 95<96,不满足条件,不是堆,故选择 A 选项。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.在快速排序法中,每经过一次数据交换或(移动)后( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.只能消除一个逆序 B.能消除多个逆序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.不会产生新的逆序 D.消除的逆序个数一定比新产生的新的逆序个数多 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考察快速排序算法的理解。根据排序算法的基本思想可知,一次数据交换 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可以消除多个逆序,消除的逆序个数不一定比新产生的新的逆序个数多。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">基本要求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握程序设计方法与风格 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握结构化程序设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握面向对象的程序设计方法、对象、方法、属性及继承和多态性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 12pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第二章 程序设计基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">本章内容导学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.熟记程序设计方法与风格,重点掌握程序注释。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握结构化程序设计的 4 个主要原则、3 种结构和注意事项 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握面向对象的相关概念以及面向对象方法的优点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第一节 程序设计方法与风格 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.程序设计的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是指设计、编制、调试程序的方法和过程。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序设计不等于编程,编程只是程序设计中的一小步。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序的质量影响因素:程序设计的方法、技术、风格等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.程序设计风格 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是指编写程序时所表现出的特点、习惯和逻辑思路。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">良好的程序设计风格可以使程序结构清晰合理,代码易于维护。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">良好的程序设计风格应该遵循一组规范</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">28 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">源程序文档化:源程序中可包含一些内部文档,以帮助人们阅读和理解源程序。应该 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">考虑符号的命名、程序注释和视觉组织等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据说明的方法:可采用下列数据说明风格。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">数据说明风格 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">详细说明 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">次序应规范化 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">使数据说明次序固定,数据的属性易于查找,有利于测试和维护。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">变量安排有序化 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">当有多个变量出现在同一个说明语句中,变量名应该按字母顺序排 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">使用注释 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">在定义复杂的数据结构时,应该使用注释来说明该数据结构的特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.程序的设计风格 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">语句的结构:为了使程序简单易懂,语句构造应该简单。下面列出书写语句常用的几 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">条原则。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">应优先考虑清晰性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">首先要保证程序的正确性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">尽可能使用库函数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">要模块化 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">无法修改的程序,重新编写 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">输入和输出:是用户直接关心的,因此要尽量方便用户使用,应遵循以下原则。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">确保输入数据的合法性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">输入数据时,应允许使用自由格式,允许默认值。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据输入完毕后,最好有结束标记。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">采用交互式输入/输出进行输入时,使用明确提示输入的请求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">当程序设计语言对输入格式有严格要求时,应该保持输入格式和输入语句的一致性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">给所有的输出加注释,并设计良好的输出报表格式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第二节 结构化程序设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.结构化程序设计的重要原则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">自顶向下:在程序设计时先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">标。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逐步求精:对复杂的问题,应设计一些子目标做过渡,逐步细化。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,每个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">小目标称为一个模块。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">限制使用 goto 语句。</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.结构化程序的基本结构与特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构化程序中的三种基本结构是:顺序、选择、循环结构。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">共同特点是只有一个入口和出口。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">顺序结构:按照程序中语句的先后顺序依次执行。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选择结构:根据条件是否成立,执行相应的语句。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">循环结构:根据条件是否成立,判断是否需要重复执行循环体语句。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">while 循环:先判断后执行循环体,当条件不成立时,循环体一次也不执行。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">Do-while 循环:先执行循环体,然后在判断条件是否成立。当条件不成立时,循环体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">也会执行一次。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构化程序的特点是:程序易于理解、使用和维护;提高了编程工作的效率,降低了 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件开发成本。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.结构化程序设计的注意事项 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">使用顺序、选择、循环结构表示程序的逻辑 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序语句组成容易识别的功能模块,每个模块只有一个入口和一个出口。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">复杂结构可以使用基本结构来实现。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">严格控制 goto 语句的使用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第三节 面向对象的程序设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.面向对象方法的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">面向对象就是用人类在现实世界中常用的思维方法来认识、理解和描述客观事物。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">面向对象中的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念:客观世界中的任何实体。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">组成:对象是属性和方法封装在一起的统一体。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">属性:对象所包含的信息,通常是静态的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">方法:对象所做的操作,通常是动态的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">基本特点:标识唯一性(一个对象可由对象名、属性和操作三部分组成)、分类性(可 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">以将相同属性和操作的对象封装成类)、多态性(同一操作可以是不同对象的行为,不同 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对象执行同一操作产生不同结果)、封装性(对象的内部对外不可见)、模块独立性(完 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">成对象功能所需要的元素被封装在对象内部)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">类和实例 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">29</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">类:具有共同属性、共同方法的对象的集合,是对象的抽象。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实例:一个具体对象对应于一个类的实例。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">消息 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">消息是对象间进行通信的手段,一个对象通过向另一个对象发送消息来请求其服务。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">消息的使用类似于函数调用,一个消息由 3 部分构成:接收消息的对象名称、消息名、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">参数列表。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">消息只告诉接收者需要完成什么样的操作,具体的操作实现由消息接收负责。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个对象能够接收不同形式、不同内容的多个消息;形式相同的消息可以送往不同的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对象,不同的对象对于形式相同的消息可以有不同的解释,能做出不同的反应。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继承 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继承是指能够直接获得已有的性质和特征,而不必重复定义。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继承可以使一个子类直接继承其父类的全部描述,这些属性和操作在子类中不必再重 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">复定义,此外,子类还可以定义自己的属性和操作。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继承的传递性:如果类 X 继承类 Y,类 Y 继承类 Z,则类 X 继承类 Z。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">继承的优点:相似的对象可以共享程序和数据,大大减少了程序中的冗余信息,提高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件的可复用性,便于后期修改与维护。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">多态性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象,也可 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">以发送给子类对象。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">优点:增强了系统的灵活性,进一步较少冗余信息,提高了软件的可重用性和可扩充 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.面向对象方法的优点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">与人类习惯的思维方法一致 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">稳定性好 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可重用性好 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">容易开发大型软件产品 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可维护性好 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.结构化程序设计的基本原则不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.多态性 B.自顶向下 C.模块化 D.逐步求精 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查结构化程序设计的基本原则。结构化程序设计的思想包括:自顶向下、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逐步求精、模块化、限制使用 goto 语句,所以选择 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">30</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.在面向对象方法中,不属于"对象"基本特点的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.一致性 B.分类性 C.多态性 D.标识唯一性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查对象的基本特点。对象有如下一些基本特点:标识唯一性、分类性、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">多态性、封装性、模块独立性好。所以选择 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.面向对象方法中,继承是指( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.一组对象所具有的相似性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.一个对象具有另一个对象的性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.各对象之间的共同性质 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.类之间共享属性和操作的机制 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查继承概念的理解。继承是面向对象的方法的一个主要特征,是使用已 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。因此答 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">案选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.结构化程序所要求的基本结构不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.顺序结构 B.GOTO 跳转 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.选择(分支)结构 D.重复(循环)结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查结构化程序设计中 3 种基本结构。结构化程序所要求的基本结构是顺 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">序、选择和循环结构,答案选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.-369 B.369 C.0.369 D.整数集合{1,2,3,4,5} </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查类和实例的相关概念。只有 B 选项 369 可以用无符号整数来表示和存 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">储。A 选项-369 有负号,选项 C0.369 是小数都不能用无符号整数类存储。选项 D 是一个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">整数集合得用数组来存储。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.下面对对象概念描述正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.对象间的通信靠消息传递 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.对象是名字和方法的封装体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.任何对象必须有继承性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.对象的多态性是指一个对象有多个操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查面向对象方法中的基本概念。对象之间进行通信的构造叫做消息,A </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">正确。多态性是指同一个操作可以是不同对象的行为,D 错误。对象不一定必须有继承性, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C 错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构以及实现操作,B 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">31</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">32 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.结构化程序设计中,下面对 goto 语句使用描述正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.禁止使用 goto 语句 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.使用 goto 语句程序效率高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.应避免滥用 goto 语句 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.以上说法均错误 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查 goto 语句的理解。结构化程序设计中,要注意尽量避免 goto 语句的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">使用,故选 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.面向对象方法中,实现对象的数据和操作结合于统一体中的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.结合 B.封装 C.隐藏 D.抽象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查封装的理解。对象的基本特点是:标识唯一性、分类性、多态性、封 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">仅对外提供访问方式,B 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">9.下面对类-对象主要特征描述正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.对象唯一性 B.对象无关性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.类的单一性 D.类的依赖性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查对象与类之间的关系。对象的基本特点是:标识唯一性、分类性、多 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故 A </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">10.下列选项中不符合良好的程序设计风格的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.源程序要文档化 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.数据说明的次序要规范化 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.避免滥用 goto 语句 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.模块设计要保证高耦合、高内聚 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查良好程序设计风格的规范。模块设计要保证高内聚、低耦合,D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">11.结构化程序设计风格强调的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.程序的执行效率 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.程序的易读性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.不考虑 goto 语句的限制使用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.程序的可移植性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查良好程序设计风格的理解。结构化程序设计风格强调的是易读性和可 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">维护性,答案选 B。</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">12.下面对对象概念描述正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.属性就是对象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.操作是对象的动态属性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.任何对象都必须有继承性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.对象是对象名和方法的封装体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查对象概念的理解。对象是由对象名、属性和方法构成,属性是对象的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">静态属性,方法是对象的动态属性,因此 B 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">基本要求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握软件工程的基本概念、软件生命周期概念、软件工具和软件开发环境 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握结构化分析方法、数据流图、数据字典、软件需求规格说明书 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握结构化设计方法、总体设计与详细设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.掌握软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元测试、集成测试和系统测试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.掌握程序的调试,静态调试与动态调试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 12pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第三章 软件工程基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">本章内容导学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握软件的定义和分类、软件工程的定义和目标、软件开发工具与开发环境 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握需求分析的定义以及工作和分析方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握软件设计的分类及基本原理 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.掌握软件测试的目的和准则、软件测试方法的分类、软件测试实施过程的 4 个步骤 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.掌握程序调试的任务、软件调试的 3 种方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第一节 软件工程的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.软件的定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计算机软件由两部分组成 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一是机器可执行的程序和数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">简记:软件=程序+数据+文档 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序:用某种程序设计语言描述的,能够在计算机中执行的语句序列 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据:使程序能够正常操作信息的数据结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">文档:与程序开发、维护和使用有关的资料 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">33</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计算机系统=计算机软件+计算机硬件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.软件的特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件是一种逻辑实体,具有抽象性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件没有明显的制作过程。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件在使用期间没有磨损、老化等问题。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对硬件和环境具有依赖性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件复杂性高,成本昂贵。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件开发涉及诸多的社会因素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.软件的分类 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计算机软件按照功能可分为应用软件、系统软件和支撑软件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系统软件:管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">例如操作系统(OS)、数据库管理系统(DBMS)、编译程序、汇编程序等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">应用软件:为了应用于特定领域而开发的软件。例如 QQ、微信、迅雷等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">支撑软件:处于系统软件和应用软件之间,协助用户去开发软件的工具型软件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.软件危机 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:在计算机的开发和维护过程中所遇到的一系列严重问题。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件危机不仅是不能正常运行的软件才有的,几乎所有软件都会存在软件危机。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件危机产生的原因 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件本身的特点,如复杂性高、规模庞大等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件开发与维护的方法不正确(主要原因) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.软件工程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为了消除软件危机,软件工程这门新兴的学科应运而生。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">和工序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件工程包含方法、工具和过程 3 个要素。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">方法:完成软件开发各项任务的技术手段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">工具:支持软件的开发、管理、文档生成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">过程:支持软件开发的各个环节的控制和管理。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件工程的原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">验证性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.软件生命周期 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">34</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">35 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">生命周期。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件生命周期可分为 3 个时期共 8 个阶段 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件的定义期:包括问题定义、可行性研究、需求分析 3 个阶段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件的开发期:包括总体设计、详细设计、实现、测试 4 个阶段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">运行维护期:即使用和维护阶段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.软件生命周期 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件生命周期各阶段的主要任务 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">问题定义:确定待解决的问题是什么 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可行性研究:决定该问题是否存在可行的解决办法,并制定完成开发任务的实施计划。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求分析:对待开发软件提出的需求进行分析并给出详细定义。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件设计:可分为总体设计和详细设计两个阶段,给出软件的结构、模块的划分、功 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">能的分配以及处理流程。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件实现:在软件设计的基础上编程实现。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件测试:通过设计测试用例,检验软件的各个组成部分。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">使用与维护:将已交付的软件投入运行,同时不断地进行维护和必要的扩充与修改。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第二节 结构化分析方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.需求分析 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件需求:用户对于软件系统在功能、性能、行为、设计等方面的期望。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求分析的任务:发现需求、求精、建模和定义需求的过程。需求分析将建立数据模 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">型、功能模型和控制模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用户解决问题或达到目标所需的条件或权能。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系统或系统部件要满足合同、标准、规范或者其他正式文档所需要的具有的条件或权 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">能。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一种反映上述两条所描述条件或权能的文档说明 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.需求分析阶段的工作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可以分为 4 个方面 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求获取:获取用户对于目标系统的完整、准确和具体的需求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求分析:对获取到的需求进行分析,给出系统的解决方案和目标系统的逻辑模型。</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">编写需求规格说明书:既可以作为用户、设计人员和开发人员沟通的桥梁,又可以作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为控制软件开发进程的依据。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求评审:从一致性、完整性、现实性、有效性 4 个方面复审需求规格说明书。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.需求分析方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可分为结构化分析方法和面向对象分析方法。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">从建模的特性划分,可分为静态分析方法和动态分析方法。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构化分析:使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">树等工具,来建立一种新的结构化规则说明的目标文档。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构化分析的实质:以数据流图和数据字典为主要工具,建立系统的逻辑模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.结构化分析方法的常用工具 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据流图(DFD):是系统逻辑模型的图形表示,可以方便分析员和用户进行沟通交 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">流的工具。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据流图的 4 个主要图形元素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项:数据流和数据存储都是数据,仅仅是所处的状态不同,数据存储是处于静 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">止状态的数据,数据流是处于运动中的数据。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据字典(DD):对数据流图中所有元素定义的集合,是结构化分析的核心 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据流图和数据字典共同构成系统的逻辑模型,缺一不可。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据字典中有数据流、数据项、数据存储和加工 4 种类型的条目。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">判定表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如果一个加工逻辑有多个条件、多个操作,并且在不同的条件组合下执行不同的操作, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">可以采用判定表来描述。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">判定树:和判定表无本质区别,用判定表可以表示的加工逻辑都可以用判定树表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.软件需求规格说明书 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是需求分析阶段的产物,是软件开发过程中的重要文档之一。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第三节 结构化设计方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.软件设计基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件设计基本目标:用比较抽象概括的方式确定目标系统如何完成预定的任务,即软 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">件设计是确定系统的物理模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件设计的分类 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">按工程管理角度划分,可以分为概要设计和详细设计。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">36</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">按技术观点划分,可以分为结构设计、数据设计、接口设计、过程设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件设计的基本原理和准则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块化:将软件划分成可独立访问的模块,每个模块完成一个子功能,将这些模块集 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">成起来构成一个整体,就可以完成指定功能。模块化过程中,模块的数据不应过多,也不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">应过少。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">抽象:抽出事务的本质特征,暂时不考虑它们的细节和差异。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">信息隐藏:一个模块内的信息对于不需要这些信息的模块来说是不能访问的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块独立性:每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">很简单。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块独立性的度量:内聚性和耦合性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">内聚:衡量一个模块内部各个元素彼此结合的紧密程度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">耦合:衡量不同模块间互相依赖的紧密程度。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结论:一般来说,模块应遵循高内聚、低耦合。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.总体设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">总体设计的基本任务 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">设计软件系统结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据结构和数据库设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">编写总体设计文档 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">总体设计文档评审 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在结构化设计方法中,常用的结构设计工具是结构图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据流图的类型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">变换型:可以明显的分成输入、变换中心、输出。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">事务型:有明显的事务中心,各数据流以事务中心为起点成辐射状流出。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">结构化设计准则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">提高模块的独立性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块规模要适中。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">深度、宽度、扇出和扇入都应该适当 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块的作用域在控制域之内 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">降低模块之间接口的复杂程度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">设计单入口单出口的模块 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块功能应该可以预测 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.详细设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">37</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">详细设计的任务:是为软件结构图中的每个模块确定实现算法和局部数据结构,用某 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">种特定的表达工具表示算法和数据结构的细节。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">常用的详细设计工具 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">图形工具:程序流程图、N-S 图、PAD 图、HIPO 图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表格工具:判定表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">语言工具:PDL(伪码) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程序流程图中基本图符 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">方框:表示加工步骤。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">菱形:表示逻辑条件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">箭头:表示控制流。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第四节 软件测试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.软件测试的目的和准则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">目的:尽可能多地发现并排除软件中隐藏的错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">准则 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所有测试都应追溯到用户需求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在测试之前制定测试计划,并严格执行 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">充分注意测试中的群集现象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">避免由程序的编写者测试自己的程序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">不可能进行穷举测试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">妥善保存测试计划、测试用例、出错统计和最终分析报告 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.软件测试的方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据软件是否需要被执行,可以分为静态测试和动态测试。静态测试不实际运行软件, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">主要通过人工进行分析;动态测试需要运行软件来检验。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据功能划分,可以分为白盒测试和黑盒测试。白盒测试需要完全了解程序的内部结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">构,黑盒测试不需要了解。白盒测试的主要技术有逻辑覆盖测试、基本路径测试。黑盒测 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">试的主要技术有等价类划分法、边界值分析法、错误推断法和因果关系法。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.软件测试的实施 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件测试的实施过程主要有 4 个步骤 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">单元测试:对模块进行正确性检验,可以采用动态测试或静态测试。动态测试通常以 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">白盒测试为主,黑盒测试为辅。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">38</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">集成测试:对各模块组装起来的程序进行测试,通常采用黑盒测试。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">确认测试:检查软件的功能、性能及其他特征是否和用户的需求一致,通常采用黑盒 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系统测试:将软件系统作为整体在实际运行环境下进行测试。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第五节 程序的调试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.程序调试的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:调试是在测试发现错误之后排除错误的过程。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">任务:诊断和改正程序中的错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">调试和测试的区别 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试贯穿整个软件生命周期,调试主要是在开发阶段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试是找出问题,调试是解决问题。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.软件调试的方法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3 种方法:强行排错法、回溯法、原因排除法(二分法、归纳法、演绎法)。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.程序流程图中带有箭头的线段表示的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.图元关系 B.数据流 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.控制流 D.调用关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查程序流程图的基本图符。在数据流图中,用标有名字的箭头表示数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">流。在程序流程图中,用标有名字的箭头表示控制流。所以选择 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.软件设计中模块划分应遵循的准则是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.低内聚低耦合 B.高内聚低耦合 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.低内聚高耦合 D.高内聚高耦合 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查模块划分准则。软件设计中模块划分应遵循的准则是高内聚低偶合、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">之间的耦合应尽可能的低,模块的内聚度应尽可能的高。因此选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.在软件开发中,需求分析阶段产生的主要文档是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.可行性分析报告 B.软件需求规格说明书 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.概要设计说明书 D.集成测试计划 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">39</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件生命周期各个阶段的产物。A 错误,可行性分析阶段产生可行性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">分析报告。C 错误,概要设计说明书是总体设计阶段产生的文档。D 错误,集成测试计划 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是在概要设计阶段编写的文档。B 正确,需求规格说明书是后续工作如设计、编码等需要 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的重要参考文档。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.结构化程序所要求的基本结构不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.顺序结构 B.GOTO 跳转 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.选择(分支)结构 D.重复(循环)结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查结构化程序设计中 3 种基本结构。结构化程序所要求的基本结构是顺 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">序、选择和循环结构,答案选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.数据流图中带有箭头的线段表示的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.控制流 B.事件驱动 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.模块调用 D.数据流 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据流图主要元素的理解。数据流图中带箭头的线段表示的是数据流, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">即沿箭头方向传送数据的通道,一般在旁边标注数据流名。因此答案选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.在软件开发中,需求分析阶段可以使用的工具是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.N-S 图 B.DFD 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.PAD 图 D.程序流程图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查需求分析阶段使用的工具。在需求分析阶段可以使用的工具有数据流 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">图 DFD 图,数据字典 DD,判定树与判定表,所以选择 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">应用软件的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.编译程序 B.操作系统 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.教务管理系统 D.汇编程序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查计算机软件的分类。编译软件、操作系统、汇编程序都属于系统软件, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">只有 C 教务管理系统才是应用软件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.下面叙述中错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件测试的目的是发现错误并改正错误 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.对被调试的程序进行"错误定位"是程序调试的必要步骤 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序调试通常也称为 Debug </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.软件测试应严格执行测试计划,排除测试的随意性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件测试和调试的区别。软件测试的目的是为了发现错误而执行程序 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的过程,并不涉及改正错误,所以选项 A 错误。程序调试的基本步骤有:错误定位、修改 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">40</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为 Debug, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">能、妥善保存测试计划等文件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">9.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.提高耦合性降低内聚性有利于提高模块的独立性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.降低耦合性提高内聚性有利于提高模块的独立性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.内聚性是指模块间互相连接的紧密程度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查耦合性和内聚性的概念。模块独立性是指每个模块只完成系统要求的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的独立性,所以 A 错误,B 正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指一个模块内部各个元素间彼此结合的紧密程度,所以 C 与 D 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">10.软件详细设计生产的图如下,该图是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.N-S 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.PAD 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序流程图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.E-R 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查程序流程图的基本图符及其含义。N- </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">S图提出了用方框图来代替传统的程序流程图,所以A不对。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">PAD 图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">详细设计的图形表示工具,所以 B 不对。E-R 图是数据库中的用于表示 E-R 模型的图示 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">工具,所以 D 不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">11.软件生命周期是指( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件产品从提出、实现、使用维护到停止使用退役的过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.软件从需求分析、设计、实现到测试完成的过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.软件的开发过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.软件的运行维护过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件生命周期的概念。常,将软件产品从提出、实现、使用维护到停 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">产品不能使用为止的整个时期都属于软件生命周期。因此答案选 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">41</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">12.软件生命周期中的活动不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.市场调研 B.需求分析 C.软件测试 D.软件维护 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件生命周期的 3 个时期 8 个阶段。软件生命周期可以分为软件定义、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件开发与软件运行维护三个时期。主要活动阶段是:可行性研究与计划阶段,需求分析, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件设计,软件实现,软件测试,运行和维护,所以选择 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">13.下面描述中,不属于软件危机表现的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件过程不规范 B.软件开发生产率低 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.软件质量难以控制 D.软件成本不断提高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件危机的理解。软件危机主要表现在:软件需求的增长得不到满足; </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">择 A。, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">14.下面不属于需求分析阶段任务的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.确定软件系统的功能需求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.确定软件系统的性能需求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.需求规格说明书评审 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.制定软件集成测试计划 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查需求分析阶段任务。需求分析阶段的工作有:需求获取;需求分析; </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">编写需求规格说明书;需求评审,所以选择 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">15.在黑盒测试方法中,设计测试用例的主要根据是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.程序内部逻辑 B.程序外部功能 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序数据结构 D.程序流程图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查黑盒测试的基本原理。黑盒测试是对软件已经实现的功能是否满足需 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">16.在软件设计中不使用的工具是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.系统结构图 B.PAD 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据流图(DFD 图) D.程序流程图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件设计阶段使用的工具。系统结构图是对软件系统结构的总体设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">次结构,是在概要设计阶段用到的。PAD 图是在详细设计阶段用到的。程序流程图是对程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">42</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">择 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">17.软件需求规格说明书的作用不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件验收的依据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.用户与开发人员对软件要做什么的共同理解 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.软件设计的依据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.软件可行性研究的依据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件需求规格说明书的作用。软件需求规格说明书是需求分析阶段的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。① </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">便于用户、开发人员进行理解和交流,B 正确;②反映出用户问题的结构,可以作为软件 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">开发工作的基础和依据,C 正确;③作为确认测试和验收的依据,A 正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">18.下面属于黑盒测试方法的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.语句覆盖 B.逻辑覆盖 C.边界值分析 D.路径覆盖 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查黑盒测试方法。黑盒测试不关心程序内部的逻辑,只是根据程序的功 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">盒测试法分等价类划分法、边界值分析法和错误推测法,答案为 C。而 A、B、D 均为白盒 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试方法。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">19.下面不属于软件设计阶段任务的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件总体设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.算法设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.制定软件确认测试计划 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.数据库设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件设计的分类。从技术观点上看,软件设计包括软件结构设计、数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据设计、接口设计、过程设计。所以 A、B、D 正确,C 为软件测试阶段的任务。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">20.下面属于白盒测试方法的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.等价类划分法 B.逻辑覆盖 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.边界值分析法 D.错误推测法 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查白盒测试方法。白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖,选择 B。其余 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">三项为黑盒测试法。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">21.构成计算机软件的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">43</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.源代码 B.程序和数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序和文档 D.程序、数据及相关文档 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查计算机软件的定义。软件指的是计算机系统中与硬件相互依赖的另一 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">部分,包括程序、数据和有关的文档,选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">22.下面不属于软件测试实施步骤的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.集成测试 B.回归测试 C.确认测试 D.单元测试 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件测试的实施步骤。软件测试主要包括单元测试、集成测试、确认 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试和系统测试,选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">23.软件工程的三要素是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.方法、工具和过程 B.建模、方法和工具 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.建模、方法和过程 D.定义、方法和过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件工程的 3 个要素。软件工程是应用于计算机软件的定义、开发和 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">维护的一整套方法、工具、文档、实践标准和工序。软件工程包含 3 个要素:方法、工具 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">和过程。A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">24.软件生命周期中,确定软件系统要做什么的阶段是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.需求分析 B.软件测试 C.软件设计 D.系统维护 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件生命周期中各个阶段的主要任务。软件生命周期各阶段的主要任 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">务是:问题定义、可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">运行维护。其中需求分析是指对待开发软件提出的需求进行分析并给出详细定义,也即是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">确定软件系统要做什么,A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">25.使用白盒测试方法时,设计测试用例应根据( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.程序的内部逻辑 B.程序的复杂结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.程序的功能 D.使用说明书 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查白盒测试的概念。白盒测试又称为结构测试或逻辑驱动测试,它允许 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">路径进行测试,故 A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">26.下面对软件特点描述错误的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.软件没有明显的制作过程 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.软件是一种逻辑实体,不是物理实体,具有抽象性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.软件的开发、运行对计算机系统具有依赖性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.软件在使用中存在磨损、老化问题 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">44</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查软件的特点。软件具有以下特点:软件是一种逻辑实体,具有抽象性; </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素。故 D 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">基本要求 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握数据库的基本概念。数据库、数据库管理系统、数据库系统。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握数据模型。实体联系模型 E-R 图,从 E-R 图导出关系数据模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握关系代数运算。包括集合运算及选择、投影、连接运算,数据库规范化理论。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.掌握数据库设计方法与步骤。需求分析、概念设计、逻辑设计和物理设计的相关策 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">略。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 12pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第四章 数据库设计基础 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">本章内容导学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.掌握数据库技术的发展、数据库系统的基本特点、数据库体系结构等 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.掌握数据模型的基本概念、理解层次模型、关系模型和网状模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.掌握关系运算的基本运算和扩充运算 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.掌握数据库设计概述,理解需求分析、概念设计、逻辑设计和物理设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第一节 数据库系统的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.相关术语 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据:描述事物的符号记录称为数据。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库:长期存储在计算机内的、有组织、可共享的数据集合。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">简单的讲,数据库就是存放数据的仓库,只不过数据库中存放的数据是按照一定的数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据模式存放的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库中数据的特点是集成与共享。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理系统:是一个系统软件,复责数据库中的数据组织、数据操纵、数据维护、 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">控制及保护和数据服务等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理系统是数据库系统的核心,位于用户和操作系统之间。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库系统提供了相应的数据语言:数据定义语言、数据操纵语言、数据控制语言。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理员:由于数据库的共享性,需要专人管理数据库的规划、设计、维护、监 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">视等。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理系统:由数据库、数据库管理系统、数据库管理员、硬件平台、软件平台 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">构成。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">45</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">46 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">硬件平台:计算机、网络。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">软件平台:操作系统、数据库系统开发工具、接口软件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库应用系统:在数据库的基础上,如果使用数据库管理系统(DBMS)软件和数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">库开发工具书写应用程序,用相关的可视化工具开发出应用界面,则构成了数据库应用系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">统。核心问题是数据库的设计。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库、数据库管理系统、数据库系统之间的关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理系统是数据库系统的核心,数据库管理系统又是管理数据库的,因此可以 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">认为数据库系统包括数据库管理系统,数据库管理系统包括数据库。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.数据库技术的发展 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据管理技术发展经历了三个阶段:人工管理阶段、文件管理阶段和数据库管理阶段。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.数据库系统的基本特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据集成性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的共享性高,冗余性低 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据独立性高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的独立性包括物理独立性和逻辑独立性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据独立性是由 DBMS 的二级映射功能实现的。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据统一管理与控制 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的安全性保护 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据的完整性检查 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">并发控制 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.数据库体系结构 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库的体系结构均采用“三级模式和两级映射”。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库系统的三级模式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念模式:也叫模式,是数据库系统中全局数据逻辑结构的描述,全体用户的公共数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据视图。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外模式:也叫子模式或用户模式,是用户的数据视图,也就是用户所能够看见和使用 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。外模式通常 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">是模式的子集,一个数据库可以有多个外模式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">内模式:也叫物理模式,是数据物理结构和存储方式的描述,是数据在数据库内部的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表示方式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.三级模式结构的关系</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">内模式:处于最底层,反映了数据在计算机物理结构中的实际存储形式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念模式:处于中层,反映了设计者的数据全局逻辑要求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外模式:处于最外层,反映了用户对数据的要求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">注意事项:一个数据库只有一个内模式和概念模式,外模式可以有多个。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.数据库系统的两级映射 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库系统在三级模式之间提供了两级映射 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外模式/概念模式的映射 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念模式和内模式的映射 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">两级映射保证了数据具有较高的逻辑独立性和物理独立性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外模式/概念模式的映射。对于每一个外模式,数据库系统都提供一个外模式/概念模 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">式的映射,它定义了该外模式描述的数据逻辑结构和概念模式描述的全局逻辑结构之间的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">对应关系。当概念模式改变时,只需修改外模式/概念模式的映射,外模式不用修改,即 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">应用程序不必修改,保证了数据的逻辑独立性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念模式和内模式的映射。概念模式和内模式的映射是唯一的,它定义了概念模式描 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">述的全局逻辑结构和内模式描述的存储结构之间的关系,当内模式改变时,只需修改概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模式和内模式的映射,概念模式可以保持不变,保证了数据的物理独立性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第二节 数据模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.数据模型的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据模型:对现实世界的虚拟、描述或表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据模型的三要素 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据结构:对象类型的集合,是对系统静态特性的描述。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">47</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">48 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据操作:相应数据结构上允许执行的操作及操作规则的集合。数据操作是对数据系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">统动态特性的描述。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据约束:是一组完整性规则的集合。也就是说,具体的应用数据必须遵循特定的语 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">义约束条件,以保证数据的正确、有效和相容。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.数据模型的类型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据不同的应用层次,数据模型可分为 3 种类型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念数据模型:简称概念模型,它是一种面向客观世界、面向用户的模型,与具体的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库管理系统和具体的计算机平台无关。最著名的概念模型有实体联系模型和面向对象 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逻辑数据模型:也称数据模型,是面向数据库系统的模型,着重于数据库系统一级的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实现。大量使用的数据模型有层次模型、网状模型、关系模型和面向对象模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">物理数据模型:也称物理模型,是面向计算机物理实现的模型,此模型给出了数据模 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">型在计算机上物理结构的表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.E-R 模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实体联系模型简称 E-R 模型,采用了 3 个基本概念:实体、联系、属性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实体:客观存在并且可以相互区别的事物。可以是具体的事物,也可以是抽象的事件。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">属性:描述实体的特性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">联系:实体之间的对应关系,反映了现实世界事物之间的相互关联。实体间联系的类 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">型可以分为 3 种。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一对一联系(1:1):如果实体集 A 中每一个实体只与实体集 B 中的一个实体相联系, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">反之亦然。例如系和系主任。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一对多联系(1:n):如果实体集 A 中的每一个实体,在实体集 B 中都有多个实体与 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">之对应;在实体集 B 中的每个实体,在实体 A 中只有一个实体与之对应。例如部门和员工。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">多对多联系(n:m):如果实体集 A 中的每一个实体,在实体集 B 中都有多个实体与 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">之对应,反之亦然。例如学生和课程。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.E-R 图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">E-R 图可以直观地表达出 E-R 模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">E-R 模型中的三个概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实体集:矩形表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">属性:椭圆形表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">联系:菱形表示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.层次模型</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">49 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">层次模型的数据结构:用树形结构表示实体及其之间联系的模型称为层次模型。在层 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">次模型中,节点是实体,树枝是联系,从上到下是一对多的联系。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">层次模型的数据操作和完整性约束 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">进行插入操作时,如果没有相应父节点的值就不能插入子节点的值。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">进行删除操作时,如果删除的节点有子女节点,则相应的子女节点也被同时删除。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">进行修改操作时,应修改所有相应的记录,以保证数据的一致性。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.网状模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义:用网状结构表示实体和实体之间 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">联系的模型。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">网状模型的特点 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">允许一个或多个节点无父节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个节点可以有多于一个的父节点。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.关系模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系模型是目前最常用的数据模型之一。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系模型中常用的术语 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系:关系模型采用二维表来表示关系,一个二维表就表示一个关系。如下表所示, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">学生登记表就是一个关系。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">学生登记表 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">学号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">姓名 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">系号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">年龄 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">性别 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">001 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">张三 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">01 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">20 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">男 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">005 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">李四 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">02 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">22 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">女 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">007 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">王五 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">03 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">18 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">女 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">属性:二维表中的一列。如学生登记表中学号、姓名、系号、年龄、性别。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">值域:每个属性的取值范围。如年龄属性的值不能为负数。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">元组:二维表中的一行称为元组。如(001,张三,01,20,男)就是一个元组。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">候选码:二维表中能唯一标识元组的最小属性集。假设姓名不允许重名,则学号和姓 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">名都是候选码。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">主键或主码:若二维表中有多个候选码,则选定其中一个作为主键供用户使用。如学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">生登记表中存在两个候选码:学号和姓名。若选择学号作为唯一标识,那么学号就是学生 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">登记表的主键。注意:二维表中一定有主键。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外键或外码:表中 M 中的某属性集是表 N 的候选键或者主键,则称该属性集是表 M 的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">外键或外码。例如系关系表中的主键是系号,那么学生关系表中的系号就是外键。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系模型的数据操作:一般有查询、删除、插入、修改 4 种操作。</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">50 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系模型的完整性约束 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">实体完整性约束:若属性 M 是关系的主键,则属性 M 中的属性值不能为空值。例如学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">生登记表中学号是主键,则学号不能取空值。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">参照完整性约束:若属性(或属性组)A 是关系 M 的外键,它与关系 N 的主码相对应, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">则对于关系 M 中每个元组在 A 上的值必须满足要么是空值,要么等于关系 N 中某个元组的 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">主键值。例如学生信息表中的系号。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">用户定义的完整性约束:反映了某一具体应用所涉及到的数据必须满足的语义要求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">如某个属性取值范围为 0~100,某个属性必须取唯一值。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第三节 关系代数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.关系代数的基本运算 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">投影运算:从关系模式中指定若干个属性组成新的关系。对 R 关系进行投影运算的结 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">果记为π</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">A</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(R) = { t[A] | t ∈ R},其中 A 为 R 中的属性列。例如,对关系 R 的“系”属 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性进行投影运算,记为π</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">系</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(R),得到无重复元组的新关系 S,如下图所示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系 R 投影运算后得到的新关系 S </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选择运算:从关系模式中找出满足给定条件的元组的操作。选择条件以逻辑表达式给 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">出,是的逻辑表达式为真的元组将被选取。选择运算用公式表示为δ</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">F</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(R) = {t| t∈R 且 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">F(t)为真}。例如在关系 R 中选出“系”为“计算机”的学生,表示为δ</span><span style="mso-spacerun: 'yes'; font-size: 5.52pt; font-family: 宋体; color: #000000;">系=计算机</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">(R),得到新 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的关系 S,如下图所示。</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系 R 选择运算后得到的新关系 S </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">笛卡尔积:设有 n 元关系 R 和 m 元关系 S,它们分别有 p 和 q 个元组,则 R 与 S 的笛 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">卡尔积记作:R×S。它是一个 m+n 元关系,元组个数是 p×q。关系 R 和关系 S 的笛卡尔积 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">运算的结果 T 如图所示。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系 R 关系 S 关系 T=R× </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.关系代数的扩充运算 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">交:假设有 n 元关系 R 和 n 元关系 S,它们的交仍然是一个 n 元关系,它是属于关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">R 且属于关系 S 的元组组成,并记为 R∩S。例如对下图中 R 和 S 做交运算的结果为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系 R 关系 S R∩S </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">连接与自然连接:也称θ连接,是对两个关系进行的运算,其意义是从两个关系的笛 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">卡尔积中选择满足给定属性间一定条件的那些元组。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">51</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">52 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">在θ连接中,当θ=“=”时,称为等值连接;当θ=“<”时,称为小于连接;当θ=“>” </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">时,称为大于连接。在 AθB 中,属性 A 和属性 B 的属性名可以不同,但是域一定要相同, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">否则无法比较。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">自然连接要求两个关系中进行比较的是相同的属性,并且进行等值连接,相当于θ为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">“=”,在结果中还要把重复的属性去掉。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.除 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">除运算可以近似地看作笛卡尔积的逆运算。当 S×T=R 时,必有 R÷S=T,T 为 R 除以 S </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的商。设有关系 R、S,求 T=R÷S。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">R 关系 S 关系 T=R÷S </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: MicrosoftYaHei-Bold; color: #000000; font-weight: bold;">第四节 数据库设计与管理 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">知识提炼 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.数据库设计的基本概念 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库设计是对于一个给定的应用环境,构造最优的数据库模式,建立性能良好的数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据库,使之满足各种用户的需求。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">数据库设计的步骤: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">需求分析阶段(成果是需求说明书) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念设计阶段(成果是数据概念模型) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逻辑设计阶段(成果是逻辑数据模型,将 E-R 图转换成关系模式,转换方法如下表所 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">示) </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">E-R 模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000; font-weight: bold;">关系模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">实体 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">元组 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">实体集 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">属性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">属性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">联系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">物理设计阶段(成果是数据库内模型)</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">53 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000; font-weight: bold;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">1.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.需求分析阶段 B.概念设计阶段 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.逻辑设计阶段 D.物理设计阶段 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库中各个阶段的详细操作。E-R 图转换成关系模型数据则是把图 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。答案选 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">2.有三个关系 R、S 和 T 如下:由关系 R 和 S 通过运算得到关系 T,则所使用的运算为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.并 B.自然连接 C.笛卡尔积 D.交 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系运算中的交运算。自然连接是一种特殊的等值连接,它要求两个 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 B </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">错误。笛卡尔积是用 R 集合中元素为第一元素,S 集合中元素为第二元素构成的有序对, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所以 C 错误。根据关系 T 可以很明显的看出是从关系 R 与关系 S 中取得相同的关系组所以 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">取得是交运算,选择 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">3.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.课号,成绩 B.学号,成绩 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.学号,课号 D.学号,姓名,成绩 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系模型中的术语。学号是学生表 S 的主键,课号是课程表 C 的主键, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所以选课表 SC 的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号, </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">所以选择 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">4.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.一对一 B.一对多 C.多对一 D.多对多 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系模型中实体联系的类型。因为一间宿舍可以住多个学生即多个学 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系。答案选 B。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">5.在数据管理技术发展的三个阶段中,数据共享最好的是( )。</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">54 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.人工管理阶段 B.文件管理阶段 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据库管理阶段 D.三个阶段相同 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库技术发展的 3 个阶段。数据管理发展至今已经历了三个阶段: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">6.有三个关系 R、S 和 T 如下:由关系 R 和 S 通过运算得到关系 T,则所使用的运算为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.笛卡尔积 B.交 C.并 D.自然连接 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数中的自然连接。自然连接是一种特殊的等值连接,它要求两 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">根据 T 关系中的有序组可知 R 与 S 进行的是自然连接操作。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">7.数据库应用系统中的核心问题是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.数据库设计 B.数据库系统设计 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据库维护 D.数据库管理员培训 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库应用系统的理解。数据库应用系统中的核心问题是数据库的设 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计。答案选 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">8.有两个关系 R,S 如下:由关系 R 通过运算得到关系 S,则所使用的运算为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.选择 B.投影 C.插入 D.连接 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数运算中的投影运算。投影运算是指对于关系内的域指定可引 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">入新的运算。本题中 S 是在原有关系 R 的内部进行的,是由 R 中原有的那些域的列所组成 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的关系。所以选择 B。</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">55 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">9.将 E-R 图转换为关系模式时,实体集和联系都可以表示为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.属性 B.键 C.关系 D.域 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查 E-R 图转关系模式的转换方法。从 E-R 图到关系模式的转换是比较 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">直接的,实体集与联系都可以表示成关系,E-R 图中属性也可以转换成关系的属性。答案 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">10.在 E-R 图中,用来表示实体联系的图形是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.椭圆形 B.矩形 C.菱形 D.三角形 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查 E-R 模型的几何表示。在 E-R 图中实体集用矩形,属性用椭圆,联 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">系用菱形,答案选 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">11.有三个关系 R、S 和 T 如下:则关系 T 是由关系 R 和 S 通过某种操作得到,该操作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.选择 B.投影 C.交 D.并 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:在关系 T 中包含了关系 R 与 S 中的所有元组,所以进行的是并的运算。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">12.层次型、网状型和关系型数据库划分原则是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.记录长度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.文件的大小 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.联系的复杂程度 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.数据之间的联系方式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查逻辑数据模型的理解。层次模型的基本结构是树形结构,网状模型是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">则是数据之间的联系方式。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">13.数据库设计中反映用户对数据要求的模式是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.内模式 B.概念模式 C.外模式 D.设计模式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库系统的三级模式结构。数据库系统的三级模式是概念模式、外 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">描述,所以选择 C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">14.有三个关系 R、S 和 T 如下:则由关系 R 和 S 得到关系 T 的操作是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.自然连接 B.差 C.交 D.并 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数的基本运算。关系 T 中的元组是 R 关系中有而 S 关系中没有 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的元组的集合,所以进行的是差的运算。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">15.在满足实体完整性约束的条件下( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.一个关系中应该有一个或多个候选关键字 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.一个关系中只能有一个候选关键字 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.一个关系中必须有多个候选关键字 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.一个关系中可以没有候选关键字 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系模型的完整性约束。实体完整性约束要求关系的主键中属性值不 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">能为空值,所以选择 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">16.有三个关系 R、S 和 T 如下,则由关系 R 和 S 得到关系 T 的操作是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.自然连接 B.交 C.除 D.并 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数中的补充运算。如果 S=T/R,则 S 称为 T 除以 R 的商。在除 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">运算中 S 的域由 T 中那些不出现在 R 中的域所组成,对于 S 中的任一有序组,由它与关系 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">R 中每个有序组所构成的有序组均出现在关系 T 中。所以本题选择 C。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">17.负责数据库中查询操作的数据库语言是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.数据定义语言 B.数据管理语言 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据操纵语言 D.数据控制语言 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库管理系统的数据语言的理解。数据定义语言:负责数据的模式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">56</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">57 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">功能。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">18.数据库设计过程不包括( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.概念设计 B.逻辑设计 C.物理设计 D.算法分析 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库设计步骤。数据库设计过程主要包括需求分析、、概念结构设 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计、逻辑结构分析、数据库物理设计。答案选 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">19.有两个关系 R 和 S 如下,则由关系 R 得到关系 S 的操作是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.选择 B.投影 C.自然连接 D.并 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数中的选择运算。由关系 R 到关系 S 为一元运算,排除 C 和 D。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">关系 S 是关系 R 的一部分,是通过选择之后的结果,因此选 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">20.下面描述中不属于数据库系统特点的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.数据共享 B.数据完整性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.数据冗余度高 D.数据独立性高 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库系统的基本特点。数据库系统的特点为高共享、低冗余、独立 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">性高、具有完整性等,C 错误。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">21.在关系 A(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">S,SN,D)和 B(</span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D,CN,NM)中,A 的主关键字是 S,B 的主关键字是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D,则 D 是 A 的( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.外键 B.候选键 C.主键 D.元组 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系模型中常用的术语。二维表中的一行称为元组。候选键(码)是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">为主键(码)供用户使用。表 M 中的某属性集是表N的候选键或者主键,则称该属性集为 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">表M的外键(码)。A 中属性集 D 是 B 的主关键字,故 D 是 A 的外键(码),A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">22.在数据库系统中,用于对客观世界中复杂事物的结构及它们之间的联系进行描述 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">的是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.概念数据模型 B.逻辑数据模型 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.物理数据模型 D.关系数据模型</span><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">58 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据模型的类型。数据模型按照不同的应用层次分为以下 3 种类型: </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">概念数据模型,着重于对客观世界复杂事物的描述及对它们内在联系的刻画;逻辑数据模 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">型,是面向数据库系统的模型,着重于在数据库系统一级的实现;物理数据模型,是面向 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。A 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">23.当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.逻辑独立性 B.物理独立性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.应用独立性 D.空间独立性 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据独立性的理解。数据独立性包括物理独立性和逻辑独立性,物理 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故 A </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">专项训练 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">24.学生选课成绩表的关系模式是 SC(S#,C#,G),其中 S#为学号,C#为课号,G 为成 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">绩,关系表达式 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.表 S 中所有学生都选修了的课程的课号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.全部课程的课号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.成绩不小于 80 的学生的学号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.所选人数较多的课程的课号 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查关系代数的公式。首先在关系模式 SC </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">中选择属性“学号”与“课号”,结果如下左图。其次在 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">这个关系模式中对关系模式 S 进行除运算,则关系式结果表示 S 中所有学生(S1、S2)都 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">选修了的课程的课号(C1、C2)。答案选 A。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">25.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是( )。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">A.DB 包括 DBS 和 DBMS </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">B.DBMS 包括 DB 和 DBS </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">C.DBS 包括 DB 和 DBMS </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">D.DBS、DB 和 DBMS 相互独立 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">知识点睛:考查数据库、数据库系统和数据库管理系统之间的关系。数据库(DB)是 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">指长期存储在计算机内的、有组织的、可共享的数据集合。数据库管理系统(DBMS)是数 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">据库的机构,它是一个系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">及保护和数据服务等。数据库系统由如下几部分组成:数据库、数据库管理系统、数据库</span><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">管理员、硬件平台、软件平台,这些构成了一个以数据库管理系统为核心的完整的运行实 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 10.56pt; font-family: 宋体; color: #000000;">体。数据库系统(DBS)包括数据库(DB)与数据库管理系统(DBMS),C 选项正确。 </span></div>
<div><span style="mso-spacerun: 'yes'; font-size: 9pt; font-family: 宋体; color: #000000;">59</span></div>
</div>
分享到:
转载:
喜欢 2
收藏
暂无评论信息
- 相关文章
- 文章推荐
-
git:如何管理本机的多个ssh密钥(多个远程仓库账号)
如果我们电脑上已经存在了一个ssh key,那么我们需要在我们电脑上生成第二个你想在本电脑上使用的id_rsa,使用命令:ssh-keygen -t rsa -C "你的github账号"。
-
jQuery 3.0正式发布
jQuery 基金会刚刚发布了该 Java 框架的 3.0 版本,并且首次抛弃了对老旧的 IE 浏览器的支持。jQuery 3.0 的工作始于 2014 年 10 月,其最初目标是在 2.0 版本之上进行完善,并和遥远的 1.0 版代码说再见——因为要兼容 IE 的缘故,其已经臃肿不堪。jQuery 2.0 已经与 1.0 版本完全不兼容,而 3.0 也将继续这一路线。
-
娱美德旗下MMORPG手游《传奇4》将推出新PVP玩法"比奇掠夺"&
《传奇4》推出新门派PVP玩法!韩国首尔2022年6月29日 /美通社/ -- 《传奇4》(MIR4)的新PVP玩法比奇掠夺(Bicheon Heist)于2022年6月28日推出。
-
淘宝 NPM 镜像站喊你切换新域名啦
淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前端社区,不知不觉竟然一直运行到现在。当年参考 Ruby Gems 淘宝镜像 的方式,跟阿里开源组织申请了 taobao.org 的二级域名,镜像站点名称也自然而然地取名为 淘宝 NPM 镜像站 (下称 CNPM)。
- 点击排行
- 站长推荐
- 猜你喜欢
- 网站信息
- 站内问答:12篇
- 站内文章:212篇
- 建站时间:已运行1107天
- 备案号: 浙ICP备2022018799号
- 语言:
English(USA)
French(FR)
Chinese(ZH)
无数据