表达式求值
题目:输入为s四则运算表达式,仅由数字、+、-、*、/、(、)组成,没有空格,要求求其值。假设运算符结果倒是整数。“/”结果也是整数。
代码实现:
#include<iostream>
using namespace std;
int expression_value();
int factor_value() //计算因子的值,因子可以是一个整数或括号里的数
{
char a;
int n;
a = cin.peek();
if(a == '(')
{
cin.get();
n = expression_value();
cin.get(); //把右括号读取
}
else{//如果是整数的话直接返回
cin>>n;
}
return n;
}
int term_value() //计算项的值,项是一个因子或者多个因子的乘除
{
int n;
n = factor_value();
char a;
a = cin.peek();
if(a=='*')
{
cin.get();
return n*term_value();
}
else if(a == '/')
{
cin.get();
return n/term_value();
}
else
return n;
}
int expression_value() //计算表达式的值,表达式是一个项或多个项的加减
{
int n;
n = term_value();
char a;
a = cin.peek();
if(a=='+')
{
cin.get();
return n+expression_value();
}else if(a=='-')
{
cin.get();
return n-expression_value();
}else
return n;
}
int main()
{
cout<<expression_value()<<endl;
return 0;
}