表达式求值
程序员文章站
2022-03-31 19:45:26
...
#include<iostream>
#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();
while(true)
{
//看第一个字符 不取走
char op = cin.peek();
if(op=='+'||op=='-')
{
//把符号取走
cin.get();
//获得下一项的值
int value = term_value();
if(op=='-')
result -= value;
if(op=='+')
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(); //下一因子的值保存在value上
if(op == '*')
result *= value;
else
result /= value;
}
else
{
break;
}
}
return result;
}
//q求因子的值
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;
}
上一篇: 养生饮食禁忌 鸭肉不能和什么食物一起吃
下一篇: 表达式求值