原题:
#include<stdio.h>
#include<stdbool.h>
int main(){
char a[50],b[50];//a数组用于存储输入的字符,b数组用于存储用于判断的字符
int i=0,n,k=0;
bool flag=true;
do{
scanf("%c",&a[i]);
i++;
}while(a[i-1]!='@');//输入字符到数组a中
n=i;//n存储有多少个字符
for(i=0;i<=n-1;i++){
switch('a[i]'){
case '{':b[k]='}';k++;break;
case '[':b[k]=']';k++;break;
case '(':b[k]=')';k++;break;//如果出现左括号,存一个对应右括号到b数组中,同时k+1
case '}':if(b[k]!='}')flag=false;k--;break;
case ']':if(b[k]!=']')flag=false;k--;break;
case ')':if(b[k]!=')')flag=false;k--;break;//如果出现右括号,判断该括号是否与b数组相应的括号对应,如果不对应返回false
}
}
if(flag)
printf("YES");
else
printf("NO");
return 0;
}
最终结果总是yes,求解答