程序无错误,但是运行不了,
#include <stdio.h>#include <string.h>
int main()
{
int n,j,i,len;
printf("请输入需要测试的表达式个数:");
scanf("%d%*c",&n); //输入测试组数
while(n)
{
char str1[10001];
char a[10001],b[10001]; //a数组按顺序存放括号,b数组作为一个栈存在
printf("请输入表达式:\n");
gets(str1); //输入表达式
for(i=0;i<20;i++)
{
if((str1[i]=='(')||(str1[i]==')')||(str1[i]=='{')||(str1[i]=='}'))
{
a[j]=str1[i];
j++;
}
}
a[j]='\0';
gets(a);
len=strlen(a);
if(a[0]==')'||a[0]==']'||len%2) //如果第一个数据是)或是]或者数组长度是奇数
{
printf("括号不匹配!\n"); //表示不能配对,输出No
continue;
}
b[j=0]=a[0];
for(i=1;i<len-1;i++)
{
if(b[j]==a[i]-2||b[j]==a[i]-1)//如果一个符号能被下一个符号配对,那么把下下一个元素压入b
{
if(j==0)
b[j]=a[++i];
else
j--;
}
else //如果一个符号不能被下一个符号配对,把这个符号压入b的数组中
b[++j]=a[i];
}
if(b[j]==a[i]-2||b[j]==a[i]-1&&j==0)
printf("括号匹配!\n");
else
printf("括号不匹配!\n");
--n;
}
system("pause");
return 0;
}