资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
多练出技巧巧思出硕果 参考答案 1 假 设 只 有SEQUENCE和DO_WHILE两 种 控 制 结 构 , 怎 样 利 用 它 们 完 成 IF_THEN_ELSE操作? 答:转化如下: K = 1 DO WHILE (条件.AND. K.EQ.1) 程序块 1 K=K+1 END DO DO WHILE ( (.NOT. 条件 ) .AND. K.EQ.1) 程序块 2 K=K+1 END DO 2假设允许使用SEQUENCE和 IF_THEN_ELSE两种控制结构,怎样利用它们完成 DO_WHILE操作? 答:转化如下; label: IF ( 条件 ) THEN 程序块 GOTO label ELSE 程序块 END IF 3画出下列伪码程序的程序流程图和盒图: START IF p THEN WHILE q DO f END DO ELSE BLOCK g n END BLOCK END IF STOP 答: (1)流程图如图6-1 所示: 多练出技巧巧思出硕果 开始 p g n q循环 WHILE p f q循环 停止 图 6-1 从伪码变成的程序流程图 (2)该程序的盒图如图6-2 所示: g n q f F P T 图 6-2 从伪码变成的程序盒图 4下图给出的程序流程图代表一个非结构化的程序,请问: (1)为什么说它是非结构化的? (2)设计一个等价的结构化程序。 (3)在( 2)题的设计中你使用附加的标志变量flag 吗?若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag 的程序。 答: (1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。 图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构 化的程序。 (2)使用附加的标志变量flag ,至少有两种方法可以把该程序改造为等价的结构化程序, 图 6-3 描绘了等价的结构化程序的盒图。 多练出技巧巧思出硕果 flag=TRUE p AND flag g q FT flag=FALSE (a)解法 1 flag=TRUE F flag=FALSE g T p (NOT q)OR(NOT flag) ( b)解法 2 图 6-3 与该图等价的结构化程序(用flag ) (3)不使用flag把该程序改造为等价的结构化程序的方法如图6-4 所示。 (NOT q)OR(NOT flag) FT p g 图 6-4 与该图等价的结构化程序(不用flag) 5研究下面的伪代码程序: LOOP : Set I to (START+FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)ITEM Set FINISH to (I-1) If (FINISH-START )1 goto LOOP 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 (1) 画出程序流程图。 (2) 程序是结构化吗?说明理由。 (3) 若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。 (4) 此程序的功能是什么?它完成预定功能有什么隐含的前提条件。 答: (1)该程序流程图如下: 多练出技巧巧思出硕果 开始 I= (START+FINISH)/2 TABLE(I)=ITEM T F TABLE(I)ITEM T F (FINISH-START)1 F T TABLE(START)=ITEME TABLE(FINISH)=ITEM F FLAG=0 结束 Start=I+1 Finish=I-1 FLAG=1 F T T (2)该程序不是结构化的,结构化的程序只有一个入口和一个出口,而该程序的流程途中 有两个出口。 (3)等价的结构化程序的流程图如下: 多练出技巧巧思出硕果 Flag=0 开始 (F-S)1 & flag=0 I=(F+S)/2 Table(I)=item Table(I)0 A=B+1 IF A10 THEN X=A ELSE Y=Z END IF IF Y0 THEN PRINT G ELSE PRINT K END IF STOP 答: (1)该伪码的流程图如图6-8 所示: 开始 结束 Z0? A10? Y0? Y=2? A=B+1 G=H+R Y=ZX=A C=3 Print X,Y Print KPrint G Y Y N YN Y N Y N N 图 6-8 程序流程图 多练出技巧巧思出硕果 根据该程序流程图,可得该程序流图如图6-9 所示: 1 2 3 45 6 7 8 9 10 11 1213 14 图 6-9 程序流图 环形复杂度V(G)= 流图中的区域数 =流图中判定结点数目+1=5+1=6 (2)该算法问题在于控制最外层循环的变量Z 不仅没有经过初始化,并且在该循环内部没 有任何有可能该变Z 的语句。因此,该段代码中的WHILE 循环部分代码要么不会执行,要 么可能出现死循环。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号