表达式由 项+或者-项 组成
项由 因子*或者/因子 组成
可以连加连减或者连连城连除
因子由 左括号 表达式 右括号组成
#include<iostream>
#include<cstring>
#include<cstdlib>
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();//求第一项的值
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;
}
原文地址:https://www.cnblogs.com/Invictus-Gaming/p/12336862.html