括号匹配问题

来源:百度知道 编辑:UC知道 时间:2024/06/02 19:51:40
#include<stdio.h>
void main()
{
char sz[8],q;
int *base,*top;
base=top=&sz[0];

do
{
scanf("%c",*top);
if( *top == q)
break;
switch( *top )
case '(':
case '[': top++;break;
case ')': if ( --*top == '(')
{
printf("%c%c",*top,++*top);
top--;
}
else
{
printf("NO");
}
break;
case ']': if ( --*top == '[')
{
printf("%c%c",*top,++*top);
top--;

}
else
{

错在开关语句结构

switch( *top ) 下来要有大括号,不可省去。
switch 结束部分要有 default:break;
--------------------------------------------
switch 正确结构:

switch( *top ) {
case '(': top++;break;
case '[': top++;break;
case ')': if (...) { ..} else {...};break;
case ']': if (...) { ..} else {...};break;
default: break;
}