习题修改ok答案文档格式.docx
《习题修改ok答案文档格式.docx》由会员分享,可在线阅读,更多相关《习题修改ok答案文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
简单性能提高工作效率。
用户界面的简单性包括输入、输出的简单性;
系统界面风格的一致性;
命令关键词的含义、命令的格式、提示信息、输入输出格式等的一致性。
(3)易学习性和易使用性
用户界面应提供多种学习和使用方式,应能灵活地适用于所有的用户。
(4)立即反馈性
用户界面对用户的所有输入都应立即做出反馈。
当用户有误操作时,程序应尽可能明确地告诉用户做错了什么,并向用户提出改正错误建议。
三、下图是使用Basic语言编写的一个打印A,B,C三数中最小者的程序的流程图。
其中出现了6个GOTO语句,一个向前,5个向后,程序可读性很差。
if(A<
B)goto120;
if(B<
C)goto110;
100printC;
goto140;
110printB;
goto140;
120if(A<
C)goto130;
goto100;
130printA;
140
试利用基本控制结构,将程序中的GOTO语句消去。
(10分)
三、答案:
使用if-then-else结构化构造,则上述程序段可改成如下形式。
if(A<
BandA<
C)then
printA
elseif(A>
=BandB<
printB
else
printC;
4.请使用流程图、PAD图各PDL语言描述下列程序的算法。
(1)在数据A
(1)-A(10)中求最大数和次大数。
(2)输入三个正整数作为边长、判断该三条边构成的三角形是等边、等腰或一般三角形。
答:
(1)
1)流程图:
2)PAD图
3)PDL语言
定义n1=n2=0
输入A
(1).......A(10)
n1=n2=A
(1)
whilei>
10
ifA(i)>
=n1
n2=n1
n1=A(i)
endwhile
四、选择一种将三个数从小到大排序的算法,分别用
(1)流程图,
(2)N-S图,(3)PAD图描述其详细过程。
设数为a,b,c,其详细过程如下:
(1)流程图
(2)N-S图
(3)PAD图
40.请使用PAD图和PDL语言描述在数组A
(1)~A(10)中找最大数的算法。
解:
PDL语言:
N=1
WHILEN<
=10DO
IFA(N)<
=A(N+1)MAX=A(N+1);
ELSEMAX=A(N)ENDIF;
N=N+1;
ENDWHILE;
PAD图:
[解析]人工查找时,是从第一个元素开始查找,用当前元素与下一个元素比较,将较大者作为当前元素又与下一元素比较,如此循环,直到数组末尾。
2、将下面给出的伪码转换为N-S图和PAD图。
voidroot(floatroot1,floatroot2){
i=1;
j=0;
while(i<
=10){
输入一元二次方程的系数a,b,c;
p=b*b–4*a*c;
if(p<
0)输出“方程i无实数根”;
elseif(p>
0)求出根并输出;
if(p==0){
求出重根并输出;
j=j+1;
}
i=i+1;
}
输出重根的方程的个数j;
【解答】
(1)N-S图
(2)PAD图
9.下图给出的程序流程图代表一个非结构化的程序,请问:
(1)为什么说它是非结构化的
(2)设计一个等价的结构化程序。
(3)在
(2)题的设计中你使用附加的标志变量flag吗若没用,请再设计一个使用flag的程序;
若用了,再设计一个不用flag的程序。
START
IFpTHEN
WHILEqDO
f
ENDDO
ELSE
BLOCK
g
n
ENDBLOCK
ENDIF
STOP
答:
(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。
图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。
(a)解法1
(b)解法2
图4-3与该图等价的结构化程序(用flag)
(3)不使用flag把该程序改造为等价的结构化程序的方法如图4-4所示。
图4-4与该图等价的结构化程序(不用flag)
12.某厂对部分职工重新分配工作的政策是:
年龄在伙岁以下者,初中文化程度脱产学习。
高中文化程度当电工;
年龄在20岁到40岁之间者,中学中学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。
年龄在40岁以上者,中学文化程度当材料员,大学文化程序当技术员。
请用结构化语言、判定表或判定树描述上述问题的加工逻辑。
(1)结构化语言:
根据职工年龄和文化程序:
REPEAT
If年龄<
=20
If初中文化Then脱产学习endif
elseif高中文化Then电工endif
endif
If20<
年龄<
40
If中学文化
If男性Then钳工
Else
车工
Endif
elseif大学文化Then技术员endif
If年龄>
=40
If中学文化Then材料员
Until没有剩余未分配员工
判定表
1
2
3
4
5
6
7
8
9
11
年龄
C
D
E
文化
G
H
I
性别
--
M
F
脱产学习
√
电工
钳工
技术员
材料员
条件取值表
条件名
取值
符号
取值数
<
M1=3
>
20,<
文化程度
中学
M2=3
高中
大学
男
M3=2
女
8.画出下列伪码程序的流图,计算它的环形复杂度。
你觉得这个程序的逻辑有什么问题吗
CEXAMPLE
LOOP:
DOWHILEX>
A=B+1
IFA>
10
THENX=A
ELSEY=Z
ENDIF
IFY<
THENPRINTX,Y
ELSEIFY=2
THENGOTOLOOP
ELSEC=3
G=H+R
ENDDO
IFF>
THENPRINTG
ELSEPRINTK
(1)该伪码的流程图如图4-8所示:
图4-8程序流程图
根据该程序流程图,可得该程序流图如图4-9所示:
图4-9程序流图
环形复杂度V(G)=流图中的区域数
=流图中判定结点数目+1=5+1=6
(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。
因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。