软考真题
第7题
假设一个算术表达式中可以包含以下三种括号:“(”和“)”、“[”和“]”及和 “}”,并且这三种括号可以按照任意的次序嵌套使用。

下面仅考虑表达式中括号的匹配关系,其他问题暂时忽略。例如,表达式 [a-(b-5)]*c[{}]中的括号是完全匹配的,而表达式[a-(b-5]))*c中的括号不是完全匹配的, 因为“(”与“]”不能匹配,而且多了一个“)”,即缺少一个与“)”相匹配的“(”。

函数ifMatched (char expr[])的功能是用栈来判断表达式中的括号是否匹配,表达式 以字符串的形式存储在字符数组expr中。若表达式中的括号完全匹配,则该函数的返回 值为Matched,否则返回值为Mismatched。

该函数的处理思路如下:

(1) 设置一个初始为空的栈,从左至右扫描表达式。

(2) 若遇上左括号,则令其入栈;若遇上右括号,则需要与栈顶的左括号进行匹配。

(3) 若所遇到的右括号能与栈顶的左括号配对,则令栈顶的左括号出栈' 然后继续匹配过程;否则返回Mismatched,结束判断过程。

(4) 若表达式扫描结束,同时栈变为空,则说明表达式中的括号能完全匹配,返回 Matched o

函数ifMatched中用到了两种用户自定义数据类型BOOL和STACK,其中,BOOL 类型的定义如下:

【问题:4.1】填补C函数中的空缺(1)〜(5)
第9章C程序设计
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2011年 上半年 下午试卷 案例

笔记

AchanZhang-

请先在App中激活(应用市场搜“软考真题”)

2023-05-24


答题卡
加油