kuahao.c

来自「用C做的括号匹配程序,可以检测用户输入的括号是否匹配并给出提示」· C语言 代码 · 共 74 行

C
74
字号
#include <stdio.h>


 typedef struct
 {char date[20];
  int top;
  }stack;
  void initstack(stack *s)   /*清空站;*/
 {s->top=-1;
  }
 int stackempty(stack *s) /*判断站是否为空,为空返回1,否则返回0。*/
 {if(s->top==-1)
   return 1;
  else
   return 0;
  }
  void push(stack *s,int a) /*将数压站*/
  { s->top++;
   s->date[s->top]=a;

   }
   void pop(stack *s)  /*弹站*/
  {s->top--;
  printf("弹站");
   }
  void match(stack *s,char e[])
  {int i;
   char c;
   for(i=0;(c=e[i])!='#';i++)
   {if((c=='(')||(c=='[')||(c=='{'))
    switch(c)
    {case '[':if(s->date[s->top]=='('){printf("小括号的内部不允许出现大括号!");break;}else{push(s,c);continue;}
     case '{':if((s->date[s->top]=='(')||(s->date[s->top]=='[')){printf("小括号的内部不允许出现大括号!");break;}else{push(s,c);continue;}
     default: continue;}
    else if(c==')')
    {if(s->date[s->top]=='(')
     {pop(s);
      continue;}
      else {printf("第%d个字符%c无法匹配",i+1,c);  return;}
     }
     else if(c==']')
    {
     if(s->date[s->top]=='[')
      {pop(s);
      continue;
      }
      else {printf("第%d个字符%c无法匹配",i+1,c);   return;}
     }
     else if(c=='}')
    {if(s->date[s->top]=='{')
     {pop(s);
      continue;}
      else {printf("第%d个字符%c无法匹配",i+1,c);    return;}
     }
     else
     continue;
    }
     if(!stackempty(s))
     printf("输入的左括号没有匹配完全!!");
     else  printf("match!");
   }
   main()
   {char e[20];
    stack *s;
    int a;
    s=(stack *)malloc(sizeof(stack));

    for(a=1;a<=10;a++)
    { initstack(s);
    scanf("%s",&e);
    match(s,e);}
    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?