7-4 简单计算器 (25 分)
7-4 简单计算器 (25 分)
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:
- 从 S1 中弹出两个数字,顺序为 n1 和 n2;
- 从 S2 中弹出一个运算符 op;
- 执行计算 n2 op n1;
- 将得到的结果压回 S1。
直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。
输入格式:
输入首先在第一行给出正整数 N(1<N≤103),为 S1 中数字的个数。
第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N−1 个运算符 —— 这里仅考虑 +
、-
、*
、/
这四种运算。一行中的数字和符号都以空格分隔。
输出格式:
将输入的数字和运算符按给定顺序分别压入堆栈 S1 和 S2,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 109。
如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0
,其中 X
是当时的分子。然后结束程序。
输入样例 1:
5
40 5 8 3 2
/ * - +
结尾无空行
输出样例 1:
2
结尾无空行
输入样例 2:
5
2 5 8 4 4
* / - +
结尾无空行
输出样例 2:
ERROR: 5/0
结尾无空行
这题其实把可以挖坑的地方都填平了,所以说一下,容易遗漏的知识点
//如何读入字符串,因为有空格,想办法在读入的时候就不读入空格 //读入字符串最常用的当然还是"gets(字符串名字)"--这种方法会将空格一并读入 //这里又可以再复习一下"getchar()"--可以吃掉换行 //而scanf("%s",&s);很特别,他遇到空格就停下来, //所以我们在这里可以直接用scanf读入运算符号字符串,当遇到空格他停下来,在循环中又可以继续,所以我们一直要记得我们读入的时字符数组
#include<stdio.h>int main() {int num[10], n;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &num[i]);}char s[100];//如何读入字符串,因为有空格,想办法在读入的时候就不读入空格//读入字符串最常用的当然还是"gets(字符串名字)"--这种方法会将空格一并读入//这里又可以再复习一下"getchar()"--可以吃掉换行//而scanf("%s",&s);很特别,他遇到空格就停下来,//所以我们在这里可以直接用scanf读入运算符号字符串,当遇到空格他停下来,在循环中又可以继续,所以我们一直要记得我们读入的时字符数组for (int i = 0; i < n - 1; i++) {scanf("%s", &s[i]);}int top1 = n - 1, top2 = n - 2;while (top1!=0) {switch (s[top2]) {case '+':num[top1 - 1] = num[top1 - 1] + num[top1];break;case '-':num[top1 - 1] = num[top1 - 1] - num[top1];break;case '*':num[top1 - 1] = num[top1 - 1] * num[top1];break;case '/':if (num[top1] == 0) {printf("ERROR: %d/0\n", num[top1 - 1]);return 0;}num[top1 - 1] = num[top1 - 1] / num[top1];break;}top1--;top2--;}if (top1 == 0) printf("%d", num[top1]);return 0;
}
7-4 简单计算器 (25 分)相关推荐
- L2-1 简单计算器 (25 分)详解c语言 模拟堆栈
L2-1 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1存放数字,另一个堆栈 S2 存放运算符.计算 ...
- 7-13 简单计算器 (25 分)
7-13 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符.计 ...
- PTA7-1 简单计算器 (25 分)
PTA7-1 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运算符 ...
- L2-033 简单计算器 (25 分)-PAT 团体程序设计天梯赛 GPLT
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1存放数字,另一个堆栈 S2存放运算符.计算器的最下方有一个等号键,每次按下这个键,计 ...
- 7-1 简单计算器 (25 分)
不知道哪些点没过,大佬可以提醒我这个垃圾. 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1 存放数字,另一个堆栈 S2 存放运 ...
- 7-2 简单计算器 (25分)
模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数. ...
- 7-18 银行业务队列简单模拟 (25 分)
7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...
- 银行业务队列简单模拟 (25 分)c语言c++
7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银 ...
- 7-4 二叉树的遍历!(简单) (25 分)
7-4 二叉树的遍历!(简单) (25 分) 二叉树作为FDS课程最核心的数据结构之一,要求每个人都掌握! 这是一道简单的二叉树问题! 我们将给出一颗二叉树,请你输出它的三种遍历,分别是先序遍历,中序 ...
最新文章
- python列表(list)中出现次数最多的元素使用collection包的Counter方法
- linux shell 提示符消失 终端提示符显示-bash-4.1# 解决方法
- ApplicationContext||ApplicationContext与BeanFactory的区别||SpringContextUtil类的作用
- MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
- java mvc 批量插入_请教mysql spring mvc +mybatis中批量插入的问题?
- AlertBox 弹出层(信息提示框)效果
- .NET应用架构设计—表模块模式与事务脚本模式的代码编写
- honeywell Xenon 1900 usb
- CUMCM→MCM/ICM→NPMCM:关于国赛(全国大学生、研究生、博士研究生数学建模竞赛)和美赛中的数学的专业词汇详细攻略—美国数学建模竞赛
- 微信小程序滑动切换选项卡
- SpringBoot实现抽奖大转盘
- 元器件中关于晶体二极管的小小知识 2021-09-07
- Datawhale组队学习周报(第042周)
- 用html如何设计日历,用CSS设计日历
- 金三银四跳槽季,前端面试题记录(2021),VUE
- 增量Lint检测实现原理
- Python wxpython篇 | Python生态库之图形用户界面开发库 “wxPython “ 的安装及使用(附. 使用pyinstaller 库打包Python随机点名小程序程序.exe文件)
- 广发证券电脑linux,广发证券易淘金电脑PC官方版
- c语言编程显示文件无效或损坏,【转】LNK1123: 转换到 COFF 期间失败: 文件无效或损坏...
- IBM赌未来:量子计算服务IBM Q系统今年上线