解读:
对于顺序查找,查找不成功时和给定关键字比较的次数为n+1。
二分查找查找不成功的关键字比较次数为[log2n]+1。
当n≥2时,显然n+1>[log2n]+1。
答案:
B)
【例7】在快速排序过程中,每次划分,将被划分的表<或子表)分成左、右两个子表,考虑这两个子表,下列结论一定正确的是_______。
A)左、右两个子表都已各自排好序B)左边子表中的元素都不大于右边子表中的元素
C)左边子表的长度小于右边子表的长度D)左、右两个子表中元素的平均值相等
解读:
快速排序基本思想是:
任取待排序表中的某个元素作为基准<一般取第一个元素),通过一趟排序,将待排元素分为左右两个子表,左子表元素的排序码均小于或等于基准元素的排序码,右子表的排序码则大于基准元素的排序码,然后分别对两个子表继续进行排序,直至整个表有序。
答案:
B)
二、填空题
【例1】问题处理方案的正确而完整的描述称为_______。
解读:
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
答案:
算法
【例2】一个空的数据结构是按线性结构处理的,则属于_______。
解读:
一个空的数据结构是线性结构或是非线性结构,要根据具体情况而定。
如果对数据结构的运算是按线性结构来处理的,则属于线性结构,否则属于非线性结构。
答案:
线性结构
【例3】设树T的度为4,其中度为1、2、3和4的结点的个数分别为4、2、1、1,则T中叶子结点的个数为_______。
解读:
根据树的性质:
树的结点数等于所有结点的度与对应的结点个数乘积之和加1。
因此树的结点数为1×4+2×2+3×1+4×1+1=16。
叶子结点数目等于树结点总数减去度不为0的结点数之和,即16-<4+2+1+1)=8。
答案:
8
【例4】二分法查找的存储结构仅限于_______且是有序的。
解读:
二分查找,也称折半查找,它是一种高效率的查找方法。
但二分查找有条件限制:
要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)。
答案:
顺序存储结构
§2程序设计基础
2.1程序设计设计方法和风格
如何形成良好的程序设计风格:
1、源程序文档化;2、数据说明的方法;3、语句的结构;4、输入和输出
注释分序言性注释和功能性注释,语言结构清晰第一、效率第二。
2.2结构化程序设计
结构化程序设计方法的四条原则是:
1、自顶向下;2、逐步求精;3、模块化;4、限制使用goto语句。
结构化程序的基本的特点:
<1)顺序结构:
一种简单的程序设计,最基本、最常用的结构;
<2)选择结构:
又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列;
<3)重复结构:
又称循环结构,可根据给定条件,判断是否需要重复执行某一相同程序段。
(2018.3><5)结构化程序所要求的基本结构不包括<)
A>顺序结构B>GOTO跳转C>选择<分支)结构D)重复<循环)结构
2.3面向对象的程序设计
面向对象的程序设计方法中,最基本的概念是对象和类,类具有以下特点:
封装性、继承性、多态性;对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。
类的继承性优点:
相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
例如:
在面向对象方法中,类之间共享属性和操作的机制称为继承性.
(2018.9><6)面向对象方法中,继承是指(>
A>一组对象多具有的相似性质B>一个对象具有另一个对象的性质
C>各对象之间的共同性质D)类之间共享属性和操作的机制
(2018.9><10)下列选项中属于面向对象设计方法主要特征的是<)
A>继承B自顶向下C>模块化D>逐步求精
多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。
类是指具有共同属性、共同方法的对象的集合。
所以类是对象的抽象,对象是对应类的一个实例。
(2018.3><10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是<)
A>-369B>369C>0.369D>整数集合{1,2,3,4,5}
2.4例题详解
【例1】面向对象的开发方法中,类与对象的关系是_______。
A)抽象与具体B)具体与抽象
C)部分与整体D)整体与部分
解读:
现实世界中的很多事物都具有相似的性质,把具有相似的属性和操作的对象归为类,也就是说类是具有共同属性、共同方法的对象的集合,是对对象的抽象。
它描述了该对象类型的所有对象的性质,而一个对象则是对应类的一个具体实例。
所以本题正确答案为A)项。
答案:
A)
【例2】在面向对象方法中,使用已经存在的类定义作为基础建立新的类定义,这样的技术叫做_______。
解读:
继承是面向对象方法的一个主要特征。
继承是使用已有的类定义作为基础建立新类的定义技术。
已有的类可当作基类来引用,则新类相应地可当作派生类来引用。
答案:
继承
【例3】对象的基本特点包括_______、分类性、多态性、封装性和模块独立性好等5个特点。
解读:
对象具有如下的基本特点:
<1)标识惟一性。
对象是可区分的,并且由对象的内在本质来区分;
<2)分类性。
可以将具有相同属性和操作的对象抽象成类;
<3)多态性。
同一个操作可以是不同对象的行为;
<4)封装性。
只能看到对象的外部特征,无需知道数据的具体结构以及实现操作的算法;
<5)模块独立性。
面向对象是由数据及可以对这些数据施加的操作所组成的统一体。
答案:
标识惟一性
【例4】对象根据所接收的消息而做出动作,同样的消息被不同的对象所接收时可能导致完全不同的行为,这种现象称为_______。
解读:
对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行为,该现象称为多态性。
答案:
多态性
§3软件项目基础
详细重点学习知识点:
1.软件的概念、软件生命周期的概念及各阶段所包含的活动
2.概要设计与详细设计的概念、模块独立性及其度量的标准、详细设计常用的工具
3.软件测试的目的、软件测试的4个步骤
4.软件调试的任务
3.1软件项目基本概念
计算机软件是包括程序、数据及相关文档的完整集合。
软件按功能分为应用软件、系统软件、支撑软件<或工具软件)。
小提示:
应用软件是为解决特定领域的应用而开发的软件;系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件;支撑软件是介于两者之间,协助用户开发软件的工具性软件。
(2018.9><4)软件按功能可以分为应用软件、系统软件和支撑软件<或工具软件)。
下面属于应用软件的是<)
A>学生成绩管理系统B>C语言编译程序
C>UNIX操作系统D)数据库管理系统
软件危机主要表现在成本、质量、生产率等问题。
1.产品不符合用户的实际需要;
2.软件开发生产率的提高速度远远不能满足客观需要;
3.软件产品的质量差;
4.对软件开发成本和进度的估计常常不准确;
5.软件的可维护性差
(2018.9><4)下面叙述中,不属于软件危机表现的是(>。
A>软件过程不规范B>软件开发生产率低
C>软件质量难以控制D>软件成本不断提高
软件项目是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件项目包括3个要素:
方法、工具和过程。
软件生命周期:
软件产品从提出、实现、使用维护到停止使用退役的过程。
软件生命周期三个阶段:
软件定义、软件开发、运行维护,主要活动阶段是:
<1)可行性研究与计划制定; <2)需求分析; <3)软件设计;
<4)软件实现; <5)软件测试; <6)运行和维护。
(2018.9><5)软件生命周期是指
A)软件产品从提出、实现、使用维护到停止使用退役的过程
B>软件从需求分析、设计、实现到测试完成的过程
C>软件的开发过程D>软件的运行维护过程
(2018.3><4)在软件开发中,需求分析阶段产生的主要文档是<)
A>软件集成测试计划B>软件详细设计说明书C>用户手册D>软件需求规格说明书
软件项目的目标和与原则:
目标:
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基本目标:
付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。
软件项目的理论和技术性研究的内容主要包括:
软件开发技术和软件项目管理。
3.2结构化分析方法
结构化方法的核心和基础是结构化程序设计理论。
需求分析方法有<1)结构化需求分析方法;
<2)面向对象的分析的方法。
从需求分析建立的模型的特性来分:
静态分析和动态分析。
结构化分析方法的实质:
着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的常用工具
(1>数据流图:
描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。
(2>数据字典:
对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
(3>判定树:
从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
(4>判定表:
与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是因为某一组条件取值的组合而引发的,使用判定表描述比较适宜。
数据字典是结构化分析的核心.
(2018.9><3)常见的软件开发方法有结构化和面向对象方法,对某应用系统结果需求分析建立数据流图(2018.9><5)某系统总体结构图如下图所示:
该系统总体结构图的深度是<)
A)7B>6C>3D>2
3.3结构化设计方法
软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。
从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
结构设计:
定义软件系统各主要部件之间的关系。
数据设计:
将分析时创建的模型转化为数据结构的定义。
接口设计:
描述软件内部、软件和协作系统之间以及软件与人之间如何通信。
过程设计:
把系统结构部件转换成软件的过程