首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
阅读以下算法说明和C程序,根据要求回答问题1至问题2。 [说明] [算法4-1]的功能是:用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如图4-18所示。 在[算法4-1
admin
2010-01-15
59
问题
阅读以下算法说明和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://jikaoti.com/ti/4Qi7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
软件设计阶段一般又可分为______。A.逻辑设计与功能设计B.概要设计与详细设计C.概念设计与物理设计D.模型设计与程序设计
将高级语言程序翻译为机器语言程序的过程中,常引入中间代码,其好处是()。
CD上声音的采样频率为44.1kHz,样本精度为16b/s,双声道立体声,那么其未经压缩的数据传输率为(14)。
程序中常采用变量表示数据,变量具有名、地址、值、作用域、生存期等属性。关于变量的叙述,(19)是错误的。
测试用例的三要素不包括________。
测试过程中,正确的测试顺序应该是()。①单元测试②集成测试③系统测试
传统编译器进行词法分析、语法分析、代码生成等步骤的处理时,前一阶段处理的输出是后一阶段处理的输入,则采用的软件体系结构风格是①。该体系结构的优点不包括②。②处应填入?
计算机系统中,CPU对主存的访问方式属于________________。
在各种不同的软件需求中,()描述了产品必须要完成的任务,可以在用例模型中予以说明。
测试记录包括、(64)。①测试计划或包含测试用例的测试规格说明。②测试期间出现问题的评估与分析。③与测试用例相关的所有结果,包括在测试期间出现的所有失败。④测试中涉及的人员身份。
随机试题
窗口中的状态栏一般用于显示当前的操作状态或提示信息。()
中国金融期货交易所规定,当日结算价是指某一期货合约()成交价格按照成交量的加权平均价。
甲公司正在考虑调整资本结构,有关资料如下:(1)公司目前债务的账面价值1000万元,利息率为5%,债务的市场价值与账面价值相同;所有者权益账面金额4000万元(与市价相同);每年的息税前利润为500万元。该公司的所得税税率为20%。(2)为了提高企
我国的基本政治制度有()
灭菌注射器和针头,下列哪一组,手均可触及
((安全生产法》对安全生产危险性较大的行业进行了规定,“矿山、建筑施工单位和危险物品的生产、经营、储存单位,应当()。”
热力管道球阀焊接要求中,符合规范要求的是()。
下面关于道家学派的表述,正确的是()。
设函数f(x)连续,若F(μ,ν)=dxdy,其中区域Dμν为图1—4—1中阴影部分,则=()
Internet实现了分布在世界各地的各类网络的互联,其最基础和核心的协议是()。
最新回复
(
0
)