软件工程习题解章.docx
- 文档编号:2037218
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:8
- 大小:18.85KB
软件工程习题解章.docx
《软件工程习题解章.docx》由会员分享,可在线阅读,更多相关《软件工程习题解章.docx(8页珍藏版)》请在冰豆网上搜索。
软件工程习题解章
软件工程习题解-章
————————————————————————————————作者:
————————————————————————————————日期:
《软件工程》张海藩
四章习题8
美国某大学共有200名教师,校方与教师工会刚签定了一项协议。
按照协议,所有年工资超过$26,000(含$26,000)的教师工资将保持不变,年工资少于$26,000的教师将增加工资,所增加的工资按下述方法计算:
给每个由此教师赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不得多于$26,000。
教师的工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。
需要写一个计算程序计算并印出每名教师的原有工资和调整后的新工资。
要求:
⑴画出此系统的数据流图;
⑵写出需求说明;
⑶设计上述的工资调整程序(要求用判断树描述),设计时请分别采用下述两种算法,并比较这两种算法的优缺点;
a.搜索工资档案数据,找出年工资少于$26,000的人,计算新工资,校核是否超过$26,000,储存新工资,印出新旧工资对照表;
b.把工资档案数据按工资从做低到最高次序排序,当工资数额超过$26,000时即停止排序,计算新工资,校核是否超过限额,储存性工资,印出结果。
⑷你所画出的数据流图适应于哪种算法?
解:
⑴系统的数据流图
⑵需求说明:
⑶程序框图:
算法说明:
1此算法是先找出工资少于$26,000的人,再进行工资调整,属算法a
2算法a适于数据库的记录不太多的情况,在数据库中查找较费时。
但是,调整系统的主要部分少一个判断,结构清晰一些。
3算法b适于数据库的记录较多的情况,利用数据库的排序功能可很快地将教师的档案数据按工资大小排好序,调整程序只对前若干个记录进行操作。
这个算法对于修改数据库回更便捷些。
4总的说来,算法b比算法a的效率要高。
四章习题9
扑克游戏,设计模拟程序,其功能是:
⑴发两手牌(随机数),⑵确定赢者和赢牌的类型,⑶模拟N次游戏,计算每种类型牌赢或平局的概率。
画出高层控制流图。
游戏规则如下:
⑴有两人玩,分别称为A和B;
⑵一付扑克有52张牌,4种花色(方块、梅花、红桃、黑桃),每2种花色的点数按升序排列有2,3,4,…,10,J,Q,K,A等13种。
⑶给每人发三张牌,牌面向上(即亮牌),赢者立即可以确定;
⑷最高等级的一手牌称为同花,即三张牌均为同一种花色,最大的同花牌是同花色的Q、K、A;
⑸第二等级的牌称为顺子,即点数连续的三张牌,最大的顺子是花色不同的Q、K、A;
⑹第三等级的牌是同点,即点数相同的三帐派,最大的同点是A、A、A;
⑺第四等级的牌是对子,即三张牌中有两张点数相同,最大的对子是A、A、K;
⑻第五等级的牌是杂牌,即除去上列四等之外的任何一手牌,最大的杂牌是不同花色的A、K、J;
⑼若两人的牌型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。
解:
系统框图
四章习题10
假设只有顺序和DO-WHILE两种控制结构,怎样利用它们IF-THEN-ELSE操作?
解:
IF-THEN-ELSE操作框图如下:
等价的DO-WHILE操作框图如下:
四章习题11
画出下列伪码程序的程序流程图和盒图:
START
IFpTHEN
WHILEqDO
F
ENDDO
ELSE
BLOCK
g
n
ENDBLOCK
ENDIF
STOP
解:
程序流程图:
盒图:
四章习题12
研究下列伪码程序:
LOOP:
SetIto(START+FINISH)/2
IfTABLE(I)=ITEMgotoFOUND
IfTABLE(I) IfTABLE(I)>ITEMSetFINISHto(I-1) If(FINISH-START)>1gotoLOOP IfTABLE(START)=ITEMgotoFOUND IfTABLE(FINISH)=ITEMgotoFOUND SetFLAGto0 GotoDONE FOUND: SetFLAGto1 DONE: Exit 要求: ⑴画出程序流程图; ⑵程序是结构化的吗? 说明理由; ⑶若程序是非结构化的,请设计一个等价的结构化程序并且画出程序流程图; ⑷此程序的功能是什么? 它完成预定功能有什么隐含的前提条件吗? 解: ⑴此程序的流程图如下: 解: ⑵程序不是结构化的,明显标志是程序中有多个“goto”语句。 解: ⑶修改该程序为一个结构化程序: dowhile(FINISH-START)>1 setIto(START+FINISH)/2 ifTABLE(I) setSTARTto(I+1) elseifTABLE(I)>ITEMthen setFINISHto(I-1) endif enddo ifTABLE(I)=ITEMorTABLE(START)=ITEMorTABLE(FINISH)=ITEMthen setFLAGto1 else setFLAGto0 endif Exit 其框图如下 解: ⑷此程序的功能是: 用“逐步搜索”法在一个一维表(TABLE)中搜索指定的值(ITEM) 前提是: TABLE中的值是按从小到大存放着 程序中,变量START的初始值应该是TABLE表中表头的值,最小; 变量FINISH的初始值应该是TABLE表中表尾的值,最大 原程序是从两头逐步向中间移动,用两头的中间处的值与ITEM进行比较,若中间处的值比ITEM大,则表的尾部向表头移一步;若中间处的值比ITEM小,则表的头部向表尾移一步。 直到找到了与ITEM相同的值为止。 若找到了,则置FLAG=1;未找到,则置FLAG=0。 四章习题13 用Ashcroft-Manna技术可以将非结构化的程序转换为结构化程序,下图是一个转换的例子。 ⑴为什么说原程序不是结构化的? 你能否从这个例子总结出Ashcroft-Manna技术的一些基本方法? ⑵请用伪代码程序实现上图给出的结构化设计,不允许使用GOTO语句,可以使用DOCASE语句。 ⑶进一步简化上图给出的结构化设计。 解: ⑴原程序框图中“d”条件的一个出口指向操作框“D”,同时“e”条件的一个出口也指向操作框“D”,这就势必会语言程序中出现“GOTO”语句。 所以原程序框图是非结构化的。 从例子看,Ashcroft-Manna技术的基本做法是: 原程序中有几个简单判断语句,就在框图中设置几个分支的CASE语句,每个CASE分支对应一条判断语句。 ⑵将框图转换成程序只需在DOCASE语句前加一条语句“DO_UNTILI=4”,并把判断“I=4”改成该循环的结束语句即可。 ⑶其实要将这个非结构化的框图改成结构化的,完全可以不用CASE语句,只要将公共的转移点分开即可。 修改如下: 四章习题14 某交易所规定给经纪人的手续费计算方法如下: 总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。 如果交易总额少于1000元,则基本手续费为交易金额的8.4%; 如果交易金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元; 如果交易金额超过10000元,则基本手续费为交易金额的4%加上84元。 当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。 当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。 当每股售价超过25元时,如果交易的股数不是100的倍数,则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1.5%。 要求: ⑴用判定表表示手续费的计算方法; ⑵用判定树表示手续费的计算方法。 解: 判定表: 说明: 1,每一笔交易有3种属性: “交易总额”、“每股售价”、“股数”。 2,“交易总额”有3种值;“每股售价”有3种值;“股数”有2种值。 所以每笔交易有18种状态。 (表有19列,第1列是说明列) 3,每种状态有一个决策公式。 判定表中的决策方案有18行。 4,每个计算公式中只有一个变量“交易额“,设为a。 交易 金额 (a) a<1000 y y y y y y n n n n n n n n n n n n 1000<a≤10000 n n n n n n y y y y y y n n n n n n a>10000 n n n n n n n n n n n n y y y y y y 每股 售价 (b) b<14 y y n n n n y y n n n n y y n n n n 14≤b≤25 n n y y n n n n y y n n n n y y n n b>25 n n n n y y n n n n y y n n n n y y 交易股数是否为100的倍数? y n y n y n y n y n y n y n y n y n a×8.4%×(1+5%) x a×8.4%×(1+9%) x a×8.4%×(1+2%) x a×8.4%×(1+6%) x a×8.4%×(1+1.5%) x a×8.4%×(1+4%) x x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 习题