此题的解决思路为:利用计数的方法判断花括号是否正确成对出现,遇到左花括号count++,遇到右花括号count--,若结果输出为0,则花括号成对出现。
但此时需要注意,若在计算的过程中count=0时遇到右花括号则没有正确成对出现,所以需要在判断部分特别声明。
具体代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch;
int count = 0;//定义一个计数器count
while ((ch = getchar()) != EOF)//循环输入,EOF结束
{
if (ch == '{')
{
count++;
}
//当遇到{时,计数器+1
if (ch == '}' && count == 0)
{
printf("不匹配\n");
return 0;
}
//当遇到}但计数器为0了,输出不匹配,即为}在{前边
if (ch == '}' && count != 0)
{
count--;
}
//当遇到}且计数器不为0时,计数器-1
}
if (count == 0)
{
printf("匹配!\n");
}
else
{
printf("不匹配!\n");
}//判断计数器count
system("pause");
return 0;
}