软件基础考试答案软件技术基础考试答案Word格式文档下载.docx
《软件基础考试答案软件技术基础考试答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件基础考试答案软件技术基础考试答案Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
AAGGRRyyHH101ZH3199078102LI4208866**数据结构有三方面的内容:
数据的逻辑结构、数据的存储结构、数据的运算。
填空逻辑:
概念C,D,E物理(存储):
1*4.数据的逻辑结构有2种:
指数据元素之间的逻辑关系。
与存储无关,是独立于计算机的。
有(线性结构)和(非线性结构)。
春--夏--秋---冬行政机构,家谱,树型目录**5.数据的存储结构有4种:
又称物理结构,指数据元素及其关系在计算机内存中的表示,即数据的逻辑结构在存储空间的存放形式。
数据的存储结构有4种:
顺序、链式、索引、散列。
填空6.数据结构的图形表示:
数据结构可以用二元关系表示,也可以用图形表示(方框表示元素,称为数据结点,有向线段从前件指向后件,没有前件的结点叫根结点,没有后件的结点叫终端结点或叶子结点)。
ABCDEF7.线性结构与非线性结构:
数据的逻辑结构分为两大类型:
线性结构与非线性结构。
线性结构的条件是:
只有一个根结点,每个结点最多一个前件,最多一个后件。
一个数据结构如不是线性结构,则为非线性结构。
在线性结构中插、删结点后还应是线性结构。
1.3线性表及其顺序存储结构8.线性表的定义:
线性表是一种线性结构。
数据元素之间的相对位置是线性的。
非空线性表的3特征:
(1)有且只有一个根,它无前件
(2)有且只有一个终端结点,它无后件(3)其他结点有且只有一个前件,一个后件。
9.线性表的顺序存储结构(也叫顺序表):
特点:
,存放顺序与逻辑次序相同。
优点:
可以随机存取。
第i元素的位置由序号确定。
通常用一维数组表示(向量)。
例:
学号12345inta[5]1234512?
345个数+1清12345个数-1清12455a[2]=a[3];
10.顺序表的插入运算:
在第I位置插入元素的步骤:
先判断是否上溢;
空出第I位置;
插入。
元素要移动11.顺序表的删除(第I个)运算:
从第I+1位置到最后元素均向前移1个元素。
平均移动一半元素(N/2)。
元素要移动1.4栈和队列m=812.栈(stack)的定义:
限定在一端插入与删除的线性表。
允许插入、删除的一端叫栈顶,另一端叫栈底。
向栈中插入的运算叫入栈,从栈中删除的运算叫退栈。
栈是“先进后出”结构,FILO。
bottomtopAB1topC230也可以说:
栈是“后进先出”结构,LIFO13.栈的存储:
使用一维数组S(1:
m),m为栈的最大容量。
14.栈的运算:
(1)入栈运算:
首先判断栈是否满(iftop=m)(上溢),其次栈顶指针加1(top=top+1),新元素放入(a[top]=’C’)
(2)退栈运算:
首先判断栈是否空(iftop=0下溢),将栈顶元素赋给指定变量或者输出,栈顶指针减1(top=top-1)。
3)读栈顶元素(使用):
将栈顶元素赋给指定变量(tmp=a[top]),当栈顶指针为top=0时,读不到栈顶元素。
练习:
(1)进栈序列是e1,e2,e3,e4,可能的出栈序列:
思考上题所有的出栈序列:
(1)e1,e2,e3,e4
(2)e4,e3,e2,e1等15.队列的定义及存储:
队列也是一种特殊的线性表,允许在一端插入,在另一端删除,允许插入的一端叫队尾(尾指针rear),允许删除的一端叫队头(头指针front),是先进先出/后进后出结构。
FIFO/LILO。
队尾指针指向尾元素,队头指针指向头元素的前一位置。
6R=3727F=3876543218997a[8]16、队列的顺序存储结构一般用一维数组。
入队r=r+1;
a[r]=数据出队:
tmp=a[f+1];
f=f+1;
计算队中有几个元素:
r-f17.循环队列及其运算:
队列为空的条件:
S=0(S为队空标志)front=rear队满条件:
S=1,front=rear。
入队:
首先看是否满(S=1?
上溢),若不满,rear=rear+1,ifrear=m+1,则rear=1),然后插入。
出队:
首先看是否空(S=0?
下溢),若不空,将队头元素赋给指定变量,front=front+1,(如font=m+1,则front=1)。
1.5线性链表18.线性单链表的结构及其基本运算qp线性表的链式存储结构称线性链表。
结点由两部分组成,数据域和指针域。
指针域指向后一结点(记录它的后件的地址)。
张019李062王^011019062headdataLink/Next在P后插入:
s095new(s);
申请一个结点062高s.data=”高”;
s.next=p.next;
p.next=s;
删除q之后的:
p=q.next;
q.next=q.next.next;
(q.next=p)free(p);
^或NULL表示空。
注意:
数据结构分为逻辑结构和存储结构,线性链表是一种存储结构。
顺序表也是一种存储结构。
存储空间比较大注意:
顺序存储可以随机存取;
链式存储只能顺序存取。
19.线性链表基本运算
(1)查找运算:
从头指针开始向后找
(2)插入运算:
先分配一个新结点,再指针操作(3)删除运算:
插入删除元素不需移动结点。
-3-第6周20.线性双向链表的结构及其基本运算双向链表设置左指针(指向前件),右指针(指向后件)。
102101101^张102head^张left/rightdata双向链表克服了只能找到后件,不能找到前件的缺陷。
21.循环链表的结构及其基本运算特点:
(1)设置表头结点,其指针域指向第一个结点;
(2)最后一个结点的指针指向表头结点。
好处:
永远至少有一个结点;
插入、删除时,空表和非空表处理方法统一;
只要指出任何一个结点,就可访问其他所有结点。
与线性链表比插入删除时实现了空表和非空表的运算统一。
1.6树与二叉树22.树的定义树是一种非线性结构,是一种层次结构。
概念:
父结点,根结点,子结点,结点的度(结点拥有的后件数),树的度(所有结点最大的度),层次:
根结点为1层,依次计算,树的最大层次称树的深度、高度,叶子结点无子树、度为0。
树通常用多重链表表示。
根结点没有前件,可能有0个或者1个。
23.二叉树的定义及其性质
(1)定义:
非空二叉树只有一个根结点,每个结点最多有两个子树,分别称左子树和右子树。
二叉树不是一棵特殊树。
*三个结点的二叉树有5种形态。
(2)性质:
①第K层最多有2k-1个结点;
②深度为M的二叉树最多有2m-1个结点;
*③度为0的结点(叶子)总是比度为2的结点多1个;
④N个结点的二叉树,深度至少为|_log2N_|+1⑤完全二叉树的深度为|_log2N_|+1(3)满二叉树:
除最后一层,每层都有2个子结点,即每一层上的结点数都达到最大值,每一层都有2k-1个结点。
(4)完全二叉树:
除最后一层,每层结点数都达到最大值,最后一层只缺少右边的若干个结点。
满二叉树也是完全二叉树。
(5)二叉树通常采用链式存储结构,二叉链表。
*24.二叉树的遍历即从根结点开始,访问每个结点1次。
根据根结点的遍历顺序有3种遍历法(总是先左后右)。
前序(前根)(先序)遍历:
(根左右)中序遍历(中根):
(左根右)、后序遍历(后根):
(左右根)。
ABC前:
ABC中:
BAC后:
BCAABCDE前:
ABDCE中:
DBACE后:
DBECA练习:
(1)已知后序为dabec,中序为debac,求前序序列。
后dabec中debac
(2)已知前序为xxxx,中序为xxxx,求后序序列.A答案:
CB前xxxxKFE中xxxx后G:
GEBFKCA1.7查找技术25.查找:
就是在给定的数据结构中查找某个指定的元素。
有两种方法:
顺序查找,和二分查找法。
26.顺序查找方法:
大约和一半N/2元素比较、最坏情况比较N次;
适用场合:
顺序查找,线性表无序,或有序线性表采用链式存储;
27.二分查找方法:
二分查找最坏只需比较log2N次。
*适用场合:
二分查找仅当有序线性表为顺序存储时才能使用。
要记住查找次数。
查找40,L=1H=6M=32is12,L=3H=6M=4is19L=4H=6M=5is401:
52:
103:
124:
195:
406:
901.8排序技术28.排序是指将一个无序的列表整理成按值递增或递减顺序排列的有序序列。
*常用方法:
交换类排序,插入类排序,选择类排序。
29.交换类排序(实例:
冒泡,快速)思想:
借助数据元素之间的相互交换进行排序。
冒泡:
通过相邻数据元素的交换逐步将线性表变换成有序的。
例:
从小到大61081426810214682101462810142681014快速:
将原问题分解成若干个小规模的同结构的问题,递归解决每个子问题。
30.选择类排序(实例:
简单选择排序,堆排序)简单选择排序思想:
扫描整个线性表,从中选出最小的元素,将它交换到表的最上面,对剩下的元素采取相同的方法。
直到表为空。
从小到大61081421:
5#152:
21081463:
26814104:
26814105:
2681014堆排序:
用于大规模有序线性表。
31.插入类排序(实例:
简单插入,希尔Shell排序)思想:
将无序列表中的各元素依次插入到已经有序的线性表中。
(当元素距它的最终位置不太远时使用)简单插入:
将无序表中的各元素依次插入到已有序的线性表中。
从小到大[6][108142][610][8142][6810][142][681014][2][2681014][]希尔:
对简单插入的改进,先选取一个增量,把增量倍数的记录放在一组中,组内进行直接插入排序,再取小增量,重复上述操作。
当增量为1时,进行一次插入排序,即完成。
记住:
如线性表长度为N,各种排序方法在最坏情况下需要的比较次数:
冒泡、简单插入、快速、简单选择:
n(n-1)/2希尔:
O(n1.5)堆排序:
O(nlog2n)=nlog2n+C
(1)堆排序不是n(n-1)/2经典题解:
1、算法复杂度主要包括时间复杂度和()复杂度。
2、问题处理方案的正确而完整的描述称为()。
3、关于存储结构的描述,错误的是:
4、数据的存储结构是指()。
数据的逻辑结构在计算机中的表示5、关于栈的描述错误的是:
6、关于栈的描述正确的是:
是一种特殊的线性表,只能在一端插入元素,而在另一端删除元素。
X7、线性链表是线性表的链式存储结构。
正确。
8、线性链表的描述:
存储空间不一定连续,且各元素的存储顺序是任意的。
正确9、一个逻辑结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
正确10、数据结构分为逻辑结构和存储结构,循环队列属于()结构。
存储11、对于长度为N的线性表进行顺序查找,在平均情况下所需要的比较次数为:
()N/212、能用二分法查找是的数据结构是()。
顺序存储的有序线性表13、对于长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为:
()N14、*在最坏情况下列各排序法所对应的比较次数正确的是:
()A、冒泡N/2B、冒泡NC、快速为ND、快速为N(N-1)/215、对于长度为10的线性表进行冒泡排序,在最坏情况所需比较次数为()N(N-1)/216、一棵二叉树第6层(根为1)的结点数最多为()个17、深度为7的满二叉树,叶子结点有个数为()18、某二叉树中,度为2的结点有18个,则该二叉树中有()叶子结点19、下列二叉树的后序遍历序列为()20、算法的时间复杂度是指:
()21、数据的存储结构包括顺序,(),散列和链式四种类型。
22、单链表P指Ai,删除Ai之后的结点,修改指针的操作为:
第2章程序设计基础2.1程序设计方法与风格1.程序设计经历的阶段。
结构化程序设计,面向对象的程序设计阶段。
2.良好的编程风格应注意的因素总体原则“清晰第一,效率第二”。
注意以下4点:
(1)源程序文档化。
符号名的命名;
程序注释(C注释:
/*ffffff*/);
视觉组织。
for(i=1;
i
程序注释:
序言性注释(程序开头,给出程序整体说明);
功能性注释(程序体中,描述其后的语句或程序何等什么,对语句段注释)。
视觉组织:
用空格、空行、缩进等技巧使程序层次清晰。
(2)数据说明方法。
易于理解和维护。
inta;
(3)语句的结构。
简单直接。
(4)程序的输入输出。
应尽可能方便用户的使用。
2.2结构化程序设计3.结构化程序设计的原则基本(主要)原则是:
自顶向下、逐步求精、模块化、限制使用GOTO语句。
4.结构化程序设计的基本结构与特点*
(1)基本结构:
顺序、选择、循环。
2.3面向对象的程序设计5.面向对象的方法
(1)定义:
是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。
面向对象的方法与技术开始走向实用的标志性语言是Smalltalk。
结构化程序设计方法的核心是算法,面向对象的核心是对象(类)。
(2)优点:
与人类习惯的思维方法一致;
稳定性好;
可重用性好;
易于开发大型软件产品;
可维护性好。
6.面向对象方法的基本概念
(1)对象。
具有属性(数据)和方法(行为方式)的实体。
或说,对象是软件系统中用来描述客观事物的一个实体,它是软件系统的一个基本单位。
如:
学生,书*对象的特征:
标识惟一性;
分类性;
多态性;
封装性;
模块独立性好。
(2)类和实例。
*(类)是具有共同属性和服务的一组对象的集合。
属性=状态服务=操作、行为、方法对象.属性对象.方法类是对象的抽象,类可以用来创建对象,对象是类的一个实例。
(3)*消息。
指一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,统一了数据流和控制流。
面向对象方法中的消息类似于结构化程序设计方法中的“函数调用”。
S=sum(10,8);
intsum(intx,inty){}*一个消息由3部分组成:
接收消息的对象的名称;
消息(标识符)名;
零个或多个参数。
(4)继承。
是使用已经定义好的类来定义一个新类。
原类与新类的关系是一般类与特殊类的关系。
*继承是多个类之间共享属性和操作的机制。
继承分单继承(一个类只允许有一个父类)和多继承(一个类可以有多个父类)。
(5)多态性。
指同样的消息被不同的对象接收时可导致完全不同的行为。
面向对象中的多态是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象,也可以发送给子类对象。
第3章软件工程基础3.1软件工程基本概念1.软件(software)
(1)定义。
软件包括程序、数据和文档(或程序+文档)。
软件由两部分组成,可执行的程序和数据,不可执行的文档。
(2)特点。
逻辑产品;
与硬件的生产不同;
不会磨损老化;
依赖计算机系统;
开发和维护成本高;
软件开发涉及许多社会因素。
(3)分类。
应用软件(为解决特定领域的应用而开发、有针对性)、系统软件(为管理计算机本身而开发,有基础性、通用性,windows,Linux,VC++,VFP)、支撑软件(是为开发软件和维护软件的软件)。
2.软件危机
(1)产生。
20世纪60年代末,1968。
(2)定义。
指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(3)表现。
主要是成本、质量和生产率。
(4)原因。
与软件本身的特点;
软件开发和维护方法不正确(主要原因)。
3.软件工程
(1)源自软件危机。
(2)国标定义。
是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
*(3)三要素。
方法、工具和过程。
方法是完成软件工程项目的技术手段;
工具用于支持软件的开发、管理、文档生成;
过程用于支持软件开发的各个环节的控制和管理。
(4)核心思想。
把软件产品当作是一个工程产品来处理,即强调在软件开发中需要应用工程化原则。
4.软件过程(了解)
(1)是把输入转化为输出的一组彼此相关的资源和活动。
(2)四个基本活动Plan,DoCheck,Action即软件规格说明,软件开发,软件确认,软件演进。
5.**软件生命周期(记住名称及顺序)
(1)定义。
将软件产品从提出、实现、使用维护到停止使用退役的过程称为。
(2)阶段划分。
1)可行性研究与计划制定,2)需求分析,3)软件设计,4)软件实现(编程),5)软件测试,6)运行和维护。
6.软件工程的目标(简单了解)目标:
是在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可追踪性和可互操作性且满足用户需求的产品。
基本目标:
较低的开发成本;
达到要求的软件功能;
取得较好的软件性能;
软件易移植;
较低的维护费用;
能按时开发完成,及时交付使用。
7.*软件工程原则(重点)
(1)抽象。
抽取事物最基本的特征和行为,忽略非本质细节。
(2)信息隐蔽。
采用封装技术,将程序模块的实现细节隐藏起来,使模块的接口尽量简单。
(3)模块化。
模块是程序中相对独立的成分。
一个独立的编程单位。
(4)局部化。
相关的东西放的靠近一些。
(5)确定性。
软件开发过程中所有概念的表达应确定、无歧义且规范。
(6)一致性。
使用的概念、符号、和术语,内外部接口应一致。
(7)完备性。
软件系统不丢失任何重要成分,完全实现系统所需功能。
(8)可验证性。
系统分解应遵循容易检查、测试、评审的,以确保系统的正确性。
8.软件工程的研究内容(填空)软件开发技术+软件工程管理。
9.软件开发工具与软件开发环境
(1)软件开发工具。
协助开发人员进行软件开发活动所使用的软件或环境,如需求分析工具、设计工具、编码工具、排错工具、测试工具等。
从单项开发工具逐步向集成工具发展。
(2)软件开发环境。
指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。
(3)环境集成机制包括:
数据集成、控制集成,界面集成。
**(4)CASE。
计算机辅助软件工程。
是软件开发环境的典型例子。
3.2结构化分析方法10.可行性研究(了解)
(1)目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
(2)内容:
经济可行性、技术可行、法律可行性(操作/社会可行性)、评价开发方案,选出最适宜的方案。
11.需求分析方法
(1)软件需求分析:
是指用户对目标系统在功能、行为、性能、设计约束等方面的期望。
(主要是功能需求),(解决“做什么”的问题。
)
(2)需求分析的任务是发现需求、求精、建模、定义需求的过程。
(3)需求分析阶段的工作:
需求获取;
需求分析;
编写需求规格说明书;
需求评审。
(掌握)(4)常见的需求分析方法:
主要有结构化方法和面向对象的方法。
结构化方法主要包括3种:
SA,面向数据流的结构化方法。
JSD,面向数据结构的xxxx方法。
DSSD。
面向数据结构的结构化数据系统开发方法。
(5)需求分析方法又可分为静态分析方法和动态分析方法。
12.结构化分析方法(SA)
(1)结构化方法是比较成熟的软件开发方法。
核心和基础是结构化程序设计理论。
(2)**实质。
着眼于数据流,自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
13.数据流图(DFD)(重点)
(1)定义。
以图形方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,所以是功能模型。
(2)主要图形元素四种。
重点数据流:
箭头→,沿箭头方向传送数据的**。
加工(处理):
圆或椭圆○,输入数据经加工变换产生输出。
存储文件:
双杠〓,表示处理过程中存放各种数据文件。
源,潭:
方框□,表示系统和环境的接口。
(外部实体)学生审查申请单交费已批申请未批申请领书单购书文件学生(3)画图原则。
四个符号;
主图封闭在外部实体之间;
变换框(加工)至少有一个输入数据流和一个输出数据流;
每个元素要命名;
一个子图对应父图的一个加工,且两者输入流和输出流一致。
(4)画图步骤。
由外向里,自顶向下,逐层分解。
14.数据字典(DD)
(1)DD是结构化分析方法的核心。
(2)作用,是对数据流图中出现的被命名的图形元素的确切解释。
(3)内容及主要符号。
(=定义为,[|]或,+与/和,n{}m重复,()可选,**注释,..连接)数据字典例:
学生=要购书的学生申请单=学号+姓名+班级+专业+1{书名+出版社+数量}5+(备注)购书文件=日期+学号+姓名+购书信息+经办人购书信息=书号+书名+出版社+数量+金额15.判定表与判定树都以图形方式描述数据流图中的加工逻辑(圆圈)。
(1)判定树,首先分清判定条件和判**论。
(3)判定表,当加工要依赖多个逻辑条件的取值,即完成该加工的一组动作是由某一组条件取值的组合引发的,适宜采用。
由基本条件,条件项,基本动作,