编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
{}
{}{}
{{}}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
char ch;
while (1)
{
ch = getchar();
if ((ch == '}') && (i == 0))
{
break;
}
else if (ch == '{')
{
i++;
}
else if ((ch == '}') && (i != 0))
{
i--;
}
if (ch == '\n')
{
break;
}
}
if ((i == 0) && (ch != '}')) //这里加上判断 ch != '}',因为可能前面输入的是成对,但又直接输入了‘}’
{
printf("括号正确成对出现\n");
}
else
{
printf("括号非正确成对出现\n");
}
system("pause");
return 0;
}
修正后的程序:可以输入多个括号或者输入一串代码后判断括号是否匹配,更加完善。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int count = 0;
int ch = 0;
while((ch=getchar()) != EOF)
{
if(ch == '{')
{
count++;
}
else if(ch == '}')
{
if(count > 0)
count--;
else if(count == 0)
{
printf("不匹配\n");
system("pause");
return 0;
}
}
}
if(count == 0)
printf("匹配\n");
else
printf("不匹配\n");
system("pause");
return 0;
}