从标准输入读取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");
}
return 0;
}
结果演示:
讲解:
首先我们定义一个 i = 0;
每当输入一个 “ { ”,则 i自加一次,
如果输入一次 “ } ” 先判断 i 是否等于 0,若等于 0 则直接退出循环,否则 i自减一次
如此循环直至结束。
结束时,若 i = 0且ch = }则说明“括号正确成对出现”,反之“括号非成对出现”
但程序也有不足之处:在没有输入的时候,结果显示“括号正确成对”
如有好的改正方法,请评论探讨。