简单表达式求值

博客提及C语言引用头文件相关内容,可在本博客查看具体信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 #include "stack.h"
#include "stdio.h"
#include "conio.h"

 #include "stack.h"
#include "stdio.h"
#include "conio.h"

main()
{
  char c,theta,array[20];
  int a,b,t,i=0,j=0;
  SqStack OPTR;
  SqStack2 OPND;
  clrscr();

main()
{
  char c,theta,array[20];
  int a,b,t,i=0,j=0;
  SqStack OPTR;
  SqStack2 OPND;
  clrscr();

  InitStack(&OPTR);
  Push(&OPTR,'#');
  InitStack2(&OPND);
  gets(array);
  while(array[i]) i++;

  InitStack(&OPTR);
  Push(&OPTR,'#');
  InitStack2(&OPND);
  gets(array);
  while(array[i]) i++;

  if(array[i-1]!='=')
    printf("You must put a character make this procedure to the end!!!");
  else{
    i=0;
    while(array[i]!='='||GetTop(OPTR)!='#'){
      while(In(array[i])){i++;j++;}
      if(j){
 t=atoi(&array[i-j]);
 Push2(&OPND,t);
 j=0;
      }
      if(!In(array[i])){
 switch(Precede(GetTop(OPTR),array[i])){
   case '<':  Push(&OPTR,array[i]);i++;
       break;
   case '=':  Pop(&OPTR,&c);i++;
       break;
   case '>':  Pop(&OPTR,&theta);
       Pop2(&OPND,&a);Pop2(&OPND,&b);
       Push2(&OPND,Operate(a,theta,b));
       break;
   default:printf("Warning:Data Error!");
 }                                              /*switch*/
      }                                                /*if*/
    }                                                  /*swicth*/
  }                                                    /*else*/
  printf("%d",GetTop2(OPND));
  sleep(2);
}                                                      /*main*/

  if(array[i-1]!='=')
    printf("You must put a character make this procedure to the end!!!");
  else{
    i=0;
    while(array[i]!='='||GetTop(OPTR)!='#'){
      while(In(array[i])){i++;j++;}
      if(j){
 t=atoi(&array[i-j]);
 Push2(&OPND,t);
 j=0;
      }
      if(!In(array[i])){
 switch(Precede(GetTop(OPTR),array[i])){
   case '<':  Push(&OPTR,array[i]);i++;
       break;
   case '=':  Pop(&OPTR,&c);i++;
       break;
   case '>':  Pop(&OPTR,&theta);
       Pop2(&OPND,&a);Pop2(&OPND,&b);
       Push2(&OPND,Operate(a,theta,b));
       break;
   default:printf("Warning:Data Error!");
 }                                              /*switch*/
      }                                                /*if*/
    }                                                  /*swicth*/
  }                                                    /*else*/
  printf("%d",GetTop2(OPND));
  sleep(2);
}                                                      /*main*/

Precede(char a,char b){
  if(((a=='(')&&(b==')')) ||((a=='#')&&(b=='=')))
    return '=';
  else if(((a=='('||a=='#')&&(b=='+'||b=='-'||b=='*'||b=='/'||b=='(')) ||((a=='+'||a=='-')&&(b=='*'||b=='/'||b=='(')) ||((a=='*'||a=='/')&&b=='('))
    return '<';
  else if(((a=='+'||a=='-'||a=='*'||a=='/'||a==')')&&(b=='+'||b=='-'||b==')'||b=='='))||((a=='*'||a=='/')&&(b=='*'||b=='/')))
    return '>' ;
  else return
'@';

Precede(char a,char b){
  if(((a=='(')&&(b==')')) ||((a=='#')&&(b=='=')))
    return '=';
  else if(((a=='('||a=='#')&&(b=='+'||b=='-'||b=='*'||b=='/'||b=='(')) ||((a=='+'||a=='-')&&(b=='*'||b=='/'||b=='(')) ||((a=='*'||a=='/')&&b=='('))
    return '<';
  else if(((a=='+'||a=='-'||a=='*'||a=='/'||a==')')&&(b=='+'||b=='-'||b==')'||b=='='))||((a=='*'||a=='/')&&(b=='*'||b=='/')))
    return '>' ;
  else return
'@';

}

}


int Operate(int a,char theta,int b){
  int t;
  switch(theta){
    case '+': t=(a+b);break;
    case '-': t=(b-a);break;
    case '*': t=(a*b);break;
    case '/': t=(b/a);break;
  };
  return t;
}


int In(char c){
  if(c>='0'&&c<='9') return 1;
  else return 0;
}


int Operate(int a,char theta,int b){
  int t;
  switch(theta){
    case '+': t=(a+b);break;
    case '-': t=(b-a);break;
    case '*': t=(a*b);break;
    case '/': t=(b/a);break;
  };
  return t;
}


int In(char c){
  if(c>='0'&&c<='9') return 1;
  else return 0;
}

引用头文件见本Blog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值