Week 1 # C 簡單計算器
阿新 • • 發佈:2017-07-21
字符 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 簡單計算器