1. 程式人生 > >Week 1 # C 簡單計算器

Week 1 # C 簡單計算器

字符 str 代碼 個數 return ++ 結果 mes tle

原題描述:

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 簡單計算器