HDU 1237 簡單計算器
阿新 • • 發佈:2017-07-17
math.h tle 小數 ems target tor getchar style pac
題目代號:HDU 1237
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1237
題目原文:
簡單計算器
Problem Description 讀入一個只包含 +, -, *, / 的非負整數計算表達式,計算該表達式的值。 Input 測試輸入包含若幹測試用例,每個測試用例占一行,每行不超過200個字符,整數和運算符之間用一個空格分隔。沒有非法表達式。當一行中只有0時輸入結束,相應的結果不要輸出。 Output 對每個測試用例輸出1行,即該表達式的值,精確到小數點後2位。 Sample Input 1 + 2 4 + 2 * 5 - 7 / 11 0 Sample Output 3.00 13.36 代碼:# include <stdio.h> # include <string.h> # include <stdlib.h> # include <iostream> # include <fstream> # include <vector> # include <queue> # include <stack> # include <map> # include <math.h> # include <algorithm> using namespace std; # define pi acos(-1.0) # define mem(a,b) memset(a,b,sizeof(a)) # define FOR(i,a,n) for(int i=a; i<=n; ++i) # define For(i,n,a) for(int i=n; i>=a; --i) # define FO(i,a,n) for(int i=a; i<n; ++i) # define Fo(i,n,a) for(int i=n; i>a ;--i) typedef long long LL; typedef unsigned long long ULL; int main() { double num[205],n; char f; while(cin>>n) { mem(num,0); int sum=0; num[0]=n; if(getchar()==‘\n‘&&n==0)break;//cin忽略輸入數據之前空格,但是後面的空格使用getchar忽略,同時可以判斷是否換行結束 while(1) { cin>>f>>n; if(f==‘*‘)num[sum]*=n; else if(f==‘/‘)num[sum]/=n; else if(f==‘+‘)num[++sum]=n; else num[++sum]=-n; if(getchar()==‘\n‘)break; } n=0; for(int i=0;i<=sum;i++) n+=num[i]; printf("%.2lf\n",n); } return 0; }
HDU 1237 簡單計算器