题目
思路
使用递归的思想定义表达式:
代码
#include<iostream>
#include<cstring>
#include<cstdio>
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();//*1*
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;
}
*1* :cin.peek():只看一下缓冲区的下一位是什么,并不从缓冲区中取出
*2* :isdigit():判断是否为整型