首页 > 代码库 > Week 1 # C 简单计算器

Week 1 # C 简单计算器

原题描述:

C - 简单计算器

 

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 

Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 
Output对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 
Sample Input

1 + 2
4 + 2 * 5 - 7 / 11
0

Sample Output

3.00
13.36
这个题目很简单啊,定义一个实型数组来存储数据,先把第一个数记录在数组前面。一个字符来记载运算符号。再输入后面的数字,如果是‘+‘号就原样,‘-‘号把数字就取负,‘*‘号就和前面一个数相乘,前面的数变为0,值赋给后面的数。‘/‘就是乘法改成除法就可以了。然后把数组的数都相加就可以了。注意一下输出的时候要求精度
AC代码:
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 using namespace std;
 5 int main()
 6 {
 7     char s;
 8     double h,b[200]={0};
 9     while(1)
10     {
11         scanf("%lf",&b[0]);
12         int i=1;
13         if(b[0]==0)
14         {
15             s=getchar();
16             if(s==\n)
17             break;
18         }
19         while(1)
20         {
21             s=getchar();
22             if(s==+)
23             {
24                 scanf("%lf",&b[i]);
25                 i++;
26             }
27             if(s==-)
28             {
29                 scanf("%lf",&b[i]);
30                 b[i]=-b[i];
31                 i++;
32             }
33             if(s==*)
34             {
35                 scanf("%lf",&b[i]);
36                 b[i]=b[i-1]*b[i];
37                 b[i-1]=0;
38                 i++;
39             }
40             if(s==/)
41             {
42                 scanf("%lf",&b[i]);
43                 b[i]=b[i-1]/b[i];
44                 b[i-1]=0;
45                 i++;
46             }
47             if(s==\n)
48             break;
49         }
50         h=0;
51         for(int j=0;j<i;j++)
52         {
53             h+=b[j];
54         }
55         printf("%.2lf\n",h);
56     }
57     return 0;
58 }

 

Week 1 # C 简单计算器