1 条题解
-
0wanglongbang (njnu19180103) LV 10 @ 2019-04-27 21:31:51
#include<iostream>
#include<cstdio>
using namespace std;//输入时没有空格
//表达式= 项 +- 项
//项= 因子 * / 因子
//因子= 表达式 或者=(表达式+表达式)int expression_value();//读入一表达式并返回其值
int factor_value();//读入一因子并返回其值
int term_value();//读入一项并返回其值int main()
{
printf("%d\n",expression_value());
return 0;
}
int expression_value()
{
int result=term_value();
bool more=true;
while(more)
{
char c=cin.peek(); //看输入流里的一个字符
if(c=='+'||c=='-')
{
cin.get();//从输入流里拿走一个字符;
if(c=='+')
result+=term_value();
else
result-=term_value();
}
else
more=false;
}
return result;}
int term_value()
{
int result=factor_value();
bool more=true;
while(more)
{
char c=cin.peek(); //看输入流里的一个字符
if(c=='*'||c=='/')
{
cin.get();//从输入流里拿走一个字符;
if(c=='*')
result*=term_value();
else
result/=term_value();
}
else
more=false;
}
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=result*10+c-'0';
cin.get();//把c扔掉
c=cin.peek();
}
}
return result;
}
- 1
信息
- ID
- 1033
- 难度
- 7
- 分类
- (无)
- 标签
- (无)
- 递交数
- 99
- 已通过
- 20
- 通过率
- 20%
- 被复制
- 5
- 上传者