2016年計算機軟件設(shè)計師模擬試題2

字號:


    ●試題二
    閱讀下列說明和算法,回答問題1和問題2,將解答填入答題紙的對應(yīng)欄內(nèi)。
    【說明】
    算法2-1是用來檢查文本文件中的圓括號是否匹配。若文件中存在圓括號沒有對應(yīng)的左括號或者右括號,則給出相應(yīng)的提示信息,如下所示:
    文件提示信息
    (1+2)
    abc)缺少對應(yīng)左括號:第2行,第4列
    ((def)gx)缺少對應(yīng)左括號:第3行,第10列
    (((h)
    ij)(k
    (1ml)缺少對應(yīng)右括號:第5行,第4列;第4行 ,第1列
    在算法2-1中,stack為一整數(shù)棧。算法中各函數(shù)的說明見表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
    顯示錯誤信息(缺少對應(yīng)左括號或右括號);
    顯示行號row;顯示列號col;
    endif
    endif
    ch<-nextch();
    endwhile
    if(not empty())
    顯示錯誤信息(缺少對應(yīng)左括號或右括號);
    while(not empty())
    row<-pop();col<-pop();
    顯示行號row;顯示列號co1;
    endwhile
    endif
    

 
    


    為了識別更多種類的括號,對算法2-1加以改進后得到算法2-2。算法2-2能夠識別圓括號、方括號和花括號(不同類型的括號不能互相匹配)。改進后,函數(shù)kind(char ch)的參數(shù)及其對應(yīng)的返回值見表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
    顯示錯誤信息(缺少對應(yīng)左括號或右括號);
    顯示行號row;顯示列號col;
    endif
    endif
    ch<-nextch();
    endwhile
    if(not empty())
    顯示錯誤信息(缺少對應(yīng)左括號或右括號);
    while(not empty())
    pop();rowpop();colpop();
    顯示行號row;顯示列號col;
    endwhile
    endif
    【問題1】
    請將【算法2-1】和【算法2-2】中 (1) ~ (7) 處補充完整。
    【問題2】
    請從下面的選項中選擇相應(yīng)的判斷邏輯填補【算法2-2】中的"判斷條件1"至"判斷條件3"。注意,若"判斷條件2"的邏輯判斷結(jié)果為假,就無需對"判斷條件3"進行判斷。
    (a)字符是括號
    (b)字符是左括號
    (c)字符是右括號
    (d)???BR>    (e)棧不空
    (f)棧頂元素表示的是與當前字符匹配的左括號
    (g)棧頂元素表示的是與當前字符匹配的右括號