2016年计算机软件设计师模拟试题2

时间:2016-06-02 15:12:00   来源:无忧考网     [字体: ]

  ●试题二

  阅读下列说明和算法,回答问题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;显示列号co1;

  endwhile

  endif

 

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

  【算法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(判断条件2and判断条件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

  【问题1】

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

  【问题2】

  请从下面的选项中选择相应的判断逻辑填补【算法2-2】中的"判断条件1"至"判断条件3"。注意,若"判断条件2"的逻辑判断结果为假,就无需对"判断条件3"进行判断。

  (a)字符是括号

  (b)字符是左括号

  (c)字符是右括号

  (d)栈空

  (e)栈不空

  (f)栈顶元素表示的是与当前字符匹配的左括号

  (g)栈顶元素表示的是与当前字符匹配的右括号