http://ac.jobdu.com/problem.php?cid=1040&pid=26
// 题目27:简单计算器.cpp: 主项目文件。 #include "stdafx.h" #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include <string> #include <set> #include <map> #include <queue> #include <stack> using namespace std; vector<double> result; vector<char> OP; int main() { //freopen("F:\\test.txt","r",stdin); //freopen("F:\\output.txt","w",stdout); int temp; while(scanf("%d",&temp)!=EOF) { result.clear(); OP.clear(); char t=getchar(); if(t=='\n'||t==' '&&temp==0) break; double first=1.0*temp; result.push_back(first);//存入第一个数 while(1) { char op=getchar(); OP.push_back(op); double num; scanf("%lf",&num); if(OP.back()=='*') { result.back()*=num; OP.pop_back(); } else if(OP.back()=='/') { result.back()/=num; OP.pop_back(); } else { result.push_back(num); } op=getchar(); if(op=='\n') break; } double res=result.front(); vector<double>::iterator iteRes=result.begin(); iteRes++; for(vector<char>::iterator iteOP=OP.begin();iteOP!=OP.end();iteOP++) { if(*iteOP=='+') { res+=*iteRes; iteRes++; } if(*iteOP=='-') { res-=*iteRes; iteRes++; } } printf("%.2lf\n",res); } return 0; }