信管网试题内容
信管网 导航

试卷名称:2004年上半年软件设计师考试下午真题试题(案例分析)

考试年份:2004年上半年

试题来源:《2004年上半年软件设计师考试下午真题试题(案例分析)》在线考试

试题内容

阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。
[说明]
算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件    提示信息
(1+2)
abc)                            缺少对应左括号:第2行,第4列
((def)8x))                            缺少对应左括号:第3行,第10列
(((h)
ij)(k
(1ml)                                缺少对应右括号:第5行,第4列;第4行,第1列
在算法2-1中,stack为一整数栈。算法中各函数的说明如表4-1所示。

[算法2-1]
将栈stack置空,置EOF为False
ch←nextch();
while(not EOF.
k←kind(ch);
if(k==  (1)  )
push(  (2)  );push(  (3)  );
elself(k==  (4)  )
if(not empty())
pop(),pop(),
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nextch();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
row←pop();col←pop();
显示行号row;显示列号col
cndwhile
endif
为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号,方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kinnd(char ch)的参数及其对应的返回值如表4-2所示。

表4-2  函数的参数及其返回值


[算法2-2]
将栈stack置空,置EOF为False
ch←nextch();
while(not EOF.
k←kind(ch);
if(k>0)
if(  判断条件1  )
push(  (5)  );push(  (6)  );push(  (7)  );
elseif(  判断条件2  and  判断条件3  )
pop();pop();pop();
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nexteh();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
pop();row←pop();col←pop();
显示行号row;显示列号col;
endwhile
endif
[问题1]
试将[算法2-1)和[算法2-2]中(1)~(7)处补充完整。
[问题2]
从下面的选项中选择相应的判断逻辑填补[算法2-2]中的“判断条件1”至“判断条件 3”。注意,若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断。
(a)字符是括号(b)字符是左括号(c)字符是右括号(d)栈空(e)栈不空
(f)栈顶元素表示的是与当前字符匹配的左括号
(g)栈顶元素表示的是与当前字符匹配的右括号



参考答案:暂时没有答案(仅供参考) 收藏

【解析】

普通会员无法查看试题解析。[开通试题解析服务]