// 原始錯誤邏輯
int j = 0;
for (i=0; s[i]; i++) {
if (s[i]=='}') { if (j==0) fail; else j++; }
else j--; // 錯誤:遇到 '{' 應 j++,遇到 '}' 應 j-- 且檢查負值
}
if (j==0) success; // 錯誤:j 計數邏輯顛倒
#include <stdio.h>
#include <string.h>
int check_braces(const char *str) {
int depth = 0;
for (int i = 0; str[i]; ++i) {
if (str[i] == '{') depth++;
else if (str[i] == '}') {
if (depth == 0) return 0; // 多餘右括號
depth--;
}
}
return depth == 0; // 0 表配對成功
}
int main() {
char code[1000];
printf("輸入程式碼片段: ");
fgets(code, sizeof(code), stdin);
if (check_braces(code)) puts("大括號配對正確");
else puts("大括號配對錯誤");
return 0;
}
int check_all_brackets(const char *str) {
char stack[1000];
int top = -1;
for (int i = 0; str[i]; ++i) {
char c = str[i];
if (c=='('||c=='['||c=='{') stack[++top] = c;
else if (c==')'||c==']'||c=='}') {
if (top < 0) return 0;
char open = stack[top--];
if ((c==')'&&open!='(') || (c==']'&&open!='[') || (c=='}'&&open!='{'))
return 0;
}
}
return top == -1;
}
掌握堆疊配對括號是資料結構與編譯原理的入門必修課。