習題3 8 符號配對 20 分

2022-07-12 17:42:16 字數 1725 閱讀 6449

請編寫程式檢查c語言源程式中下列符號是否配對:/**/()[]

輸入為乙個c語言源程式。當讀到某一行中只有乙個句點.和乙個回車的時候,標誌著輸入結束。程式中需要檢查配對的符號不超過100個。

首先,如果所有符號配對正確,則在第一行中輸出yes,否則輸出no。然後在第二行中指出第乙個不配對的符號:如果缺少左符號,則輸出?-右符號;如果缺少右符號,則輸出左符號-?

void test()

.

no

/*-?

void test()

].

no

?-]

void test()

.

輸出樣例3:

yes
括號的匹配,當然首先想起和堆疊有關,題目不難,但是考驗寫**的能力。放出我的撇腳**:

#include /* k & r stack */

#define maxval 100

static int val[maxval];

static int sp = 0;

void push(int ch)

else

}int pop(void)

else

}int isempty(void)

int isleftsymbol(int ch);

int getmatcher(int ch);

const char* getoriginalsymbol(int ch);

int main()

for (i = 0; line[i] != '\0'; i++) else if (line[i] == '*' && line[i+1] == '/') else if (ch == '(' || ch == ')' ||

ch == '[' || ch == ']' ||

ch == '')}}

symbols[index] = '\0';

// printf("%s\n", symbols); /* 輸出所有讀到的符號 */

/* 檢查符號匹配 */

for (i = 0; i < index; i++) else

} else }}

if (i == index && !isempty())

printf("%s", result);

return 0;

}int isleftsymbol(int ch)

int getmatcher(int ch)

', ['}'] = ';

return ch >= 0 && ch < 128 ? map[ch] : 0;

}const char* getoriginalsymbol(int ch)

'] = "}",

};return ch >= 0 && ch < 128 ? symbols[ch] : "";

}

習題3 8 符號配對 20分

請編寫程式檢查c語言源程式中下列符號是否配對 與 與 與 輸入為乙個c語言源程式。當讀到某一行中只有乙個句點.和乙個回車的時候,標誌著輸入結束。程式中需要檢查配對的符號不超過100個。首先,如果所有符號配對正確,則在第一行中輸出yes,否則輸出no。然後在第二行中指出第乙個不配對的符號 如果缺少左符...

習題3 8 符號配對 20分

思路 順序棧 1.首先定義棧的結構體,寫棧的出棧,入棧,得棧頂元素 和棧的初始化 2.寫符號匹配的函式 3.對於 的處理 include define maxsize 100 struct stack typedef struct stack seqstack int push seqstack s...

習題3 8 符號配對 20 分

請編寫程式檢查c語言源程式中下列符號是否配對 與 與 與 輸入格式 輸入為乙個c語言源程式。當讀到某一行中只有乙個句點.和乙個回車的時候,標誌著輸入結束。程式中需要檢查配對的符號不超過100個。輸出格式 首先,如果所有符號配對正確,則在第一行中輸出yes,否則輸出no。然後在第二行中指出第乙個不配對...