首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
admin
2010-01-15
80
问题
阅读以下算法说明和C程序,根据要求回答问题1至问题2。
[说明]
[算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。
在[算法4-1]中,stack为一整数栈。算法中各函数的说明如表4-16所示。
[算法4-1] 将栈stack置空,置EOF为false
为了识别更多种类的括号,对[算法4-1]加以改进后得到[算法4-2]。[算法4-2]能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如表4-17所示。
[算法4-2]
[问题1]
请将[算法4-1]和[算法4-2]中,(1)~(7)空缺处的内容补充完整。
[问题2]
请从以下选项中选择相应的判断逻辑填补[算法4-2]中的“判断条件1”至“判断条件3”。注意,若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断。
判断条件1: (8)
判断条件2: (9)
判断条件3: (10)
[供选择的答案]
A.栈顶元素表示的是与当前字符匹配的左括号
B.栈顶元素表示的是与当前字符匹配的右括号
C.字符是左括号 D.字符是右括号 E.栈不空 F.栈空
G.字符是括号
选项
答案
这是一道要求读者用创建Thread类的子类的方法实现多线程的编程题。本题的解答思路如下。 通常把限定只能在一端进行插入和删除操作的线性表称为栈,所以栈又称为运算受限的线性表。把可以进行插入和删除操作的一端称为栈顶(习惯用top指针指示),而另一端称之为栈底。当栈中不包含任何数据元素时,这个栈就为空栈。 由于栈具有“后进先出”的运算特点,因此在程序设计中应用十分广泛。例如,进制转换、括号匹配的检验、表达式求值以及迷宫求解等。 [算法4-1]的功能是检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出图4-18所示的提示信息。从图4-18所给出的信息可知,程序不但要求检查出是否有括号匹配错误,而且还需给出具体错在哪个括号。通常,括号匹配的规则是把最近的左右括号配成一对,所以括号匹配最常用的方法是遇到左括号则入栈,遇到右括号就出栈。这样,出栈的左括号与当前的右括号是匹配的。 [算法4-1]分析: ①栈置空,置EOF为FALSE,并从文件中读取第一个字符到ch,然后进入循环。循环体执行一次处理一个ch。进入循环,利用kind函数算出ch的类型k。 ②虽然[算法4-1]中有(1)~(4)空缺处,但其基本结构却很明显,大致流程如下。 当k等于什么的时候把什么入栈; 当k等于什么的时候且栈不为空的时候,进行出栈操作。如果栈为空,则打印错误信息;如果都不是,则读文件的下一个字符再次进入循环。 根据以上所提及的算法可知,入栈操作应该发生在类型k为1(即ch为左括号)时,而出栈操作应该发生在类型k为2(即ch为右括号)时。因此(1)空缺处所填写的内容是“1”,(4)空缺处所填写的内容是“2”。 由于在(4)空缺处之后的出栈操作中,并没有用到栈的内容。因此可能有些读者理所当然地认为栈中的内容没有什么用,可以在(2)、(3)空缺处随便压个ch,即两个空缺处所填写“ch”。但换个角度思考,从逻辑上就可以推翻这种解答。如果(2)、(3)空缺处压的是同样的数据,又是在同一位置出栈,算法大可只用一个PUSH、POP就可以了。 由语句“row<-pop();col<-pop();”可知,(2)、(3)空缺处应该把row和col压入堆栈。由于是先弹出row后弹出col,且根据栈的“后进先出”操作规则可知,应先将col压入栈,再压入row。因此 (2)空缺处所填写的内容是“col”,(3)空缺处所填写的内容是“row"。 [算法4-2]分析: 同理,由[算法4-2]中的语句“row<-pop();col<-pop();”可知,(5)、(6)空缺处应该把row和col压入堆栈。由于是先弹出row后弹出col,因此应先将col压入栈,再压入row,即(5)空缺处所填写的内容是“col”,(6)空缺处所填写的内容是“row”。 由于判断条件1为真时,需要进行入栈操作,因此判断条件1应是判断字符是不是左括号,如果是就入栈,即(8)空缺处应选择选项C的“字符是左括号”。 判断条件2和判断条件3是相关联的,当两个判断条件都为真时,要进行出栈操作,因此要判断栈是否为空。由此可以得出在判断条件2和判断条件3中,至少有一个必定是用来判断栈是否为空的。可以用判断栈顶元素来确定当前括号是否和栈中压入括号是同一类型的,但前提是左括号类型入了栈,而且要在栈顶。如果(7)空缺处压入的是k,则正好符合这一条件。所以(7)空缺处所填写的内容是“k”。 同时,判断括号是否匹配的条件也就可以确定了,如果当前ch是右括号且当前栈顶的左括号(只有左括号入了栈)类型与ch匹配,则匹配成功。根据试题说明中的提示信息:若“判断条件2”的逻辑判断结果为假,就无需对“判断条件3”进行判断,所以应把“栈不空”作为判断条件2,“栈顶元素表示的是与当前字符匹配的左括号”作为判断条件3,即(9)空缺处应选择选项E的“栈不空”,(10)空缺处应选择选项A的“栈顶元素表示的是与当前字符匹配的左括号”。
解析
转载请注明原文地址:https://kaotiyun.com/show/qcDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
以下关于汇编语言的叙述中,错误的是______。A.汇编语言源程序中的指令语句将被翻译成机器代码B.汇编语言的指令语句必须具有操作码字段,可以没有操作数字段C.汇编程序以汇编语言源程序为输入,以机器语言表示的目标程序为输出D.汇编程序先将源程序中的
POP3协议采用(29)模式进行通信,当客户机需要服务时,客户端软件与POP3服务器建立(30)连接。(29)
某企业生产流水线M共有两位生产者,生产者甲不断地将其工序上加工的半成品放入半成品箱,生产者乙从半成品箱取出继续加工。假设半成品箱可存放n件半成品,采用PV操作实现生产者甲和生产者乙的同步可以设置三个信号量S、S1和S2,其同步模型如下图所示。 信号量
对于测试中所发现错误的管理是软件测试的重要环节,以下关于错误管理原则的叙述正确的是()。
以下关于软件测试原则的叙述中,正确的是______。①所有软件测试都应追溯到用户需求②尽早地和不断地进行软件测试③完全测试是不可能的④测试无法发现软件潜在的缺陷⑤需要充分注意测试中的群集现象
某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为______内聚。
某算术表达式用二叉树表示如下,该算术表达式的中缀式为________________,其后缀式为________________。
与XY(即X与Y不相同时,XY的结果为真)等价的逻辑表达式为________________。
某汽车维修公司有部门、员工和顾客等实体,各实体对应的关系模式如下:部门(部门代码,部门名称,电话)员工(员工代码,姓名,部门代码)顾客(顾客号,姓名,年龄,性别)维修(顾客号,故障情况,维修日期,员工代码)假设每个部门允许有多部电话,则电话属性为
CPU执行指令时,先要根据程序计数器将指令从内存读取出并送入______,然后译码并执行。
随机试题
人力资源区别于其他资源的最根本的特质是()
下列哪项不属于红细胞过度破坏引起的贫血
下列选项中,对变电所所用电接线要求、备用方式和配置原则的叙述,正确的是什么?
安装调试过程设备监理工程师质量管理的主要任务是( )。
下列关于幼儿园课程评价的说法,错误的是()
对于认知风格属于场依存型的学生,一般情况下,适合的教学方法是()
2011—2015五年期间光缆线路总长度共增加了:
请运用中国法制史的理论知识对下列材料进行分析,并回答问题《唐律疏议.名例律》:“诸犯私罪者,以官当徒者,五品以上,一官当徒二年;九品以上,一官当徒一年。若犯公罪者,各加一年当。以官当流者,三流同比徒四年。”“诸以官当徒者,罪轻不尽其官,留官收赎;官少不
求下列极限:
在窗体上添加一个名称为Command1的命令按钮,然后编写如下事件代码:PrivateSubCommand1_Click()A=75Ifa<60Thenx=1Ifa<70Thenx=2Ifa<80The
最新回复
(
0
)