首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。 [说明] 算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示: 文件 提示信息 (
阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。 [说明] 算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示: 文件 提示信息 (
admin
2005-03-15
74
问题
阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。
[说明]
算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:
文件 提示信息
(1+2)
abc) 缺少对应左括号:第2行,第4列
((def)8x)) 缺少对应左括号:第3行,第10列
(((h)
ij)(k
(1ml) 缺少对应右括号:第5行,第4列;第4行,第1列
在算法2-1中,stack为一整数栈。算法中各函数的说明如表4-1所示。
[算法2-1]
将栈stack置空,置EOF为False
ch←nextch();
while(not EOF)
k←kind(ch);
if(k==(1))
push((2));push((3));
elself(k==(4))
if(not empty())
pop(),pop(),
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nextch();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
row←pop();col←pop();
显示行号row;显示列号col
cndwhile
endif
为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号,方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kinnd(char ch)的参数及其对应的返回值如表4-2所示。
表4-2 函数的参数及其返回值
[算法2-2]
将栈stack置空,置EOF为False
ch←nextch();
while(not EOF)
k←kind(ch);
if(k>0)
if( 判断条件1 )
push((5));push((6));push((7));
elseif( 判断条件2 and 判断条件3 )
pop();pop();pop();
else
显示错误信息(缺少对应左括号或右括号);
显示行号row;显示列号col;
endif
endif
ch←nexteh();
endwhile
if(not empty())
显示错误信息(缺少对应左括号或右括号);
while(not empty())
pop();row←pop();col←pop();
显示行号row;显示列号col;
endwhile
endif
选项
答案
(1)1 (2)col (3)row (4)2 (5)col (6)row (7)k
解析
本程序的功能是检查文本文件中的圆括号是否匹配。从提示信息中,可以看出程序不但可以检查出是否有括号匹配错误,而且还知道具体错在哪个括号。由于括号匹配的规则是把最近的左右括号配成一对,所以括号匹配最常用的方法是遇到左括号则入栈,遇到右括号就出栈,出栈的友括号与当前的右括号是匹配的。此算法也不例外。
下面具体分析算法:
首先,把栈置空,置EOF为False,并从文件中读取第一个字符到ch。然后进入循环,循环体执行一次处理一个ch。进入循环,利用kind函数算出ch的类型k,接下来就是一大堆的空了,这个算法本身并不长,但空有这么多,而且比较集中,为解题增加了一定的难度。这里虽然空多,但基本结构却很明显,大致流程如下:
当k等于什么的时候把什么入栈,当k等于什么的时候且栈不为空的时候出栈,如栈为空打印错误信息,如果都不是则读文件下一个字符再次进入循环。
再结合上面提到的算法,可以知道,入栈应是在类型k为1(即ch为左括号时),出栈应是在类型k为2(即ch为右括号时)。所以(1)空应填1,(4)空应填2。
(2)和(3)到底是把什么压入栈了呢?在(4)下面出栈时,并没有用到栈的内容。在此有些考生理所当然地认为栈中的内容没有什么用,随便压个ch进去了,而且2个都是写的ch。其实从逻辑上就可以推翻这种解答,如果是压的同样的数据,又是在同一位置出栈,算法大可只用个push,pop就可以了。这时继续往后面看,来寻找正确的答案。当看到“row<-pop();col<-pop();”时,所有的疑惑可迎刃而解了,应该把row和col压入堆栈!那么row和col谁先谁后呢?由于是先弹出row后弹出col,按栈的后进先出的规则,可知先压入栈的是col,再压入row。所以(2)空填写col,(3)空填写row。
完成[算法2-1]的分析后,分析[算法2-2]就比较轻松了。(5)(6)(7)空的答案可直接到后面找到,因为后面有“pop();row<-pop();col<-pop();”所以(5)空应填col,(6)空应填row。
转载请注明原文地址:https://kaotiyun.com/show/5yDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
阅读下列说明,回答问题,将解答写在答题纸的对应栏内。【说明】某软件的积分计算模块每天定时根据用户发布的文章数、文章阅读数来统计用户所获取的积分,用户分为普通用户和专家用户,两类用户具有不同的积分系数。图4-1是该模块的类图,图中属性和
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】某公司欲开发一套基于Web的房屋中介系统,以有效管理房源和客户,提升成交效率。该系统的主要功能是:(1)房源管理。员工或客户对客户拟出售/出租的意向房进行登记和管理。(2)客户管理。员工对
阅读下列说明,回答问题,将解答填入答题纸的对应栏内。【说明】某公司欲开发一款二手车物流系统,以有效提升物流成交效率。该系统的主要功能是:(1)订单管理:帮买顾问看到有买车线索后,会打电话询问买家是不是需要物流,若需要,帮买顾问就将这个线索发起为订单,
两个公司希望通过Internet进行安全通信,保证从信息源到目的地之间的数据传输以密文形式出现,而且公司不希望由于在传输节点使用特殊的安全单元而增加开支,最合适的加密方式是(10),使用的会话密钥算法应该是(11)。
在软件生命周期的不同阶段,需要实施不同类型的测试工作,单元测试是对程序设计进行验证,其中(39)不是单元测试的主要内容。在进行单元测试过程中,通常测试工程师都需要借助(40)来代替所测模块调用的子模块;在单元测试的基础上,需要将所有模块按照概要设计和详细设
在软件生命周期的不同阶段,需要实施不同类型的测试工作,单元测试是对程序设计进行验证,其中(39)不是单元测试的主要内容。在进行单元测试过程中,通常测试工程师都需要借助(40)来代替所测模块调用的子模块;在单元测试的基础上,需要将所有模块按照概要设计和详细设
(61)方法根据输出对输入的依赖关系设计测试用例。
GB/T16260将软件的内部(外部)质量属性划分为六大质量特性,分别是(65)。
在计算机体系结构中,CPU内部包括程序计数器PC、存储器数据寄存器MDR、指令寄存器IR和存储器地址寄存器MAR等。若CPU要执行的指令为:MOV R0,#100(即将数值100传送到寄存器R0中),则CPU首先要完成的操作是(1)。
随机试题
减少抽样误差的方法有()
良性肿瘤的临床特点是
邮寄申报的实际申报日期应当为()。
综合理财服务和理财顾问服务的区别主要体现在()。
代理人在代理权限内,以被代理人的名义与第三人进行法律行为,其法律后果由被代理人承担。()
Iftheteacherwantstoknowwhetherthestudentscanusethecomparativedegreeofadjectives,whichofthefollowingactivitie
关于国内生产总值((3DP),下列表述正确的是()①GDP不能准确反映社会分配和民生改善②GDP不能准确反映经济增长对资源环境的负面影响③GDP是指一个国家或地区的所有常住单位在一定时期内生产活动的最终成果④一国的GDP大幅
习近平在北京会见第四届全国道德模范及提名奖获得者时强调,精神的力量是无穷的,道德的力量也是无穷的。要深入开展学习宣传道德模范活动,弘扬真善美,传播正能量,激励人民群众崇德向善、见贤思齐,鼓励全社会积善成德、明德惟馨,为实现中华民族伟大复兴的中国梦凝聚起强大
Oneanswertothequestionoflandshortagewassuggestedbyanorganizationsomeyearsago.Acitywastobebuiltatsea,hous
Withthepossibleexceptionofequalrights,perhapsthemostcontroversialissueacrosstheUnitedStatestodayisthedeathpe
最新回复
(
0
)