請編寫程式檢查c語言源程式中下列符號是否配對:/*
與*/
、(
與)
、[
與]
、。
輸入為乙個c語言源程式。當讀到某一行中只有乙個句點.
和乙個回車的時候,標誌著輸入結束。程式中需要檢查配對的符號不超過100個。
首先,如果所有符號配對正確,則在第一行中輸出yes
,否則輸出no
。然後在第二行中指出第乙個不配對的符號:如果缺少左符號,則輸出?-右符號
;如果缺少右符號,則輸出左符號-?
。
void test()
.
no
/*-?
void test()
].
no
?-]
輸出樣例3:void test()
.
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。然後在第二行中指出第乙個不配對...