第4章习题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教师的工资档案存储在行政办公室的磁带上,档案中有目前的年工资、赡养的人数、雇佣日期等信息。需要写一个计算程序计算并印出每名教师的原有工资和调整后的新工资。要求:
⑴画出此系统的数据流图;
⑵写出需求说明;
⑶设计上述的工资调整程序(要求用判断树描述),设计时请分别采用下述两种算法,并比较这两种算法的优缺点;
研究下列伪码程序:
LOOP: Set I to (START+FINISH)/2
If TABLE(I) = ITEM goto FOUND
If TABLE(I) < ITEM Set START to (I+1)
If TABLE(I) > ITEM Set FINISH to (I-1)
If (FINISH-START) > 1 goto LOOP
解:IF-THEN-ELSE操作框图如下:等价的DO-WHILE操作框图如下:
习题11:程序流程图、N-S盒图的绘制
画出下列伪码程序的程序流程图和盒图:
START
IF p THEN
WHILE q DO
F
END DO
ELSE
BLOCK
g
n
END BLOCK
ENDIF
STOP
解:程序流程图:盒图:
习题12
总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。
如果交易总额少于1000元,则基本手续费为交易金额的8.4%;
如果交易金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;
如果交易金额超过10000元,则基本手续费为交易金额的4%加上84元。
当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。
解:
⑴ 系统的数据流图
⑵ 需求说明:
⑶ 程序框图:
算法说明:1 此算法是先找出工资少于$26,000的人, 再进行工资调整,属算法a
2 算法a适于数据库的记录不太多的情况,在数据库中查找较费时。
但是,调整系统的主要部分少一个判断,结构清晰一些。
3 算法b适于数据库的记录较多的情况,利用数据库的排序功能可很快地将教师的档案数据按工资大小排好序,调整程序只对前若干个记录进行操作。这个算法对于修改数据库回更便捷些。
a.搜索工资档案数据,找出年工资少于$26,000的人,计算新工资,校核是否超过$26,000,储存新工资,印出新旧工资对照表;
b.把工资档案数据按工资从最低到最高次序排序,当工资数额超过$26,000时即停止排序,计算新工资,校核是否超过限额,储存新工资,印出结果。
⑷你所画出的数据流图适应于哪种算法?
4 总的说来,算法b比算法a的效率要高。
判定表:(每个教师的年工资调整方案)
1
2
3
年工资W<$26000
T
T
F
计算值≥$26000
T
F
工资不变
×
W+100M+50N
×
$26000
×
表说明:
W---年工资
M---赡养人数
N---工龄,按工龄数截断取整,若工龄不满一年,则N=0
习题10
假设只有顺序和DO-WHILE两种控制结构,怎样利用它们IF-THEN-ELSE操作?
If TABLE(START) = ITEM goto FOUND
If TABLE(FINISH) = ITEM goto FOUND
Set FLAG to 0
Goto DONE
FOUND:Set FLAG to 1
DONE: Exit
要求:
⑴画出程序流程图;
⑵程序是结构化的吗?说明理由;
⑶若程序是非结构化的,请设计一个等价的结构化程序并且画出程序流程图;
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
交易
金额
(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
set START to (I+1)
else if TABLE(I) > ITEM then
set FINISH to (I-1)
endif
enddo
if TABLE(I) = ITEM or TABLE(START) = ITEM or TABLE(FINISH) = ITEM then
set FLAG to 1
解:判定表:
说明:1,每一笔交易有3种属性:“交易总额”、“每股售价”、“股数”。
2,“交易总额”有3种值;“每股售价”有3种值;“股数”有2种值。所以每笔交易有18种状态。(表有19列,第1列是说明列)
3,每种状态有一个决策公式。判定表中的决策方案有18行。
4,每个计算公式中只有一个变量“交易额“,设为a。
第4章《结构化设计》习题解答
习题8
美国某大学共有200名教师,校方与教师工会刚签订了一项协议。按照协议,所有年工资超过$26,000(含$26,000)的教师工资将保持不变,年工资少于$26,000的教师将增加工资,所增加的工资按下述方法计算: 给每个由此教师赡养的人(包括教师本人)每年补助$100,此外,教师有一年工龄每年再多补助$50,但是,增加后的年工资总额不得多于$26,000。
原程序是从两头逐步向中间移动,用两头的中间处的值与ITEM进行比较,若中间处的值比ITEM大,则表的尾部向表头移一步;若中间处的值比ITEM小,则表的头部向表尾移一步。直到找到了与ITEM相同的值为止。若找到了,则置FLAG=1;未找到,则置FLAG=0。
习题13:某交易所规定给经纪人的手续费计算方法如下:
else
set FLAG to 0
endif
Exit
其流程图如下:
⑷此程序的功能是:用“逐步搜索”法在一个一维表(TABLE)中搜索指定的值(ITEM)。
前提条件是:TABLE中的值是按从小到大存放;程序中,
变量START的初始值应该是TABLE表中表头的值,最小;
变量FINISH的初始值应该是TABLE表中表尾的值,最大。
当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。
当每股售价超过25元时,如果交易的股数不是100的倍数,则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1.5%。
要求:⑴用判定表表示手续费的计算方法;⑵用判定树表示手续费的计算方法。
⑷此程序的功能是什么?它完成预定功能有什么隐含的前提条件吗?
解:⑴此程序的流程图如下:
⑵程序不是结构化的,明显标志是程序中有多个“goto”语句。
⑶修改该程序为一个结构化程序:
do while (FINISH-START) > 1
set I to (START+FINISH)/2
if TABLE(I) < ITEM then
相关文档
最新文档