CSP-J复赛冲刺必刷题 | P1981 表达式求值

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:CSP-J复赛冲刺必刷题 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

【输入】

一行,为需要你计算的表达式,表达式中只包含数字、加法运算符 “+” 和乘法运算符 “×”,且没有括号,所有参与运算的数字均为 0 到 2^31−1 之间的整数。

输入数据保证这一行只有 0−9、+、× 这 12种字符。

【输出】

一个整数,表示这个表达式的值。

注意:当答案长度多于 4 位时,请只输出最后 4 位,前导 0 不输出。

【输入样例】

1+1*3+4

【输出样例】

8

【代码详解】

#include <iostream>
#include <stack>
using namespace std;
stack<long long> st;
int main ( )
{
    long long a, c, x = 0;
    char b;
    cin >> a;
    a %= 10000; 
    st.push(a);
    while (cin >> b) {
        cin >> a;
        a %= 10000;
        if (b == '*') {
            c = st.top();
            st.pop();
            st.push(a * c % 10000);
        }
        else {
            st.push(a);
        }
    } 
    while (!st.empty()) {
        x += st.top();
        st.pop();
        x %= 10000;
    }
    cout << x;
 
    return 0;
}

【运行结果】

1+1*3+4
8

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/133434423