中文字幕综合一区,伊人av网,欧美中日韩在线,亚洲国产香蕉视频,黄视频在线免费,天天操天天爱天天爽,狠狠躁天天躁

軟題庫 移動(dòng)APP 掃碼下載APP 隨時(shí)隨地移動(dòng)學(xué)習(xí) 培訓(xùn)課程
試卷名稱 2011年上半年程序員考試下午真題試題(案例分析)
考試中心《2011年上半年程序員考試下午真題試題(案例分析)》在線考試
試卷年份2011年上半年
試題題型【分析簡答題】
試題內(nèi)容

閱讀以下說明和C函數(shù),填補(bǔ)C函數(shù)中的空缺(1)~(5),將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
假設(shè)一個(gè)算術(shù)表達(dá)式中可以包含以下三種括號(hào):“(”和“)”、"[”和“]”、“{”和“}”,并且這三種括號(hào)可以按照任意的次序嵌套使用。
下面僅考慮表達(dá)式中括號(hào)的匹配關(guān)系,其他問題暫時(shí)忽略。例如,表達(dá)式“[a.(b.5)】*c【{}】”中的括號(hào)是完全匹配的,而表達(dá)式“【a-(b-5]))*c”中的括號(hào)不是完全匹配的,因?yàn)椤埃ā迸c“】”不能匹配,而且多了一個(gè)“)”,即缺少一個(gè)與“)”相匹配的“(”。
函數(shù)ifmatched (char expr[])的功能是用棧來判斷表達(dá)式中的括號(hào)是否匹配,表達(dá)式以字符串的形式存儲(chǔ)在字符數(shù)組expr中。若表達(dá)式中的括號(hào)完全匹配,則該函數(shù)的返回值為Matched,否則返回值為Mismatched。
該函數(shù)的處理思路如下:
(1)設(shè)置一個(gè)初始為空的棧,從左至右掃描表達(dá)式。
(2)若遇上左括號(hào),則令其入棧;若遇上右括號(hào),則需要與棧頂?shù)淖罄ㄌ?hào)進(jìn)行匹配。
(3)若所遇到的右括號(hào)能與棧頂?shù)淖罄ㄌ?hào)配對(duì),則令棧頂?shù)淖罄ㄌ?hào)出棧,然后繼續(xù)匹配過程;否則返回Mismatched,結(jié)束判斷過程。
(4)若表達(dá)式掃描結(jié)束,同時(shí)棧變?yōu)榭?,則說明表達(dá)式中的括號(hào)能完全匹配,返回Matched。
函數(shù)ifMatched中用到了兩種用戶自定義數(shù)據(jù)類型BOOL和STACK,其中,BOOL類型的定義如下:
typedef enum  {Mismatched, Matched}BOOL;
 
STACK(即棧類型)的定義省略,棧的基本操作的函數(shù)原型說明如下:
void InitStack(STACK *S):初始化一個(gè)空棧。
void Push(STACK *S,char e):將一個(gè)字符壓棧,棧中元素?cái)?shù)目增1。
void Pop(STACK *S):棧頂元素出棧,棧中元素?cái)?shù)目減1。
char Top(STACK S):返回非空棧S的棧頂元素值,棧中元素?cái)?shù)目不變。
int IsEmpty(STACK S):若S是空棧,則返回1,否則返回0。
【C 函數(shù)】
BOOL   ifMatched   (char  expr[ ])
{
char *cptr;                             /* cptr 指向表達(dá)式中的字符*/
STACK S;
char e;
 
InitStack(&S} ; /*構(gòu)造一個(gè)空棧*/
for(cptr =  expr;  *cptr!= '\0' (1) {
if (  *cptr== ' (' || *cptr  ==' [' , ||   *cptr  ==' {'   )
(2);
else
                                     if    (   *cptr==')'    ||   *cptr==  ']'    ||    *cptr=='}'  )    {
                                                 if (IsEmpty (S) )
return Mismatched;
                                                 e =(3) ;  /*取棧頂?shù)淖罄ㄌ?hào)*/
                                                 if   (   *cptr  ==')' ,&& e!=' ('  )      return  Mismatched;
                                                 if  (   *cptr ==']'  &&  e!=' [' )     return  Mismatched;
                                                 if  (  *cptr ==')' &&  e!='{'    )return  Mismatched;
(4) ;                           /*梭頂?shù)淖罄ㄌ?hào)出校*/
                                    }
}
if ((5)) return Matched;
return Mismatched;
}


相關(guān)試題

推薦文章