1 条题解

  • 0
    @ 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
难度
6
分类
(无)
标签
(无)
递交数
84
已通过
20
通过率
24%
被复制
5
上传者