C语言栈实现逆波兰计算器
来源:互联网 发布:网络大电影监禁风暴 编辑:程序博客网 时间:2024/06/11 18:39
逆波兰计算器:
输入所要计算的表达式的逆波兰式,并进行计算。
如 (1-2)*(4+5)
其逆波兰式:1 2 - 4 5 + *
基础的东西,还是要多敲
如下代码中,输入的格式如:1 2 - 4 5 + * #
#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define Stack_Init_Size 20#define Stack_Increasement 10#define Max_Buffer_Size 10typedef double Elemtype;typedef struct { Elemtype *base; Elemtype *top; int stackSize;}sqStack;void initStack(sqStack *s){ s->base=(Elemtype *)malloc(Stack_Init_Size*sizeof(Elemtype)); if(!s->base) { exit(0); } s->top=s->base; s->stackSize=Stack_Init_Size;}void push(sqStack *s,Elemtype e){ if(s->top - s->base>=s->stackSize){ s->base=(Elemtype *)realloc(s->base,(s->stackSize+Stack_Increasement)*sizeof(Elemtype)); if(!s->base) exit(0); } *(s->top)=e; s->top++;}void pop(sqStack *s,Elemtype *e){ if(s->top==s->base) exit(0); s->top--; *e=*(s->top);}int stackLen(sqStack s){ return (s.top - s.base);}int isEmpty(sqStack s){ return (s.top==s.base);}int main(){ sqStack s; initStack(&s); char c; double d,e; char buffer[Max_Buffer_Size]; int i=0; printf("请输入所要计算表达式的逆波兰表达式,数字(包括小数)之间用空格分开,以#表示结束!\n"); scanf("%c",&c); while(c!='#'){ while(isdigit(c)||c=='.'){ buffer[i++]=c; buffer[i]='\0'; if(i>=10){ printf("\n出错!超过最大缓冲区大小!\n"); return -1; } scanf("%c",&c); if(c==' '){ d=atof(buffer); push(&s,d); i=0; break; } } switch(c){ case '+': pop(&s,&d); pop(&s,&e); push(&s,d+e); break; case '-': pop(&s,&d); pop(&s,&e); push(&s,e-d); break; case '*': pop(&s,&d); pop(&s,&e); push(&s,d*e); break; case '/': pop(&s,&d); pop(&s,&e); if(e!=0){ push(&s,e/d); } else{ printf("\n出错,分母不能为0!"); return -1; } break; } scanf("%c",&c); } pop(&s,&d); printf("\n最终结果为:%f\n",d); return 0;}
0 0
- C语言栈实现逆波兰计算器
- 逆波兰 计算器 C语言实现代码
- 逆波兰 计算器 C语言实现
- c用栈实现逆波兰计算器
- C语言实现的简单的逆波兰计算器
- 表达式计算器(逆波兰法)栈操作(C语言实现)
- 逆波兰计算器(C语言)
- 逆波兰计算器(C语言)
- 逆波兰实现计算器
- c 语言 逆波兰计算器 C语言程序设计中的例子
- c语言 逆波兰式输入 计算器程序
- java 实现逆波兰计算器
- 逆波兰计算器的实现
- 逆波兰表达式C语言实现
- C语言实现逆波兰表达式
- 栈之逆波兰计算器
- 栈_逆波兰表达式_计算器实现_Golang版本
- 实现逆波兰表达式的java计算器
- POJ 2436 Disease Management
- 第二周项目2-程序的多文件组织
- PM九步法
- TCP的流量控制和拥塞控制 (小结)
- Windows下编译Caffe并编译Matlab接口
- C语言栈实现逆波兰计算器
- 子串变位词
- Codeforces 482C Game with strings
- 咨询词汇
- 脚本乐园 linux shell 数组建立及使用技巧
- linux下mysql的常用操作
- hdu 3853 LOOPS
- 面试题 17
- web性能优化