PTA L2-033 简单计算器功能有哪些?

2026-05-17 00:531阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计482个文字,预计阅读时间需要2分钟。

PTA L2-033 简单计算器功能有哪些?

题目链接:L2-033 题目描述和输入输出格式等见上面链接。输入样例1:540 5 8 3 2 / * + - +输出样例1:2输入样例2:52 5 8 4 4 * / + - +输出样例2:ERROR: 5/0实现思路:由于顺序符号这些都会影响结果,故需要进行处理。

题目链接

L2-033
题目叙述和输入、输出格式等见上面的链接。

输入样例 1:

5 40 5 8 3 2 / * - + 输出样例 1:

2 输入样例 2:

5 2 5 8 4 4 * / - + 输出样例 2:

ERROR: 5/0 实现思路

由于顺序符号这些都已经是题目给定的,所以就不用进行其他处理,按照输入顺序入栈即可。

while循环结束的条件是操作符栈(optr)为空;若其不为空,则从操作数栈(opnd)中按顺序取出 n2 和 n1,运算结果重新入opnd栈(如果除数为0,则进行错误提示Error,然后直接return即可)。

PTA L2-033 简单计算器功能有哪些?

循环结束后,操作数栈栈顶应该还剩下一个元素,输出它。

实现代码(C++)

#include <iostream> #include <stack> using namespace std; int main() { stack<int> opnd; // 操作数栈 stack<char> optr; // 操作符栈 int n; cin >> n; for (int i = 0; i < n; i++) { int n; cin >> n; opnd.push(n); } for (int i = 0; i < n - 1; i++) { char c; cin >> c; optr.push(c); } while (!optr.empty()) { int n1, n2; n1 = opnd.top(); opnd.pop(); n2 = opnd.top(); opnd.pop(); char c; c = optr.top(); optr.pop(); int n3; switch (c) { case '+': n3 = n2 + n1; break; case '-': n3 = n2 - n1; break; case '*': n3 = n2 * n1; break; case '/': if (n1 == 0) { cout << "ERROR: " << n2 << "/0" << endl; return 0; } n3 = n2 / n1; break; } opnd.push(n3); } cout << opnd.top() << endl; return 0; }

本文共计482个文字,预计阅读时间需要2分钟。

PTA L2-033 简单计算器功能有哪些?

题目链接:L2-033 题目描述和输入输出格式等见上面链接。输入样例1:540 5 8 3 2 / * + - +输出样例1:2输入样例2:52 5 8 4 4 * / + - +输出样例2:ERROR: 5/0实现思路:由于顺序符号这些都会影响结果,故需要进行处理。

题目链接

L2-033
题目叙述和输入、输出格式等见上面的链接。

输入样例 1:

5 40 5 8 3 2 / * - + 输出样例 1:

2 输入样例 2:

5 2 5 8 4 4 * / - + 输出样例 2:

ERROR: 5/0 实现思路

由于顺序符号这些都已经是题目给定的,所以就不用进行其他处理,按照输入顺序入栈即可。

while循环结束的条件是操作符栈(optr)为空;若其不为空,则从操作数栈(opnd)中按顺序取出 n2 和 n1,运算结果重新入opnd栈(如果除数为0,则进行错误提示Error,然后直接return即可)。

PTA L2-033 简单计算器功能有哪些?

循环结束后,操作数栈栈顶应该还剩下一个元素,输出它。

实现代码(C++)

#include <iostream> #include <stack> using namespace std; int main() { stack<int> opnd; // 操作数栈 stack<char> optr; // 操作符栈 int n; cin >> n; for (int i = 0; i < n; i++) { int n; cin >> n; opnd.push(n); } for (int i = 0; i < n - 1; i++) { char c; cin >> c; optr.push(c); } while (!optr.empty()) { int n1, n2; n1 = opnd.top(); opnd.pop(); n2 = opnd.top(); opnd.pop(); char c; c = optr.top(); optr.pop(); int n3; switch (c) { case '+': n3 = n2 + n1; break; case '-': n3 = n2 - n1; break; case '*': n3 = n2 * n1; break; case '/': if (n1 == 0) { cout << "ERROR: " << n2 << "/0" << endl; return 0; } n3 = n2 / n1; break; } opnd.push(n3); } cout << opnd.top() << endl; return 0; }