C++实现:四则运算求值

类别:编程语言 点击:0 评论:0 推荐:

大二时候学C++写的程序,发上来给各位参考一下
#include<iostream.h>
#include<stdlib.h>
#include<ctype.h>
int add();
int mul();
int number();
void error();
static char exp[81];
static int pos;
int main(){
 int ans;
 do
 {
  pos=0;
  cout<<"请输入表达式"<<endl;
  cin>>exp;
  ans=add();
  if(exp[pos]!='\0')
   error();
  if(ans!=0)
   cout<<ans<<endl;
 }while(ans!=0);
 return 0;
}
int add()
{
 int rtn=mul();
 while(exp[pos]=='+'||exp[pos]=='-')
 {
  int op=exp[pos++];
  int opr2=mul();
  if(op=='+')
   rtn+=opr2;
  else
   rtn-=opr2;
 }
 return rtn;
}
int mul()
{
 int rtn=number();
 while(exp[pos]=='*'||exp[pos]=='/')
 {
  int op=exp[pos++];
  int opr2=number();
  if(op=='*')
   rtn*=opr2;
  else
   rtn/=opr2;
 }
 return rtn;
}
int number()
{
 int rtn;
 if(exp[pos]=='(')
 {
  pos++;
  rtn=add();
  if(exp[pos++]!=')')
   error();
  return rtn;
 }
 if(!isdigit(exp[pos]))
  error();
 rtn=atoi(exp+pos);
 while(isdigit(exp[pos]))
  pos++;
 return rtn;
}
void error()
{
 cout<<'\r';
 while(pos++)
  cout<<' ';
 cout<<"error"<<endl<<'\a';
 exit(-1);
}

本文地址:http://com.8s8s.com/it/it24554.htm