输入的只有整数,+-*/。包括/结果也为整数
#include<bits/stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
typedef long long ll;
using namespace std;
int factor_value();//读入一个因子并返回其值
int term_value();//
int expression_value();//
int expression_value()//求一个表达式的值
{
int result = term_value();//第一项的值
bool more = true;
while(more)
{
char op = cin.peek();//看一个字符不取走
if(op == '+' || op == '-')
{
cin.get();//从输入中取走一个字符
int value = term_value();
if(op == '+') result += value;
else result -= value;
}
else{
more = false;
}
}
return result;
}
int term_value()//求一个项的值
{
int result = factor_value();
while(true)
{
char op = cin.peek();
if(op == '*' || op == '/')
{
cin.get();
int value = factor_value();
if(op == '*')
result *= value;
else
result /= value;
}
else
{
break;
}
}
return result;
}
int factor_value()//求一个因子的值
{
int result = 0;
char c = cin.peek();
if(c=='(')
{
cin.get();
result = expression_value();
cin.get();//扔掉右括号
}
else
{
while(isdigit(c))
{
result = 10*result + c - '0';
cin.get();
c = cin.peek();
}
}
return result;
}
int main()
{
cout<<expression_value()<<endl;
return 0;
}