#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data[1000];
int d;
}*Q;
typedef struct nodes{
char next[1000];
int n;
}*T;
Q csh(){
Q sz = (Q)malloc(sizeof(struct node));
sz->d = -1;
return sz;
}
T cshs(){
T ysf = (T)malloc(sizeof(struct nodes));
ysf->n = -1;
return ysf;
}
void sr(Q sz,T ysf){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
sz->d = sz->d +1;
scanf("%d",&sz->data[i]);
}
getchar();
for(int i=0;i<n-1;i++){
ysf->n = ysf->n +1;
scanf("%c",&ysf->next[i]);
getchar();
}
}
void ys(Q sz,T ysf){
int x,y;
if(sz->d != 0){
y = sz->data[sz->d--];
x = sz->data[sz->d--];
if(y == 0&&ysf->next[ysf->n] == '/'){
printf("ERROR: %d/0",x);
return;
}
switch(ysf->next[ysf->n--]){
case '*':
sz->data[++sz->d] = x*y;
ys(sz,ysf);
break;
case '/':
sz->data[++sz->d] = x/y;
ys(sz,ysf);
break;
case '+':
sz->data[++sz->d] = x+y;
ys(sz,ysf);
break;
case '-':
sz->data[++sz->d] = x-y;
ys(sz,ysf);
break;
}
}else{
printf("%d",sz->data[sz->d]);
}
}
int main(){
Q sz = csh();
T ysf = cshs();
sr(sz,ysf);
ys(sz,ysf);
}
7-1 简单计算器 堆栈实现
最新推荐文章于 2024-05-19 12:00:13 发布
该程序定义了两个结构体,分别用于存储数值数组和运算符。通过`csh()`和`cshs()`函数分配内存,`sr()`函数读取输入的数字和运算符,`ys()`函数执行计算。程序支持加减乘除运算,遇到除以零的情况会输出错误信息。
摘要由CSDN通过智能技术生成