int main(void) {
int a = 1;
char ch[100];
int fg1 = 1, fg2 = 1, fg3 = 1;
int i = 0;
while (a = 1) {
scanf_s("%c", &ch[i]);
getchar();
i++;
if (ch[i - 1] == '@') {
break;
}
}
for (int j = 0; j < i; j++) {
if (ch[j] == '(') {
fg1 = 1;
for (int k = j + 1; k < i; k++) {
if (ch[k] == ')') {
fg1 = 1;
ch[k] = 'a';
break;
}
}
}
if (ch[j] == '[') {
fg2 = 0;
for (int k = j + 1; k < i; k++) {
if (ch[k] == ']') {
fg2 = 1;
ch[k] = 'a';
break;
}
}
}
if (ch[j] == '{') {
fg3 = 0;
for (int k = j + 1; k < i; k++) {
if (ch[k] == '}') {
fg3 = 1;
ch[k] = 'a';
break;
}
}
}
}
if (fg1 == 0 || fg2 == 0 || fg3 == 0||i>100) {
printf("NO");
}
else printf("YES");
return 0;
}
请说一下你测试的输入,输出都是什么。
scanf缺少参数。给出你的问题,错误提示。
28行是 0;
还有你的逻辑有问题,你只是匹配了每个左边括号,你没有考虑 )] } 这三种括号多出来的可能。例如 ()))) 你得匹配逻辑是yes