上代码!
#include <cstdio>
#include <cstring>
#include<iostream>
using namespace std;
int factor_value();
int term_value();
int expression_value();
int main()
{
cout<<expression_value()<<endl;
return 0;
}
int expression_value()//求一个表达式的值
{
int result=term_value();//求第一项的值
while(1)//while 循环 求后面每一个项的和或差
{
char op=cin.peek();//查看一个字符 不取走
if(op=='+'||op=='-')
{
cin.get();//取走+-号后
int value=term_value();//对项进行运算
if(op=='+')
{
result+=value;
}
else
result-=value;
}
else
break;
}
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()//求一个因子的值 5+6*5
{
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;
}