####本程序的作用,输入一连串左右括号,然后判断他们是否匹配
函数从一开始定义一个字符数组用存储要输入的字符串,然后利用for循环,从第一个字符开始检测.
(1)先声明一个top变量等于0,如果碰到左括号‘(’,那么top+1,如果是右括号‘)’那么top-1,检测完后如果top=0不变,那么括号匹配;
(2)还要排除第一个是右括号第二个是左括号的情况,虽然这两个字符检测下来top=0不变,但是不匹配。这种情况例如“ ‘)(’ ‘())(’ ”,这种情况可以设立一个标记,flag,因为总是先有左括号,下来才是右括号,所以当碰到左括号时,要top=1时才能减1,否则先出个右括号,像上面那种,虽然左右括号数量上是匹配的,但并不匹配,你懂
(3).我这个并不是用栈实现的,所以这个只是简单实现功能而已,如果有不对的地方,欢迎你们喷我,哈哈
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char arr2[40];
int flag = 0;
int top = 0;
int i = 0;
printf("please input a string :");
gets(arr2);
for (i = 0; i < sizeof arr2 / sizeof arr2[0]; i++)
{
if (arr2[i] == '(')
top++;
else
{
if (top = 1 && arr2[i] == ')')
top--;
else
flag = 1;
}
}
if (top != 0)
printf("匹配\n");
else
printf("不匹配\n");
system ("pause");
return 0;
}