首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
admin
2010-01-15
83
问题
阅读以下算法说明和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://www.kaotiyun.com/show/qcDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
POP3协议采用(29)模式进行通信,当客户机需要服务时,客户端软件与POP3服务器建立(30)连接。(30)
若某文件系统的目录结构如下图所示,假设用户要访问文件f1.java,且当前工作目录为Program,则该文件的全文件名为(24),其相对路径为(25)。 (25)
开发专家系统时,通过描述事实和规则由模式匹配得出结论,这种情况下适用的开发语言是(19)。
《GB/T18905软件工程产品评价》中确定的通用评价过程包括四个方面,其中有关“规定评价”部分包含的内容有(67)。
软件测试按实施组织分,测试应该包括以下的(50)。①开发方测试②用户方测试③第三方测试④验收测试⑤确认测试
某企业职工关系EMP(E_no,E_name,DEPT,E_addr,E_tel)中的属性分别表示职工号、姓名、部门、地址和电话;经费关系FUNDS(E_no,E_limit,E_used)中的属性分别表示职工号、总经费金额和已花费金额。若要查询部门为“开
一个程序的控制流图中有5个节点、9条边,在测试用例数最少的情况,确保程序中每个可执行语句至少执行一次所需测试用例数的上限是______。
以下关于瀑布模型的优点的叙述中,不正确的是______。
假设关系R1和R2如下图所示:若进行R1R2运算,则结果集分别为(1)元关系,共有(2)个元组。(2)
CPU执行指令时,先要根据程序计数器将指令从内存读取出并送入______,然后译码并执行。
随机试题
Wefirstthinkofthetraditionalornuclearfamily.Thisisatwo-generationfamily,thefatherandthemotherandtheirownch
A.中性粒细胞B.嗜酸性粒细胞C.单核细胞D.淋巴细胞金黄色葡萄球菌感染病变内的主要细胞
《建设工程委托监理合同》中明确的内容有( )。
东方印刷厂为增值税一般纳税人,主营书刊、写字本等印刷业务。2014年9月有关资料如下:(1)接受出版社和杂志社委托,自行购买纸张,印刷有统一刊号(CN)的图书和杂志。购买纸张取得的增值税专用发票上注明税额340000元,向各出版社和杂志社开具的增值税专用
某电器专卖店(一般纳税人)2015年8月发生下列购销业务:(1)销售空调30台,每台零售价格3000元,商场派人负责安装,每台收取安装费510元;(2)采取有奖销售方式销售电冰箱100台,每台零售价格2340元;将外购的50只石英手表对外投资,市场零售
教师重复学生的答案,根据学生回答的不足追问其中的要点,对学生的回答进行评价和鼓励,引导学生思考另一个更深入的问题等,这些对问题的处理一般处于教师提问的()。
为了推进高新技术发展,由省科技局牵头,组织20人的考察团来你市进行考察交流,交流的主题是“招商引资,推进高新科技发展”。领导安排你负责与科技局联络接洽,你该怎么做?
清末明初,一批西方人跑到中国西南山区进行科学考察或偷猎活动,他们中有人在山区发现了一种体形较小的有尾熊,由于当地人称其为“山地熊”或“猫熊”,他们在文章中也就称其为“猫熊”,“猫熊”后来为什么叫成“熊猫”了呢?民国以后,有些传统的书刊由竖排改为横排,有人由
通过视图进行查询,首先要进行【】。
Thisannouncementisto______.Inthesummerholidays,thelibrarywillhave______.
最新回复
(
0
)