描述
对于一个不存在括号的表达式进行计算
输入描述:
存在多组数据,每组数据一行,表达式不存在空格
输出描述:
输出结果
示例1
输入:
6/2+3+3*4
输出:
18
#define _CRT_SECURE_NO_WARNINGS 1
#include <bits/stdc++.h>
using namespace std;
int main()
{
double t, term;//测试数据默认先输入数字。如果存在先输入符号的情况,可以用if语句,比如-5
char c;//紧接着数字输入运算符号
double a[1000];//保存结果的栈
double sum;//保存最终结果
int i;//i表示栈的高度,从0开始计算
int j;
while (scanf("%lf", &t) != EOF)
{
sum = 0;
i = 0;
a[0] = t;//输入的第一个数字压栈
while (scanf("%c", &c) != EOF && c != '\n')
{
scanf("%lf", &term);//输入运算符之后紧接着输入另一个运算数
//计算逻辑:加法直接压栈,减法压栈相反数,乘法取出一个数相乘后压栈,除法取出一个数相除后压栈
//最关键的就是这个加法的处理,两个操作数都要压栈
if (c == '+')
a[++i] = term;
else if (c == '-')
a[++i] = 0 - term;
else if (c == '*')
a[i] *= term;
else if (c == '/')
a[i] /= term;
}
for (j = 0; j <= i; j++)
sum += a[j];
printf("%d\n", (int)sum);
}
return 0;
}