《2022年软件工程导论张海藩课后习题部分答案.docx》由会员分享,可在线阅读,更多相关《2022年软件工程导论张海藩课后习题部分答案.docx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 第一章1-1 什么是软件危机 . 是指在运算机软件的开发和保护过程中所遇到的一系列严峻问题;1-3 什么是软件工程. 是指导运算机软件开发和保护的一门工程学科;1-4 简述结构化范型和面对对象范型的要点,并分析它们的优缺点;目前使用得最广泛的软件工程方法学(2 种):1. 传统方法学: 也称为生命周期方法学或结构化范型;优点: 把软件生命周期划分成基干个阶段, 每个阶段的任务相对独立,而且比较简洁,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度;缺点: 当软件规模巨大时,或者对软件的需求是模糊的或会承担时 间而变化的时候,开发出的软
2、件往往不胜利;而且保护起来仍旧很困难;2. 面对对象方法学:优点:降低了软件产品的复杂性;提高了软件的可懂得性;简化了软件的开发和保护工作;促进了软件重用;1-6 什么是软件过程 .它与软件工程方法学有何关系 . z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范畴;软件生命周期由软件定义、软件开发和运行保护3 个时期组成, 每个时期又进一步划分
3、成如干个阶段;生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行次序,因此,也称为过程模型;瀑布模型的优点: 1. 可强迫开发人员采纳规范的方法;2. 严格规定了每个阶段必需提交的文档; 3. 要求每个阶段交出的全部产品都必需经过质量保证小组的认真验证;瀑布模型的缺点:1. 在软件开发初期,指明用户全部需求是困难的;2. 需求确定后,经过一段时间才得到软件最初版本;3. 完全依靠规格说明,导致不能满意用户需求;适用中小型项目;快速原型模型的优点:1 满意用户需求程度高;2 用户的参加面广;3 返工现象少 快速原型模型的优点:不适用大型软件的开发 适用于小型项目;增量模型的优点:1 短期
4、内可以交付满意部分用户需求的功能产品;2 逐步增加功能可以让用户去适应新产品;3 开放式的软件可保护性比较好;4 开头第一构件前,已经完成需求说明;增量模型的缺点:1 对现有产品功能造成破坏;2 意义上的冲突 适用于中型软件的开发螺旋模型的优点:1 集成了瀑布模型、快速原型模型、增量模型的优点;2 支持用户需求动态变化; 3 需求分析与软件实现紧密联系相互依靠;4 原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同懂得,又可作为后续开发的基础;5 为用户参加决策供应方便;6 提高目标软件的适应才能;7 降低风险;8 在大型软件开发过程中充分发挥优势;螺旋模型的缺点:1 迭代次数影响开
5、发成本,推迟提价时间;2 找不到关键改进点,人才、物力、财力时间引起无谓消耗;3 成于风险分析,败于风险分析;适用于内部开发的大规模软件项目;1-8 :为什么说喷泉模型叫好的表达了面对对象软件开发过程无缝和迭代的特性?名师归纳总结 - - - - - - -第 1 页,共 25 页精选学习资料 - - - - - - - - - 由于使用面对对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此, 整个开发过程都是吻合一样的,或者说是无缝连接的,这自然就很简洁实现各个开发步骤的反复多次迭代, 达到熟悉的逐步深化,和无缝的特性;而喷泉模型的就很好的表达了面对对象软件开发过程迭代1-9 :
6、试争论 Rational 统一过程的优缺点 优点:提高了团队生产力,在迭代的开发过程、需求治理、基于组建的体系结构、可视化软 件建模、 验证软件质量及掌握软件变更等方面、针对全部关键的开发活动为每个开发成员提 供了必要的准就、 模版和工具指导,并确保全体成员共享相同的学问基础;它简历了简洁和 清楚的过程结构,为开发过程供应较大的通用性;缺点: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外, 它没有支持多项目的开发结构,这在肯定程度上降低了在开发组织内大范畴实现重用的可能性;1-10 Rational统一过程主要适用于何种项目?大型的需求不
7、断变化的复杂软件系统项目 1-11 :说明灵敏过程的适用范畴 适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束;1-12 说明微软过程的适用范畴 适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式;其次章 2-1 在软件开发的早期阶段为什么要进行可行性分析争论?应当从哪些方面争论目标系统的 可行性?可行性分析是要进行一次大大压缩简化系统分析和设计过程,的铺张;技术上的可行性使用现有的技术能实现这个系统吗?防止时间、 资源、 人力和金钱经济上的可行性这个系统的经济效益能超过它的开发成本吗?(投资与效益)操作可行性 系统的操作方式在这个用户组织内行得通吗?社会、政策
8、答应的可行性2-2 为便利储户,某银行拟开发运算机储蓄系统;储户填写的存款单或取款单由业务员键入系统,假如是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印名师归纳总结 出存款单给储户; 假如是取款, 系统运算利息并印出利息清单给储户;请画出此系统的数据;第 2 页,共 25 页流图- - - - - - -精选学习资料 - - - - - - - - - 2-3 为便利旅客,某航空公司拟开发一个机票预定系统;旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客支配航班, 印出取票通知和账单,旅客在飞机起飞的前一天凭
9、取票通知和账单交款取票,系统 核 对 无 误 即 印 出 机 票 给 旅 客 ;请 画 出 系 统 的 数 据 流 图 ;2-4 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观看危急病人的病情变化, 仍可能会延误抢救时机;某医院准备开发一个以运算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性;医院对患者监护系统的基本要求是随时接受每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情形以及形成患者日志,当某个病人的生理信号超出医生规定的安全名师归纳总结 范畴时向值班护士发出警告信息,请此外,护士在需要时仍可以要求系统印出某个指定病人的图第
10、 3 页,共 25 页病情报告;画出系统的数据流- - - - - - -精选学习资料 - - - - - - - - - 2-5 北京某高校可用的电话号码由以下几类:校内电话号码由4 位数字组成,第一位数字不是零;校外电话又分为本市电话和外地电话两类 ,拨校外电话先拨 0,如是本地电话再接着拨8 位数字(固话第一位不是 0)或 11 位数字(移动电话第一位为 1);如是外地电话,就拨 3位区码再拨 8 位电话号码(固话第一位不是 0),或拨 0 再拨 11 位数字(移动电话第一位为1);请用数据定义的方法,定义上述电话号码;电话号码 =校内号码 | 校外号码 校内号码 =非 0 数字 +3数
11、字 3 校外号码 =0+本地号码 | 外地号码 本地号码 =固话号码 | 手机号码 固话 号码 =非 0 数字 +7数字 7 手机号码 =1+10数字 10 外地号码 = 外地固话号码| 外地手机号码 外地固话号码=3数字 3+固话号码外地手机号码=0+手机号码 非 0 数字 =1|2|3|4|5|6|7|8|9 第三章 1、为什么要进行需求分析?通常对软件系统有哪些需求?答:为了开发出真正满意用户需求的软件产品,精确定义将来系统的目标, 确定为了满意用户的需要系统必需做什么,就必需要进行精确的需求分析;通常对软件系统的需求有:功能需求;性能需求;牢靠性和可用性需求;出错处理需求;接口需 求;
12、约束;逆向需求;文档需求;数据需求等等;2、 银行运算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系名师归纳总结 - - - - - - -第 4 页,共 25 页精选学习资料 - - - - - - - - - 统,假如是存款就系统记录存款人姓名、住址、身份证号码等存款信息,并打印出存款存单给储户; 假如是取款且存款时留有密码,就系统第一核对储户密码,如密码正确或存款时未留密码,就系统运算利息并打印出利息清单给储户;用 数 据 流 图 描 述 本 系 统 的 功 能 , 并 用ER图 描 绘 系 统 中 的 数 据 对 象 ;6、复印机的工作过程大致如下:未接到复印命令
13、时处于闲置状态,一旦接到复印命令就进入复印状态, 完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;假如执行复印命令时发觉没纸,就进入缺纸状态, 发出警告, 等待装纸, 装满纸后进入闲置状态,预备接收复印命令;假如复印时发生卡纸故障,就进入卡纸状态,发出警告等待修理人员来排除故障,故障排除后回到闲置状态;请用状态转换图描画复印机的行为;从问题陈述可知,复印机的状态主要有“ 闲置”、“ 复印” 、“ 缺纸” 和“ 卡纸”;引起状态转换的大事主要是“ 复印命令”、“ 完成复印命令”、“ 发觉缺纸”、“ 装满纸” 、“ 发生卡纸故障”和“排 除 了 卡 纸 故 障”;第四章不考,略;名
14、师归纳总结 - - - - - - -第 5 页,共 25 页精选学习资料 - - - - - - - - - 第五章5-4 美国某高校共有 200 名老师,校方与老师工会刚刚签订一项协议;依据协议,全部年工资超过 26 000含 26 000的老师工资将保持不变,年工资少于资,所增加的工资数按下述方法运算:给每个由此老师所赡养的人26 000 的老师将增加工 包括老师本人 每年补助100,此外,老师有一年工龄每年再多补助50 ,但是,增加后的年工资总额不能多于26 000;老师的工资档案储存在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、 雇用日期等信息; 需要写一个程序运算并印出每
15、名老师的原有工资和调整后的新工资;要求: 1 画出此系统的数据流图;1 画出此系统的数据流图; 2 写出需求说明;3 设计上述的工资调整程序 要求用 HIPO 图描画设计结果 ,设计时请分别采纳下述两种算法,并比较这两种算法的优缺点:a 搜寻工资档案数据, 找出年工资少于26 000 的人,运算新工资, 校核是否超过26 000,储存新工资,印出新旧工资对比表;b 把工资档案数据按工资从最低到最高的次序排序,当工资数额超过26 000 时即停止排序 , 计 算 新 工 资 , 校 核 是 否 超 过 限 额 , 储 存 新 工 资 , 印 出 结名师归纳总结 果;答: 第 6 页,共 25 页
16、- - - - - - -精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 25 页精选学习资料 - - - - - - - - - 第六章名师归纳总结 - - - - - - -第 8 页,共 25 页精选学习资料 - - - - - - - - - 6-3:画出以下伪码程序的程序流程图和盒图6-4下图给出的程序流程图代表一个非结构化的程序,请问:化的? (2)设计一个等价的结构化程序;(1)为什么说它是非结构(3)在( 2)题的设计中你使用附加的标志变量flag 吗?如没用,请再设计一个使用flag的程序;如用了,再设计一个不用fla
17、g 的程序; 答:(1)通常所说的结构化程序,是依据狭义的结构程序的定义衡量,符合定义规定的程序; 图示的程序的循环掌握结构有两个出口,明显不符合狭义的结构程序的定义,因此是非结构化的程序;(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图6-3描绘了等价的结构化程序的盒图;3)不使用 flag 把该程序改造为名师归纳总结 等价的结构化程序的方法如图6-4所示;第 9 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - 6-5研究下面的伪代码程序 : LOOP: Set I to START+FINISH/2 If T
18、ABLEI=ITEM goto FOUND If TABLEIITEM Set FINISH to I-1 If FINISH-START 1 goto LOOP If TABLESTA RT=ITEM goto FOUND If TABLEFINISH=ITEM goto FOUND Set FLAG to 0 Goto DONE FOUN D: Set FLAG to 1 DONE:Exit 1 画出程序流程图;2 程序是结构化吗?说明理由;3 如程序是非结构化的,设计一个等价的结构化程序并且画出流程图; 4 此程序的功能是什 么 ? 它 完 成 预 定 功 能 有 什 么 隐 含 的 前
19、 提 条 件 ; 答 :( 1 ) 该 程 序 流 程 图 如 下 :名师归纳总结 - - - - - - -第 10 页,共 25 页精选学习资料 - - - - - - - - - (2)该程序不是结构化的,结构化的程序只有一个入口和一个出口,而该程序的流程途中有两个出口;(3)等价的结构化程序的流程图如下:名师归纳总结 - - - - - - -第 11 页,共 25 页精选学习资料 - - - - - - - - - 4)此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有序列为从小到大次序排好的有序序列;6-7某交易所规定给经纪人的手续费运算方法如下:总手续费等于基本手续费加上
20、与交易中的每股价格和股数有关的附加手续费;假如交易总金额少于1000 元,就基本手续费为交易金额的 8.4%;假如交易总金额在 1000 元到 10000 元之间,就基本手续费为交易金额的 5%,再加 34 元;假如交易总金额超过 10000 元,就基本手续费为交易金额的 4%加上 134 元;当每股售价低于 14 元时,附加手续费为基本手续费的 5%,除非买进、卖出的股数不是 100的倍数, 在这种情形下附加手续费为基本手续费的 9%;当每股售价在 14 元到 25 元之间时,附加手续费为基本手续费的 2%,除非交易的股数不是 100 的倍数,在这种情形下附加手续费为基本手续费的 6%;当每
21、股售价超过 25 元时,假如交易的股数零散 即,不是 100 的倍数,就附加手续费为基本手续费的 4%,否就附加手续费为基本手续费的 1%; 要求:1 用判定表表示手续费的运算方法; 2 用判定树表示手续费的运算方法;答:(1)判定表如图 6-6 所示:名师归纳总结 - - - - - - -第 12 页,共 25 页精选学习资料 - - - - - - - - - 2(2)判定树如图 6-7 所示:名师归纳总结 - - - - - - -第 13 页,共 25 页精选学习资料 - - - - - - - - - 6-8 名师归纳总结 - - - - - - -第 14 页,共 25 页精选学
22、习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 25 页精选学习资料 - - - - - - - - - 环形复杂度 VG=流图中的区域数=流图中判定结点数目 +1=5+1=6 (2)该算法问题在于掌握最外层循环的变量Z 不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z 的语句;因此,该段代码中的WHILE 循环部分代码要么不会执行,要么可能显现死循环;名师归纳总结 - - - - - - -第 16 页,共 25 页精选学习资料 - - - - - - - - - 终止第七章7-2:解: 程序流程图(如图 2.1 所示) 此程序是
23、非结构化的,它有一个GOTO 语句,并且是从一个循环体内转到循环体外的一名师归纳总结 - - - - - - -第 17 页,共 25 页精选学习资料 - - - - - - - - - 个条件语句内部;修改后的伪码如下:名师归纳总结 - - - - - - -第 18 页,共 25 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 25 页精选学习资料 - - - - - - - - - 程序中的错误:语句“IF WORD=KEYWORD” 里的变量“WORD” 没有预先赋值;程序中没有预先输入T的值 “ N=0” 应当是“MATC
24、H=0” 4. 回答以下问题:(1) 什么是模块测试和集成测试?它们各有什么特点?答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块掌握结构中的特定路径并发觉最大数量的错误;术,对多个模块的测试可以并发的进行;其特点是: 主要应用白盒测试的技集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试;特点是: 可能发生接口问题;(2)假设有一个由1000 行 FORTRAN语句构成的程序(经编以后大约有5000 条机器指令)估量在对它进行测试期间将发觉多少个错误?为什么?答:月 25 至 100 个错误,美国的一些统计数字告知我们通常这个比值在 0.
25、0050.02 之间,也就是说,测试之前每 1000 条指令中大约有 520 个错误;假设测试之前每 1000 条指令中有 10 个错误,就估量对它进行测试期间将发觉的错误数为:5000*10/1000=50 ;(3) 设计下面伪码程序的语句掩盖和条件掩盖测试用例 : START INPUTA,B,C IF A5 THEN X=10 ELSE X=1 END IF IF B10 THEN Y=20 ELSE Y=2 END IF IF C15 THEN Z=30 ELSE Z=3 END IF PRINTX,Y ,Z STOP 答:此程序的语句掩盖用例:A=5,B=10,C=15; A=6,B
26、=11,C=16 条件掩盖用例为:名师归纳总结 A=5,B=10,C=15;A=6,B=11,C=16;第 20 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - 7-4:回答以下问题; 1 什么是模块测试和集成测试?它们各有什么特点? 2 假设有一个由1000 行 FORTRAN语句构成的程序经编译后大约有5000 条机器指令 ,估量在对它进行测试期间将发觉多少个错误?为什么? 3 设计以下伪码程序的语句掩盖和路径掩盖测试用例;解答:1模块测试:保证每个模块能完成一个清楚定义的子功能而且和统计其他模块的功能之间没有相互依靠的关系;集成测试: 又称为组
27、装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现名师归纳总结 - - - - - - -第 21 页,共 25 页精选学习资料 - - - - - - - - - 2体会说明,在类似的程序中,单位长度里的错误数ET/IT 近似为常数;美国的一些统计数字说明,通常:0.005=ET/IT=0.02,即在测试之前,每1000 条指令中大约有520 个错误;所以, 在对 1000 行 FORTRAN语句构成的程序进行测试期间将发觉的错误的个数大约有25100 个; 3该伪码程序对应的程序流程图如下:从上到下每个判定依次命名为a、b、c:7-8:对一个包
28、含 10000 条机器指令的程序进行一个月集成测试后,总共改正了 15 个错误,此时 MTTF=10h;经过两个月测试后,总共改正了 25 个错误 其次个月改正了 10 个错误 ,MTTF=15h;要求: 1 依据上述数据确定MTTF 与测试时间之间的函数关系,画出 MTTF 与测试时间 的关系曲线;在画这条曲线时做了什么假设?2 为做到 MTTF=100h,必需进行多长时间的集成测试?3当集成测试终止时总共改正了多少个错误,仍有多少个错误埋伏在程序中?解答:1由于平均无故障时间 MTTF 与测试时间 之间存在线性关系,即 MTTF=a+b ,由于:10=a+b,15=a+2b,得到: a=5
29、,b=5 故:平均无故障时间 MTTF 与测试时间 之间存在线性关系为:MTTF=5+5 2为做到 MTTF=100h,有方程: 100=5+5 ,故 =19 即必需进行 19 个月的集成测试;3 由 于 经 验 : 平 均 无 故 障 时 间 与 单 位 长 度 程 序 中 剩 余 的 错 误 数 成 反 比 , 故有: MTTF=10000/ K * ET-EC 由于: 10=10000/ K * ET-15 ,15 = 10000/ K * ET-25 得到: ET=45,K=33.33 当集成测试终止时, MTTF=100h,有:100 = 10000/ 33.33 * 45-EC19
30、 故:EC19=42,即当集成测试终止时总共改正了 42 个错误,仍有 45-42=3 个错误埋伏在程序中;7-9:如对一个长度为 100000 条指令的程序进行集成测试期间记录下下面的数据:(a)7 月 1 日:集成测试开头,没有发觉错误;(b)8 月 2 日:总共改正 100 个错误,此时 MTTF=0.4h (c)9 月 1 日:总共改正 300 个错误,此时 MTTF=2h 依据上列数据完成以下各题;(1)估量程序中的错误总数;(2)为使 MTTF 达到 10h,必需测试和调试这个程序多长时间?时间 之间的函数关系曲线;解答:(3)画出 MTTF 和测试名师归纳总结 - - - - -
31、 - -第 22 页,共 25 页精选学习资料 - - - - - - - - - (1)据估算平均无故障时间 MTTF 的公式有:1/KEt/100000-100/100000=0.4 1 /K Et/100000-300/100000=2 得: K1000 ,Et=350 即程序中的错误总数达 350;(2)当 MTTF10h 时,有 1/K 350/100000- Ec/100000=10 得: Ec=340.按七八月分测试改错进度估算,仍需进行2 个月的集成测试;(3)MTTF和测试时间之间的函数关系曲线如下:7-10:在测试一个长度为24000 条指令的程序时,第一个月由甲、乙两名测
32、试员各自独立测试这个程序;经一个月测试后,甲发觉并改正 20 个错误,使 MTTF 达到 10h;与此同时,乙发觉 24 个错误,其中 6 个甲也发觉了; 以后由甲一个人连续测试这个程序;问: 1 刚开头测试时程序中总共有多少个潜藏的错误? 2 为使 MTTF 达到 60h,必需再改正多少个错误?仍需用多长测试时间?3 画出 MTTF 与集成测试时间 之间的函数关系曲线;解答:1此题中采纳的是分别测试法,测试前程序中的错误总数:B0=B1*B2/bc=20*24 /6=80 2由 于 经 验 : 平 均 无 故 障 时 间 与 单 位 长 度 程 序 中 剩 余 的 错 误 数 成 反 比 ,
33、 故 有: MTTF=24000/ K * ET-EC 由于: 10=24000/ K * 80-20 得到: K=40 为使 MTTF 达到 60h,有: 60 = 24000/ 40 * 80-EC 故: EC =70,即总共需要改正70 个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20 个错误,以后由甲一个人连续测试这个程序,因此,仍需要更正70-20=50 个错误;补充:【复旦高校 2001 年博士争论生入学考试试题】某模块的程序流程图如下;试分别根据判定掩盖、条件掩盖、判定/ 条件掩盖、条件组合掩盖和路径掩盖等掩盖标准设计最少的名师归纳总结 测试用例;第 23 页,共 25
34、 页- - - - - - -精选学习资料 - - - - - - - - - 第八章8-1:软件的可保护性与哪些因素有关?在软件开发过程中应当实行哪些措施来提高软件产品的可保护性?名师归纳总结 ( 1 ) 1可 理 解 性2可 测 试 性3可 修 改 性4可 移 植 性5可 重 用第 24 页,共 25 页- - - - - - -精选学习资料 - - - - - - - - - 性 8-2:假设自己的任务是对一个已有的软件做重大修改,而且只答应从下述文档中选取两份: a程序的规格说明; b程序的具体设计结果 自然语言描述加上某种设计工具表示 ; c源程序清单 其中有适当数量的注解 ;应选取哪两份文档 .为什么这样选取 .准备怎样完成交给自己的任务 . 解答:(1)选 AC (2)缘由:第一需要对软件做修改,就必需得有源代码,C 是必选;其次,软件规格说明书作为产品需求的最终成果,具有综合性,包括了全部的需求;其中主要的有:任务概述,数据描述,功能需求,性能需求,运行需求,其他需求;这些都是修改软件必需参考的内容,故挑选 A 综上,依据规格说明再结合源程序以及源程序里的注释,足够对软件进行修改;(3)结合需求,规格说明书以及源代码,依据软件工程的方法一步步去懂得,修改,测试,调试代码;名师归纳总结 - - - - - - -第 25 页,共 25 页