**

7-2 简单计算器 (13 分)

**
本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈S1存放数字,另一个堆栈S2存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从S1 中弹出两个数字,顺序为n1和n2;从S2中弹出一个运算符 op;执行计算 n2 op n1;将得到的结果压回S1。直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

输入格式:

输入首先在第一行给出正整数 N(1<N≤10 3),为S1中数字的个数。第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N−1 个运算符 —— 这里仅考虑 +、-、*、/ 这四种运算。一行中的数字和符号都以空格分隔。

输出格式:

将输入的数字和运算符按给定顺序分别压入堆栈S1和S2 ,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 10 9。如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0,其中 X 是当时的分子。然后结束程序。

输入样例 1:

5
40 5 8 3 2
/ * - +
//结尾无空行

输出样例 1:

2
//结尾无空行

输入样例 2:

5
2 5 8 4 4
* / - +
//结尾无空行

输出样例 2:

ERROR: 5/0
//结尾无空行

#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef enum { push, pop, end } Operation;
typedef enum { false, true } bool;
typedef int ElementType;
typedef int Position;
typedef int  Status;typedef struct Node{ElementType *Data;Position Top;int MaxSize;
} SNode,*Stack;Stack CreateStack(int MaxSize ){//创建栈Stack S = (Stack)malloc(sizeof(SNode));S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));S->Top = -1;S->MaxSize = MaxSize;return S;}void Push( Stack S, ElementType x){//入栈if(S->Top+1!=S->MaxSize){S->Top++;S->Data[S->Top]=x;}}ElementType Pop(Stack S){//出栈int a;if(S->Top!=-1){a=S->Top;S->Top--;return S->Data[a];}elsereturn 0;}void jisuan(Stack S1,Stack S2){int x,y,sum = 0,flag=0;char z;while(S2->Top!=-1){x=Pop(S1);y=Pop(S1);z=Pop(S2);//printf("%d %d %c\n",x,y,z);if(z=='+'){sum=y+x;//printf("+%d ",sum);}else if (z=='-'){sum=y-x;//printf("-%d ",sum);}else if (z=='*'){sum=y*x;//printf("*%d ",sum);}else {if(x==0){printf("ERROR: %d/0",y);flag=1;break;}else{sum=y/x;//printf("/%d ",sum);}}Push(S1, sum);//printf("%d ",sum);}if(flag==0)printf("%d",Pop(S1));}int main(){Stack S1,S2;int N,i;scanf("%d",&N);int a[N];char b[N-1];//建立栈S1=CreateStack(N);S2=CreateStack(N-1);//数据存入栈for(i=0;i<N;i++){scanf("%d",&a[i]);Push(S1, a[i]);}for(i=0;i<N-1;i++){scanf(" %c",&b[i]);//printf("%c",b[i]);Push(S2, b[i]);}jisuan(S1, S2);return 0;}

7-2 简单计算器 (13 分)相关推荐

  1. L2-1 简单计算器 (25 分)详解c语言 模拟堆栈

    L2-1 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S​1存放数字,另一个堆栈 S​2 存放运算符.计算 ...

  2. 7-13 简单计算器 (25 分)

    7-13 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符.计 ...

  3. 7-12 两个数的简单计算器 (10 分)

    7-12 两个数的简单计算器 (10 分) 本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加.减.乘.除或求余运算.题目保证输入和输出均不超过整型范围. 输入格式: 输入在一行中依 ...

  4. 习题2.1 简单计算器 (20 分)

    习题2.1 简单计算器 (20 分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运 ...

  5. PTA7-1 简单计算器 (25 分)

    PTA7-1 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符 ...

  6. 7-20 简单计算器 (20分)

    7-20 简单计算器 (20分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运算算 ...

  7. 7-4 简单计算器 (25 分)

    7-4 简单计算器 (25 分) 本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器.如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符.计算 ...

  8. 习题6-7 简单计算器 (20 分)

    习题6-7 简单计算器 (20 分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运 ...

  9. 简单计算器 (20 分)

    简单计算器 (20 分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运算算式,没有 ...

最新文章

  1. 数据结构——四大查找算法(工作必备)
  2. 二极管7种应用电路详解之二
  3. iptables 基础
  4. php getcount_PHP中关键字interface和implements详解
  5. Java中HashMap和TreeMap的区别
  6. Windows phone 7
  7. TextView跑马灯的几点问题:持续动画 和 与EditText争抢焦点的问题
  8. 深入浅出PHP amp; MySQL,深入浅出 PHP MySQL
  9. 密码只靠大脑记好累,有没有试过用群晖NAS来记?
  10. 推荐10款最好的免费项目管理工具
  11. Oracle 12c CDB和PDB的切换
  12. 苹果小企业项目申请App Store Small Business Program
  13. 为什么有了FineBI后还会有FineReport?这两者的区别真的很大
  14. 对 Windows 官方文档的一点吐槽
  15. 个人卖云服务器需要什么证,云服务器个人使用能做什么 云服务器要不要个人认证...
  16. Petalinux建立工程时出现WARNING: /bin/sh is not bash!的解决方法
  17. 浅谈:UEO就是SEO的一种
  18. 移动端IOS-抓包工具Stream
  19. 住建部:两城市出入口景观建设存在“形象工程”问题
  20. 微服务协议篇之REST

热门文章

  1. VMware虚拟化/云计算
  2. Java基础---File类,就是这么简单
  3. Java ——异常处理
  4. Qt Dialog捕捉鼠标移动事件
  5. 从零开始学 Web 之 ES6(三)ES6基础语法一
  6. 对于小波分解和傅立叶分解的理解
  7. 正则表达式30分钟入门教程-2
  8. WEB前端响应式布局之BootStarp使用
  9. 设计模式07----代理模式
  10. use 在php 用法中的总结