题目描述
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
输入描述:
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
输出描述:
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
示例1
输入
1 + 2 4 + 2 * 5 - 7 / 11 0
输出
3.00 13.36
/* 天大2018考研编程题 程序设计思想: */ #include<iostream> using namespace std; const int maxn=201; int main() { double temp,ans[maxn]; char ch; while(cin>>temp&&temp) { int num=0; double sum=0; ans[num]=temp; while(cin>>ch>>temp) { switch(ch) //只对乘号和除号进行数值运算 { case '+':ans[++num]=temp; //若遇加号,则把值存入数组 break; case '-':ans[++num]=-temp; //若遇加号,则把值的相反数存入数组 break; case '*':ans[num]*=temp; //若遇乘号,则与前一个数值相乘后存入数组 break; case '/':ans[num]/=temp; ////若遇除号,则与前一个数值相除后存入数组 break; } char c=cin.get(); if(c=='\n') break; } for(int i=0;i<=num;i++) //对已经进行完的乘号和除号数值运算的值累加 sum+=ans[i]; printf("%0.2f\n",sum); } return 0; }