题目链接:http://ac.jobdu.com/problem.php?pid=1019
- 题目描述:
-
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
- 输入:
-
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
- 输出:
-
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
- 样例输入:
-
1 + 2 4 + 2 * 5 - 7 / 11 0
- 样例输出:
-
3.00 13.36
AC代码如下:
#include<stdio.h> #include<stdlib.h> int main(void) { double a,b,sum; char c; //字符型变量c用来存储运算符号 while(1) { a=b=sum=0; scanf("%lf",&a); if(a==0) { break; } while(1) { scanf("%c",&c); if(c=='\n') { break; } scanf("%c %lf",&c,&b); switch(c) { case '+': // 如果是+号,则sum=sum+a;然后将b赋值于a { sum+=a; a=b; break; } case '-': //如果是-号,则可用sum与a加赋值于sum,将-b赋值给a { sum+=a; a=-b; break; } case '*': //如果是*号,则先经行乘法运算,运算结果赋值与a { a*=b; break; } case '/': //如果是/号,则先经行除法运算,运算结果赋值与a { a/=b; break; } } } printf("%.2lf\n",sum+a); } return 0; }