x:=x*10+ord(ch)-ord(‘0’);
i:=i+1;ch:= (2)_______;
END
‘+’: x:=pop(s)+pop(s);
‘-‘: x:=pop(s);x:=pop(s)-x;
‘*’: x:=pop(s)*pop(s);
‘/’: x:=pop(s);x:=pop(s)/x;
ENDCASE
push(s,x);i:=i+1;ch:=a[i];
END;
comput:= (3)_______;
END;
25. 算 术 表 达 式 求 值 的 流 程 , 其 中 OPTR 为 算 术 符 栈 , OPND 为 操 作 数 栈 ,
precede(oper1,oper2)是比较运算符优先级别的函数,operate(opnd1,oper,opnd2)
为两操作数的运算结果函数。(#表示运算起始和终止符号)【西北工业大学 1999 六、
2 (7 分)】
FUNCTION exp_reduced:operandtype;
INITSTACK(OPTR);PUSH(OPTR"#");INITSTACK(OPND);read(w);
WHILE NOT((w='#’) AND (GETTOP(OPTR)='#')) DO
IF NOT w in op THEN PUSH(OPND,w);
ELSE CASE precede(GETTOP(OPTR),w)OF
'<':[(1)_______; read(w);]
'=':[(2)_______; read(w);];
'>':[theta:=POP(OPTR);b:=POP(OPND);a:=POP(OPND);(3)_______;]
ENDC;
RETURN(GETTOP(OPND));
ENDF;
26.根据需要,用适当的语句填入下面算法的_______中:
问题:设有 n 件物品,重量分别为 w
1
,w
2
,w
3
,…,w
n
和一个能装载总重量为 T 的背包。
能否从 n 件物品中选择若干件恰好使它们的重量之和等于 T。若能,则背包问题有解,否
则无解。解此问题的算法如下:
FUNCTION kanp_stack(VAR stack,w:ARRAY[1..n] OF real; VAR top:integer;
T:real):boolean;
{w[1:n] 存放 n 件物品的重量,依次从中取出物品放入背包中,检查背包重量,若不
超过 T,则装入,否则弃之,取下一个物品试之。若有解则返回函数值 true,否则返回
false}
BEGIN
top:=0; i:=1; { i 指示待选物品}
WHILE (1)_______ AND(2)_______DO
[IF (3)______ OR (4)_______ AND (i<n)
THEN [top := (5)_______ ;stack[top] :=i;{第 i 件物品装入背包}
T:=T-w[i]];
IF T=0 THEN RETURN ((6)_______) {背包问题有解}
ELSE [IF (i=n ) AND (top>0)