简单计算器
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output
3.00 13.36
题解:
1 //思路将:-,*,/运算在输入时就完成 ,最后将数组中的所有元素进行加法运算 2 //本题没有出现括号,用这种方法简单快捷,用栈代码太长容易出现问题 3 4 //有以下几点要注意 5 //1.输入何时停止 6 //2.当输入0和回车后才算终止输入,所以不要忘记0+12=12仍然是可以计算的 7 //3.用double不要用float 8 #include<stdio.h> 9 #include<string.h> 10 int main() 11 { 12 double s[200];//保存每次计算结果 13 int top; 14 int n; 15 while(scanf("%d",&n)) 16 { 17 char x=getchar(); 18 if(n==0&&x=='\n') 19 break; 20 top=0; 21 s[top]=1.0*n;//先把第一次输入结果存入 22 //存入其他剩余数字 23 char ch,space; 24 double num; 25 while(scanf("%c %lf%c",&ch,&num,&space)!=EOF) 26 { 27 if(ch=='+') 28 s[++top]=num; 29 else if(ch=='-') 30 s[++top]=-1.0*num; 31 else if(ch=='*') 32 s[top]=s[top]*num; 33 else if(ch=='/') 34 s[top]=s[top]/num; 35 if(space!=' ') 36 break; 37 } 38 double ans=0; 39 int i=0; 40 for(i=0;i<=top;i++) 41 ans+=s[i]; 42 printf("%.2lf\n",ans); 43 } 44 return 0; 45 }

浙公网安备 33010602011771号