PTA 简单计算器

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​​ 存放数字,另一个堆栈 S2​​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:

  1. 从 S1​​ 中弹出两个数字,顺序为 n1​​ 和 n2​​;
  2. 从 S2​​ 中弹出一个运算符 op;
  3. 执行计算 n2​​ op n1​​;
  4. 将得到的结果压回 S1​​。

直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

输入格式:

输入首先在第一行给出正整数 N(1),为 S1​​ 中数字的个数。

第二行给出 N 个绝对值不超过 100 的整数;第三行给出 N1 个运算符 —— 这里仅考虑 +-*/ 这四种运算。一行中的数字和符号都以空格分隔。

输出格式:

将输入的数字和运算符按给定顺序分别压入堆栈 S1​​ 和 S2​​,将执行计算的最后结果输出。注意所有的计算都只取结果的整数部分。题目保证计算的中间和最后结果的绝对值都不超过 1。

如果执行除法时出现分母为零的非法操作,则在一行中输出:ERROR: X/0,其中 X 是当时的分子。然后结束程序。

输入样例 1:

5
40 5 8 3 2
/ * - +
 

输出样例 1:

2
 

输入样例 2:

5
2 5 8 4 4
* / - +
 

输出样例 2:

ERROR: 5/0
复制代码
 1 #include<stdio.h>
 2 int main(){
 3     int n,i,sum=0,af,cf,f=0;
 4     int a[1001];
 5     char s[1000],c;
 6     scanf("%d",&n);
 7     af=n;
 8     cf=n-1;
 9     for(i=1;i<=n;i++){
10         scanf("%d",&a[i]);
11     }
12     getchar();
13     for(i=1;i<=n-1;i++){
14         scanf("%c",&s[i]);
15         getchar();
16     }
17     i=af;
18     while(cf>0){
19         if(s[cf]=='+'){
20             sum=a[i-1]+a[i];
21             a[i-1]=sum;
22             //printf("%d ",sum);
23         }
24         if(s[cf]=='-'){
25             sum=a[i-1]-a[i];
26             a[i-1]=sum;
27             //printf("%d ",sum);
28         }
29         if(s[cf]=='*'){
30             sum=a[i-1]*a[i];
31             a[i-1]=sum;
32             //printf("%d ",sum);
33         }
34         if(s[cf]=='/'){
35             if(a[i]!=0){
36             sum=a[i-1]/a[i];
37             a[i-1]=sum;
38             //printf("%d ",sum);
39             }else{
40             printf("ERROR: %d/0",a[i-1]);
41             f=1;
42             break; 
43         }
44         }
45              i--;
46             cf--;
47     }
48     if(!f) printf("%d",sum);
49     return 0;
50 }
复制代码

 

 
posted @   弈星  阅读(1363)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示