标签:测试用例 else bsp 之间 \n scan desc tle getchar
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26553 Accepted Submission(s): 9626
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stack> using namespace std; stack<double>num; int main() { double n; while(scanf("%lf", &n)) { char c,k; c = getchar(); if(c==‘\n‘ && n==0) break; num.push(n); double m; while(1) { cin>>k; cin>>n; if(k == ‘*‘) { m = num.top(); m*=n; num.pop(); num.push(m); } else if(k == ‘/‘) { m = num.top(); m/=n; num.pop(); num.push(m); } else if(k == ‘+‘) { num.push(n); } else if(k == ‘-‘) { num.push(0-n); } if(getchar()==‘\n‘) //本行输入完毕 break; } double sum = 0; while(!num.empty()) { sum+=num.top(); num.pop(); //使用完后栈一定要清空 } printf("%.2lf\n", sum); } return 0; }
一般方法模拟
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; int main() { double a[1000]; double s, ss; char k, f; while (cin >> s)//题目要求多次输入 { int flag = 1, i = 0; memset(a, 0, sizeof(a)); a[0] = s; f = getchar(); if (s == 0 && f == ‘\n‘) { flag = 0; break; } while(1)//优先处理*、/运算 { cin >> k;//输入运算符 cin >> ss; if (k == ‘*‘) a[i] = a[i] * ss; if (k == ‘/‘) a[i] = a[i] / ss; if (k == ‘+‘) a[++i] = ss; if (k == ‘-‘) a[++i] = (-1)*ss; if (getchar() == ‘\n‘) break; } if (flag == 1) { double sum = 0; for (int j = 0; j <= i; j++) sum = sum + a[j]; printf("%.2lf\n", sum); } } return 0; }
标签:测试用例 else bsp 之间 \n scan desc tle getchar
原文地址:https://www.cnblogs.com/-citywall123/p/9501920.html