刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
简答题
2.简单计算器
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:
\- 1. 从 S1 中弹出两个数字,顺序为 n1 和 n2;
\- 2. 从 S2 中弹出一个运算符 op;
\- 3. 执行计算 n2 op n1;
\- 4. 将得到的结果压回 S1。
直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。
时间限制:7000
内存限制:65536
输入
输入首先在第一行给出正整数 N(1 < N ≤ 103),为 S1 中数字的个数。 第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N-1 个运算符 —— 这里仅考虑 `+`、`-`、`*`、`/` 这四种运算。一行中的数字和符号都以空格分隔。
输出
将输入的数字和运算符按给定顺序分别压入堆栈 S1 和 S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。 如果执行除法时出现分母为零的非法操作,则在一行中输出:`ERROR: X/0`,其中 `X` 是当时的分子。然后结束程序。
样例输入
样例1:
5
40 5 8 3 2
/ * - +
样例2:
5
2 5 8 4 4
\* / - +
样例输出
样例1:
2
样例2:
ERROR: 5/0
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:
\- 1. 从 S1 中弹出两个数字,顺序为 n1 和 n2;
\- 2. 从 S2 中弹出一个运算符 op;
\- 3. 执行计算 n2 op n1;
\- 4. 将得到的结果压回 S1。
直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。
时间限制:7000
内存限制:65536
输入
输入首先在第一行给出正整数 N(1 < N ≤ 103),为 S1 中数字的个数。 第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N-1 个运算符 —— 这里仅考虑 `+`、`-`、`*`、`/` 这四种运算。一行中的数字和符号都以空格分隔。
输出
将输入的数字和运算符按给定顺序分别压入堆栈 S1 和 S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。 如果执行除法时出现分母为零的非法操作,则在一行中输出:`ERROR: X/0`,其中 `X` 是当时的分子。然后结束程序。
样例输入
样例1:
5
40 5 8 3 2
/ * - +
样例2:
5
2 5 8 4 4
\* / - +
样例输出
样例1:
2
样例2:
ERROR: 5/0
使用微信搜索喵呜刷题,轻松应对考试!
答案:
解析:
根据题目描述,我们需要设计一个利用堆栈结构的简单计算器。主要思路是将输入的数字和运算符分别压入两个堆栈S1和S2中。然后,按照等号键的操作,不断地从S1和S2中弹出元素进行计算,并将结果压回S1。
具体实现时,需要注意以下几点:
- 读取输入时,要分别处理数字和运算符的输入,并按照顺序压入相应的堆栈。
- 在执行计算时,要按照运算符的优先级进行,例如先乘除后加减。
- 如果遇到除法操作且分母为零的情况,需要特殊处理,输出错误信息并结束程序。
- 最后,S1堆栈中剩下的就是计算结果,需要将其输出。
根据以上解析,我们可以编写相应的代码来实现这款简单计算器。
创作类型:
原创
本文链接:2.简单计算器本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。计算器由两个堆栈组
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



