题目内容 (请给出正确答案)
[单选题]

可利用一个栈来检查表达式中的括号是否匹配,其方法是:初始时设置栈为空,然后从左到右扫描表达式,遇到左括号“(”就将其入栈,遇到右括号“)”就执行出栈操作,忽略其他符号。在检查表达式“a*(b+c))-d”时,由于(),因此可判断出该表达式中的括号不匹配

A.需要进行出栈操作但栈已空

B.需要进行入栈操作但栈已满

C.表达式处理已结束,但栈中仍留有字符“(”

D.表达式处理已结束,但栈中仍留有字符")”

查看答案
如搜索结果不匹配,请 联系老师 获取答案
您可能会需要:
您的账号:,可能会需要:
您的账号:
发送账号密码至手机
发送
更多“可利用一个栈来检查表达式中的括号是否匹配,其方法是:初始时设…”相关的问题

第1题

可利用一个栈来检查表达式中的括号是否匹配,其方法是:初始时设置栈为空,然后从左到右扫描表达式,遇到左括号“(”就将其入栈,遇到右括号“)”就执行出栈操作,忽略其他符号。对于算术表达式“a*(b+c))d”,由于(),因此可判断出该表达式中的括号不匹配。

A、需要进行出栈操作但栈已空

B、需要进行入栈操作但栈已满

C、表达式处理已结束,但栈中仍留有字符“(”

D、表达式处理已结束,但栈中仍留有字符“)”

点击查看答案

第2题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,(33);对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,(34)。这两种情况都表明所检查的算术表达式括号不匹配。

A.栈为空却要进行出栈操作

B.栈已满却要进行入栈操作

C.表达式处理已结束,栈中仍留有字符“(”

D.表达式处理已结束,栈中仍留有字符“)”

点击查看答案

第3题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,();对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,()。这两种情况都表明所检查的算术表达式括号不匹配

A.栈为空却要进行出栈操作

B.栈已满却要进行入栈操作

C.表达式处理已结束,栈中仍留有字符“(”

D.表达式处理已结束,栈中仍留有字符“)”

点击查看答案

第4题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到
字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“((a+b/(a+b) )-c/a))/b”,检查时,(42)。

A.栈为空却要进行出栈操作

B.表达式处理已结束,栈中仍留下有字符“(”

C.栈已满却要进行入栈操作

D.表达式处理已结束,栈中仍留下有字符“)”

点击查看答案

第5题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到
字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,(1);对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,(2)。这两种情况都表明所检查的算术表达式括号不匹配。

A.栈为空却要进行出栈操作

B.栈已满却要进行入栈操作

C.表达式处理已结束,栈中仍留下有字符“(”

D.表达式处理已结束,栈中仍留下有字符“)”

点击查看答案

第6题

请教:2011年上半年软考程序员下午试题(标准答案版)第1大题第4小题如何解答?

【题目描述】

试题四(共15分)

阅读以下说明和C函数,填补C函数中的空缺(1)~(5),将解答写在答题纸的对应栏内。

【说明】

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

下面仅考虑表达式中括号的匹配关系,其他问题暂时忽略。例如,表达式“[a.(b.5)]*c[{}]”中的括号是完全匹配的,而表达式“[a-(b-5]))*c”中的括号不是完全匹配的,因为“(”与“]”不能匹配,而且多了一个“)”,即缺少一个与“)”相匹配的“(”。 函数ifmatched (char expr[])的功能是用栈来判断表达式中的括号是否匹配,表达式以字符串的形式存储在字符数组expr中。若表达式中的括号完全匹配,则该函数的返回值为Matched,否则返回值为Mismatched。

该函数的处理思路如下:

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

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

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

(4)若表达式扫描结束,同时栈变为空,则说明表达式中的括号能完全匹配,返回Matched。 函数ifMatched中用到了两种用户自定义数据类型BOOL 和STACK,其中,BOOL类型的定义如下:

typedef enum {Mismatched, Matched}BOOL;

STACK(即栈类型)的定义省略,栈的基本操作的函数原型说明如下:

void InitStack(STACK *S):初始化一个空栈。

void Push(STACK *S,char e):将一个字符压栈,栈中元素数目增1。

void Pop(STACK *S):栈顶元素出栈,栈中元素数目减1。

char Top(STACK S):返回非空栈S的栈顶元素值,栈中元素数目不变。

int IsEmpty(STACK S):若S是空栈,则返回1,否则返回0。

【我提交的答案】:(1)cptr++ (2)Push(&S,*cptr) (3)Top(STACK S) (4)Pop(STACK *S) (5)IsEmpty(STACK S)

【参考答案分析】:试题四参考答案(共 15分)

(1) cptr++或++cptr 或cptr +=1 或cptr = cptr+1 (3分)

(2) Push(&S,*cptr) (3 分)

(3) Top(S) (3分)

(4)Pop(&S) (3分)

(5) Is Empty(S) (3分)

【我的疑问】(如下,请求专家帮助解答)

老师,我第二题的答案写成:Push(STACK *S,*cptr),这样写对吗?会给分吗?我第三题写成:Top(STACK S),这样写对吗?会给分吗?

点击查看答案

第7题

设计算法判断一个算术表达式的圆括号是否正确配对。(提示:对表达式进行扫描,凡遇到'('

设计算法判断一个算术表达式的圆括号是否正确配对。(提示:对表达式进行扫描,凡遇到'('就进栈,遇')'就退掉栈顶的'(',表达式被扫描完毕,栈应为空。

点击查看答案

第8题

编写一个算法判断输入的表达式中3种括号是否配对(左、右圆括号(),方括号[],大括号{})。 bool Match3 (char exp[],int n) 提示:和圆括号思路一样,都是左括号进栈。遇到右括号,进行判断。 空栈,返回false。 栈顶元素的左括号和右括号不配对(比如'('与']'),返回false(回顾取栈顶元素的函数是哪个?)。 栈顶元素的左括号与右括号能配对(比如'['与']')
点击查看答案

第9题

判断一个表达式中左右括号是否匹配,采用栈实现较为方便。()
点击查看答案
热门考试 全部 >
相关试卷 全部 >
账号:
你好,尊敬的上学吧用户
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
谢谢您的反馈

您认为本题答案有误,我们将认真、仔细核查,
如果您知道正确答案,欢迎您来纠错

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
上学吧
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反上学吧购买须知被冻结。您可在“上学吧”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
上学吧
点击打开微信