#include"stdio.h"
#include"math.h"
#include"stdlib.h"
struct optrstyle
{
    int top;
    char stack[20];
}
struct opndstyle
{
    int top;
    int stack[20];
}
void main()
{
    char ch;
    while(1)
    {
    printf("-----------------------------------------\n");
    printf("|-----------欢迎来到速算24--------------|\n");
    printf("|----------是否开始游戏?????------------|\n");
    printf("|---------  开始游戏请按'Y'-------------|\n");
    printf("|--------- 退出游戏请按其他键-------------|\n");
    printf("-----------------------------------------\n");
    scanf("%c",&ch);
    if(ch=='Y' or ch=='y')
    {
    }
    else
        break;
    }
}
int EvaluateExpression()
{
  // 算术表达式求值的算符优先算法。设 OPTR 和 OPND 分别为运算符栈和运算数栈,OP 为运算符集合。
  InitStack(OPTR); 
  Push(OPTR,'#');
  InitStack(OPND);
  c = getchar();
  while(c!='#' || GetTop(OPTR)!='#')
  {
      if(!In(c,OP))
      {
          Push((OPND,c);
          c = getchar();
      }  // 不是运算符则进栈
      else
        switch(Precede(GetTop(OPTR),c))
      {
            case '<':    // 栈顶元素优先权低
                  Push(OPTR,c);
                  c = getchar();
                  break;
            case '=':      // 脱括号并接收下一字符
                  Pop(OPTR,x);    c = getchar();
                  break;
            case '>':      // 退栈并将运算结果入栈
vb计算器代码大全                  Pop(OPTR,theta);
                  Pop(OPND,b); 
                  Pop(OPND,a);
                  Push(OPND,Operate(a,theta,b));
                  break;
        }// switch
  }// while
  return GetTop(OPND);
}// EvaluateExpression
int changecard( char a[])
{
    if()
}
void InitStack(Stack &S)
{
    S.top=-1;
}
int Pop1(Stack &S)
{
    p==-1)
    {
        printf("stack is empty!");
        exit (1);
    }
    ElemType temp=S.p];
    S.top--;
    return temp;
int GetTop1(Stack &S)
{
    p==-1)
    {
        printf("stack is empty!");
        exit (1);
    }
    return S.p];
}
char Pop2(Stack &S)
{
    p==-1)
    {
        printf("stack is empty!");
        exit (1);
    }
    ElemType temp=S.p];
    S.top--;
    return temp;
char GetTop2(Stack &S)
{
    p==-1)
    {
        printf("stack is empty!");
        exit (1);
    }
    return S.p];
}
char Precede(char a,char b)//算符优先级函数
{
  char temp;
  switch(a)
  {
  case '+','-':
      {
          if (b=='*' or b=='/' or b=='(')
              temp='<';
          else temp='>';
      }break;
  case '*','/':
      {
          if(b=='(')
              temp='<';
          else temp='>';
      }break;
  case '(':
      {
          if(b==')')
              temp='=';
          else
              temp='<';
      }break;
  case ')':temp='>';break;
  case '#':
      {
          if(b=='#')
              temp='=';
          else temp='<';
      }break;
      default break;
  }
  return temp;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。