-
题目描述:
-
对于一个不存在括号的表达式进行计算
-
输入:
-
存在多种数据,每组数据一行,表达式不存在空格
-
输出:
-
输出结果
-
样例输入:
-
6/2+3+3*4
-
样例输出:
-
18
-
来源:
思路:此题表达式求值不存在括号,题目容易了好多,并不需要引入栈可以解决问题
#include <cstdio>
using namespace std;
int main()
{
char ch;
int temp,i,j,a[200];
while (scanf("%d",&temp)!=EOF){ //输入第一个操作数,第一个数绝对是整数
a[0]=0;
a[1]=temp; //从下标1开始赋值
i=1;
while(scanf("%c",&ch)!=EOF && ch!='\n')
{ //输入运算符,ch!='\n'特别重要,控制输入一串字符串的结束
scanf("%d",&temp); //每一个运算符后面,必有一个操作数
if(ch == '-') a[++i] = -temp; //先i+1,再把值temp赋给数组a[i+1]
else if(ch == '+') a[++i] = temp;
else if(ch == '*') a[i]*=temp; //遇到乘号或除号,则i不变,做运算之后,结果依然是a[i]
else if(ch == '/') a[i]/=temp;
}
for(j=1;j<=i;j++) {
a[0]+=a[j]; //算出a[0]+a[1]+a[3]+……+a[i]的和,并最后的结果放在a[0]
}
printf("%d\n",a[0]);
}
return 0;
}