输入圆括号,中括号,大括号的字符串(即:([{}]) ),进行判断
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
int i,top=0;
char s[1000],a[1000];//s为栈,a用于存储输入的字符串
scanf("%s",a);
for(i=0;i<strlen(a);i++)
{
//将左括号入栈
if(a[i]=='['||a[i]=='{'||a[i]=='(')
s[++top]=a[i];
else
{
//若为右括号,判断是否与前一个字符匹配
if(a[i]==']'&&s[top]=='[')
{
top--;
}
else if(a[i]=='}'&&s[top]=='{')
{
top--;
}
else if(a[i]==')'&&s[top]=='(')
{
top--;
}
else
{
//top++是为了防止出现雷士({})}的情况,
//避免出现多了几个右括号判断为匹配的情况
top++;
break;
}
}
}
if(top==0)
{
printf("匹配\n");
}
else
printf("不匹配\n");
return 0;
}