C - 簡單計算器
阿新 • • 發佈:2017-07-20
sum break std 解法 測試 print 計算器 空格 +=
題目:
讀入一個只包含 +, -, *, / 的非負整數計算表達式,計算該表達式的值。Input測試輸入包含若幹測試用例,每個測試用例占一行,每行不超過200個字符,整數和運算符之間用一個空格分隔。沒有非法表達式。當一行中只有0時輸入結束,相應的結果不要輸出。
Output對每個測試用例輸出1行,即該表達式的值,精確到小數點後2位。
Sample Input
1 + 2 4 + 2 * 5 - 7 / 11 0
Sample Output
3.00 13.36
解法1:
邊讀取數據邊判斷左邊的符號,乘除直接計算,加法儲存到下一位,減法加負號儲存到下一位;
1 #include <iostream>
2 #include <stdio.h>
3
4 using namespace std;
5
6
7
8 int main()
9 {
10 char fu;
11 double temp;
12 double sum;
13 while(1)
14 {
15 sum = 0;
16 double a[200];
17 int i = 0;
18 cin>>temp;
19 fu = getchar();
20 if(temp == 0 &&fu == ‘\n‘) break;
21 else if (fu == ‘\n‘) printf("%.2lf\n",temp);
22 else
23 {
24 a[0] = temp;
25 while(cin>>fu>>temp)
26 {
27 if( fu == ‘*‘)
28 a[i] *= temp;
29 if( fu == ‘ /‘)
30 a[i] /= temp;
31 if( fu == ‘+‘)
32 a[++i] = temp;
33 if( fu == ‘-‘)
34 a[++i] = -temp;
35 if( getchar() == ‘\n‘)
36 break;
37 }
38
39 for(int t = 0;t <= i;t ++)
40 sum += a[t];
41 printf("%.2lf\n",sum);
42
43 }
44 }
45
46 return 0;
47 }
C - 簡單計算器