表达式求值
题目描述
给定一个只包含“加法”和“乘法”的算术表达式,请你编程计算表达式的值。
输入格式 输入仅有一行,为需要计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号。
所有参与运算的数字不超过 1000 个,且均为 1000 以内的整数,并且保证最终计算结果不超过 int 范围。
输出格式
输出只有一行,包含一个整数,表示这个表达式的值。
样例输入
1+13+4+52 样例输出
18
样例输入
111+2222+333+502+100
样例输出
1088
代码
#include<bits/stdc++.h>
using namespace std;
int h;
int main()
{
stack<int> s; //定义栈
int x,y;//定义变量
char c;//定义变量
cin >> x;输入一个数
s.push(x);
while(cin >> c >> x)//输入一个符号一个数
{
if(c=='+')//如果是+
{
s.push(x);//直接进入栈
}
if(c=='*')//如果是*
{
y=x*s.top();//*上一个数
s.pop();//把x从栈里删除
s.push(y);y进入栈
}
}
while(!s.empty())//只要栈没清空
{
h=h+s.top();//累加
s.pop();//从栈里删除
}
cout << h;//输出和
return 0;
}
总结
这道题我们用栈来解决,先输入一个数,在一个符号一个数的输入,如果符号是+,直接进入栈,如果符号是,上一个数,再进入栈,最后把栈累加起来就可以啦!