阅读下列说明和算法,回答问题1和问题2。【说明】算法5-1用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如表5-1所示。在算法5-1中,stack为一整数栈。算法中各函数的说明如表5-2所示。【算法5-1】将栈stack置空,置EOF为falsech←nextch();while(not EOF)k←kind(ch);ifk== (1) )push( (2) ;push( (3) ;else if(k== (4) )if(not empty())p

题目

阅读下列说明和算法,回答问题1和问题2。

【说明】

算法5-1用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如表5-1所示。

在算法5-1中,stack为一整数栈。算法中各函数的说明如表5-2所示。

【算法5-1】

将栈stack置空,置EOF为false

ch←nextch();

while(not EOF)

k←kind(ch);

ifk== (1) )

push( (2) ;push( (3) ;

else if(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;

endwhile

endif

为了识别更多种类的括号,对算法5-1加以改进后得到算法5-2。算法5-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如表5-3所示。

【算法5-2】

将栈stack置空, 置EOF为false

ch←nextch();

while(not EOF)

k←kind(ch);

if(k>0)

if(判断条件 1)

push( (5) ); push( (6) ); push( (7) );

else if(判断条件2 and 判断条件3)

pop(); pop(); pop();

else

显示错误信息(缺少对应左括号或右括号);

显示行号row: 显示列号col;

endif

endif

ch←nextch();

endwhile

if(not empty())

显示错误信息(缺少对应左括号或右括号);

while(not empty())

pop(); row←pop(); col←pop();

显示行号row; 显示列号col;

endwhile

endif

请将【算法5-1】和【算法5-2】中(1)至(7)处补充完整。


相似考题

1.阅读以下算法说明和C程序,根据要求回答问题1和问题2。【说明】【算法4-1】的功能是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号而没有对应的左括号或者右括号,则给出相应的提示信息,如图1-18所示。在【算法4-1】中,slack为一整数栈。算法中各函数的说明如表1-11所示。【算法4-1】将栈stack置空,置EOF为falseCh<-nextch();while(not EOF)k←kind(ch);if (k ==(1) ) {push( (2) );push( (3) );}else if( k ==(4) )if(not empty()){pop();pop();)else{显示错误信息(缺少对应左括号或右括号):显示行号row:显示列号col:)End ifEnd ifCh<-nextch();end whileif(not empty())显示错误信息(缺少对应左括号或右括号):While(not empty()){row<-pop();col<-pop():显示行号row:显示列号col;)End whileEnd if为了识别更多种类的括号,对【算法4-1】加以改进后得到【算法4-2】。【算法4-2】能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(charch)的参数及其对应的返回值如表1-12所示。【算法4-2】将栈stack置空,置EOF为falseCh<-nextch();while(not EOF){k<- kind(ch);if(k > 0)if(判断条件1){push( (5) );push( (6) );push( (7) );}else if(判断条件2 and判断条件3){pop();pop();pop();}else {显示错误信息(缺少对应左括号或右括号);显示行号row;显示列号col;)end ifend ifch <- nextch();)end whileif(not empty()){显示错误信息(缺少对应左括号或右括号);While(not empty()){Pop();row <- pop():col <- pop();显示行号row;显示列号col;))end whileend if请将【算法4-1】和【算法4-2】中,(1)~(7)空缺处的内容补充完整。

2.阅读下列说明和算法,回答问题1和问题2。【说明】算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:文件 提示信息(1+2)abc) 缺少对应左括号:第2行,第4列((def)gx) 缺少对应左括号:第3行,第10列(((h)ij)(k(1ml) 缺少对应右括号:第5行,第4列;第4行,第1列在算法2-1中,stack为一整数栈。算法中各函数的说明见表4。【算法2-1】将栈stack 置空,置EOF为false ch < - nextch(); while( not EOF) k < - kind(CH); if(k== (1) ) push( (2) );push( (3) ); elseif(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; endwhile endif 为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(char ch)的参数及其对应的返回值见表5。【算法2-2】将栈stack置空,置EOF为falsech< -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;endifendifch < - nextch();endwhileif(not empty( ) )显示错误信息(缺少对应左括号或右括号);while( not empty( ) )pop( ); row←pop( ); col←pop( );显示行号row;显示列号col;endwhileendif请将【算法2-1】和【算法2-2】中(1)~(7)处补充完整。

3.●试题二阅读下列说明和算法,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】算法2-1是用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如下所示:文件提示信息(1+2)abc)缺少对应左括号:第2行,第4列((def)gx)缺少对应左括号:第3行,第10列(((h)ij)(k(1ml)缺少对应右括号:第5行,第4列;第4行 ,第1列在算法2-1中,stack为一整数栈。算法中各函数的说明见表4。【算法2-1】将栈stack置空,置EOF 为falsech<-nextch();while(not EOF)k<-kind(CH);if(k== (1) )push( (2) );push( (3) );elseif(k== (4) )if(not empty())pop();pop();else显示错误信息(缺少对应左括号或右括号);显示行号row;显示列号col;endifendifch<-nextch();endwhileif(not empty())显示错误信息(缺少对应左括号或右括号);while(not empty())row<-pop();col<-pop();显示行号row;显示列号co1;endwhileendif为了识别更多种类的括号,对算法2-1加以改进后得到算法2-2。算法2-2能够识别圆括号、方括号和花括号(不同类型的括号不能互相匹配)。改进后,函数kind(char ch)的参数及其对应的返回值见表5。【算法2-2】将栈stack置空,置EOF为falsech<-nextch();while(not EOF)k<-kind(ch);if(k>0)if(判断条件1)push( (5) );push( (6) );push( (7) );elseif(判断条件2and判断条件3)pop();pop();pop();else显示错误信息(缺少对应左括号或右括号);显示行号row;显示列号col;endifendifch<-nextch();endwhileif(not empty())显示错误信息(缺少对应左括号或右括号);while(not empty())pop();rowpop();colpop();显示行号row;显示列号col;endwhileendif【问题1】请将【算法2-1】和【算法2-2】中 (1) ~ (7) 处补充完整。【问题2】请从下面的选项中选择相应的判断逻辑填补【算法2-2】中的"判断条件1"至"判断条件3"。注意,若"判断条件2"的逻辑判断结果为假,就无需对"判断条件3"进行判断。(a)字符是括号(b)字符是左括号(c)字符是右括号(d)栈空(e)栈不空(f)栈顶元素表示的是与当前字符匹配的左括号(g)栈顶元素表示的是与当前字符匹配的右括号

参考答案和解析
正确答案:(1) 1 (2) col (3) row (4) 2 (5) col (6) row (7) k
(1) 1 (2) col (3) row (4) 2 (5) col (6) row (7) k
更多“ 阅读下列说明和算法,回答问题1和问题2。【说明】算法5-1用来检查文本文件中的圆括号是否匹配。若文件中存在圆括号没有对应的左括号或者右括号,则给出相应的提示信息,如表5-1所示。在算法5-1中,stack为一整数”相关问题
  • 第1题:

    试题五(共15分)

    阅读以下说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

    【说明】

    小明在一家超市工作,该超市将进行整体改造,小明负责信息系统软硬件升级,他制定的工作计划如表5.1所示。

    每项任务的逻辑关系和部分时间信息如图5-1所示。

    【问题1】 (10分)

    请根据表5-1和图5-1,计算各项任务的最迟开始时间和最迟结束时间,填充图5-1中的空(1)~(10)。


    正确答案:
    【问题1】 (10分)
    (1)7
    (2)14
    (3)9
    (4)11
    (5)11
    (6)15
    (7)11
    (8)19
    (9)15
    (10)21

  • 第2题:

    在括号匹配算法中,当正扫描的符号是左括号时,则该做左括号()。


    进栈

  • 第3题:

    设计一个算法判别算术表达中的加圆括号()和方括号 [ ] 是否配对正确。注:圆括号可嵌套在方括号当中。


    int correct (char a[ ]) {stack s ; InitStack (s); // 调用初始化栈函数 for (i=0; i

  • 第4题:

    阅读以下说明。[说明]小明在一家超市工作,该超市将进行整体改造,小明负责信息系统软硬件升级,他制定的工作计划如表5-1所示。表5-1每项任务持续时间表



    每项任务的逻辑关系和部分时间信息如图5-1所示。



    请根据表5-1和图5-1,计算各项任务的最迟开始时间和最迟结束时间,填充图5-1中的空38~39。计算下表中每项任务的总时差,填充其中的空49~48。



    写出该项目的关键路径(在答题纸对应位置填写任务代码)。A-51-52-G


    答案:
    解析:
    38、7 39、 14 40、9 41、 11 42、 11
    43、 15 44、 11 45、 19 46、 15 47、 2148、6 49、4 50、4 51、D 52、F
    【解析】
    38-47、[解析] 本题考查项目管理中网络图、关键路径及相关计算。项目计划网络图中时间参数的计算应在确定各项工作的持续时间之后进行。1.最早开始和最早完成时间ES、EF。计划网络图中各项工作的最早开始时间和最早完成时间的计算应从网络计划的起始结点开始,顺着箭线方向依次逐项计算。1)起始结点的最早开始时间为零。2)工作的最早开始时间等于该工作的各个紧前工作的最早完成时间的最大值,即ES=max{紧前工作的EF};3)工作的最早完成时间等于该工作的最早开始时间加上其持续时间,即EF=ES+本工作持续时间;2.最迟开始时间和最迟完成时间LS、LF。网络计划中各项工作的最迟开始时间和最迟完成时间的计算应以项目规定或计算的I期为基准,从网络计划的终止结点,逆着箭线方向依次逐项计算。1)最迟结束时间:某工作的最迟结束时间等于该工作的各项紧后工作的最迟开始时间的最小值,即LF=min{紧后工作的LS};2)最迟开始时间:本项工作的最迟结束时间减本项工作的持续时间,即LS=LF-工作的持续时间;3.工作的总时差TF:工作的总时差指在不影响整个项目最早完成时间的前提下,各项工作的完工期可以推延的时间。工作总时差等于该工作最迟完成时间与最早完成时间之差,或该工作最迟开始时间与最早开始时间之差,即TF=LF-EF,或TF=LS-ES;4.工作的自由时差FF:工作自由时差指在不影响紧后工作的最早开始时间的前提下,一项工作的完工期可以推延的时间。自由时差的计算应按以下两种情况分别考虑:1)对于有紧后工作的工作,其自由时差等于本工作之紧后工作最早开始时间减本工作最早完成时间所得之差的最小值,即FF=min{ES(紧后工作)}-EF;2)对于无紧后工作的工作,也就是以网络计划终点结点为完成结点的工作,其自由时差等于计划工期与本工作最早完成时间之差。需要指出的是,对于网络中以终点结点为完成结点的工作,其自由时差与总时差相等。此外,由于工作的自由时差是其总时差的构成部分,所以,当工作的总时差为零时,其自由时差必然为零,可不必进行专门计算。在实际项目中,可能会出现其他情况。例如,紧后工作和紧前工作具有一定的平行特性,即紧后工作的开始并不以紧前工作的结束为前提,紧后工作只需在紧前工作开始一段时间后即可开始,将这样工作间的平行关系称为搭接关系。一般将这样的搭接关系分成四类:(1)结束—开始型(finish-to-start):B在A结束T时间之前不能开始,标记为FS (T)如下图(a)所示。(2)结束—结束型(finish-to-finish,FF):B在A结束T时间之前不能结束,标记为FF (T)如下图(b)所示。(3)开始—开始型(start-to-start,SS):B在A开始T时间之前不能开始,标记为SS (T)如下图(c)所示。(4)开始—结束型(start-to-finish,SF):B在A开始T时间之前不能结束,标记为SF (T)如下图(d)所示。



    具体计算如下:(1)结束—开始型(finish-to-start,FS(T)):B在A结束T时间之前不能开始,标记为FS(T),T表示时间间隔,各参数计算规则如下:最早时间:ESj=EFi+FS (T)最迟时间:LFi=LSj-FS(T)自由时差:FFi=ESj-FS(T)-EFi(2)结束—结束型(FF):B在A结束T时间之前不能结束,标记为FS(T),T表示时间间隔,各参数计算规则如下:最早时间:EFj=EFi+FF (T)最迟时间:LFi=LFj-FF (T)自由时差:FFi=EFj-FF (T)-EFi(3)开始—开始型(SS):B在A开始T时间之前不能开始,标记为FS(T),T表示时间间隔,各参数计算规则如下:最早时间:ESj=ESi+SS (T)最迟时间:LSi=LSj-SS (T)自由时差:FFi=ESj-SS (T)-ESi(4)开始—结束型(SF):B在A开始T时间之前不能结束,标记为FS(T),T表示时间间隔,各参数计算规则如下:最早时间:EFj=ESi+SF (T)最迟时间:LSi=LFj-SF (T)自由时差:FFi=EFj-SF (T)-ESi这四类情况下,总时差的计算规则与一般网络相同。根据上述公式,问题1计算结果如下:



    48-50、[解析] 计算结果如下:



    51-52、[解析] 计算结果如下:总时差最小的工作为关键工作,由关键工作构成的线路为关键线路或关键路径。本项目中从开始结点到最终结点间,A、D、F、G工作的总时差均为O,故本项目的关键路径是A-D-F-G。

  • 第5题:

    假设表达式中允许包含3种括号:圆括号、方括号和大括号。设计一个算法采用顺序栈判断表达式中的括号是否正确配对。


    设置一个栈 st,扫描表达式 exp,遇到‘(’、‘[’或‘{’,则将其进栈;遇到‘)’ , 若栈顶是‘(’,则继续处理,否则以不配对返回假;遇到‘]’,若栈顶是‘[’,则继续处理, 否则以不配对返回假;遇到‘}’ ,若栈顶是‘{’ ,则继续处理,否则以不配对返回假。在 exp 扫描完毕,若栈不空,则以不配对返回假;否则以括号配对返回真。本题算法如下: bool Match(char exp[],int n) { LinkStNode *ls; InitStack(ls); int i=0; ElemType e; bool flag=true; while (i