




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言编写四则运算#include /计算器#include #define STACK_SIZE100/max size of the stack#define STACK_INCREMENT10/realloc sizetypedef struct FStack /stack of intfloat* base;float* top;int stacksize;FStack;void Init(FStack* s)s-base = (float*)malloc(STACK_SIZE * sizeof(FStack);if (!s-base)printf(overflow!n);return;s-top = s-base;s-stacksize = STACK_SIZE;bool isEmpty(FStack* s)if (s-top = s-base)return true;elsereturn false;void Push(FStack* s, float e)if (s-top - s-base = s-stacksize)printf(stack is full!nrealloc %dn, STACK_INCREMENT);s-base = (float*)realloc(s-base, (s-stacksize + sizeof(FStack);if (!s-base)printf(overflow!n);return;s-top = s-base + s-stacksize;s-stacksize += STACK_INCREMENT;*(s-top) = e;(s-top)+;float GetTop(FStack* s)if (s-top = s-base)printf(stack is empty!n);return 0;float e = *(s-top - 1);return e;void Pop(FStack* s)if (s-top = s-base)printf(stack is empty!n);return;s-top-;typedef struct CStack /stack of charchar* base;char* top;int stacksize;CStack;void Init(CStack* s)s-base = (char*)malloc(STACK_SIZE * sizeof(CStack);if (!s-base)printf(overflow!n);return;s-top = s-base;s-stacksize = STACK_SIZE;bool isEmpty(CStack* s)if (s-top = s-base)return true;elsereturn false;void Push(CStack* s, int e)if (s-top - s-base = s-stacksize)printf(stack is full!nrealloc %dn, STACK_INCREMENT);s-base = (char*)realloc(s-base, (s-stacksize + sizeof(CStack);if (!s-base)printf(overflow!n);return;s-top = s-base + s-stacksize;s-stacksize += STACK_INCREMENT;*(s-top) = e;(s-top)+;char GetTop(CStack* s)if (s-top = s-base)printf(stack is empty!n);return 0;char e = *(s-top - 1);return e;void Pop(CStack* s)if (s-top = s-base)printf(stack is empty!n);return;s-top-;bool isOper(char ch)if (ch = + | ch = - | ch = * | ch = / | ch = %)return true;elsereturn false;int Priority(char ch)int p;switch(ch)case (:p = 0;break;case +:case -:p = 1;break;case *:case /:case %:p = 2;break;return p;float Calculate(float f1, float f2, char oper)float f3;switch(oper)case +:f3 = f1 + f2;break;case -:f3 = f1 - f2;break;case *:f3 = f1 * f2;break;case %:f3 = (float)(int)f1 % (int)f2);break;case /:if (f2 = 0)printf(nDevided by zero!);exit(1);elsef3 = f1 / f2;break;return f3;float StrtoFloat(char* str, int* pos)float fRes;int i = *pos;int k;char n50;for (k = 0; stri = 0 & stri = 9 | stri = .; i+, k+)nk = stri;nk = 0;*pos = i;fRes = atof(n);return fRes;bool Check(char* str)int i = 0;while (stri != 0)if (stri != + & stri != - & stri != * & stri != / & stri != % & stri != . & stri != ( & stri != ) & (stri 9)return false;i+;return true;void main()char exp100;int i;float f, f1, f2;char oper;FStack fstack;CStack cstack;Init(&fstack);Init(&cstack);printf(The expression is:);gets(exp);if (!Check(exp)printf(input error! exit now!n);exit(1);for (i = 0; expi != 0 & expi != -52; i+)if (!isOper(expi)f = StrtoFloat(exp, &i);Push(&fstack, f);if (isOper(expi)if (!isEmpty(&cstack)while (!isEmpty(&cstack) & Priority(expi) = Priority(GetTop(&cstack)oper = GetTop(&cstack);Pop(&cstack);f2 = GetTop(&fstack);Pop(&fstack);f1 = GetTop(&fstack);Pop(&fstack);f = Calculate(f1, f2, oper);Push(&fstack, f);Push(&cstack, expi);elsePush(&cstack, expi);else if (expi = ()Push(&cstack, expi);else if (expi = )while (GetTop(&cstack) != ( & !isEmpty(&cstack)oper = GetTop(&cstack);Pop(&cstack);f2 = GetTop(&fstack);Pop(&fstack);f1 = GetTop(&fstack);Pop(&fstack);f = Calculate(f1, f2, oper);Push(&fstack, f);Pop(&cstack);while (!isEmpty(&cstack)oper = GetTop(&cstack);Po
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧温室创新创业项目商业计划书
- 林业法律咨询服务创新创业项目商业计划书
- 产品不合格处理流程及记录单模板
- 制造业员工岗位技能培育计划
- 2025-2030青年公寓宠物友好型产品设计与管理规范研究
- 2025-2030隐私计算技术商业化路径与投资价值分析
- 2025-2030长租公寓暴雷事件后行业监管政策调整预测报告
- 2025-2030钠离子电池产业链成熟度评估与两轮电动车市场替代窗口期预测
- 2025-2030都市青年居住需求演变与公寓产品升级路径专题研究
- 2025-2030费托蜡行业市场进入壁垒与竞争策略研究
- 门诊护理质量持续改进方案
- 养殖险的理赔培训课件
- DB51T 3149-2023 四川省电力用户受电设施及配电设施运维检修服务管理规范
- 临床前药代动力学指导原则
- 生物大分子的分离纯化和鉴定
- 轮胎拆装机的安全操作规程
- 社保退休的调档函格式
- prs7910数据网关机技术使用说明书
- GB/T 3810.4-2016陶瓷砖试验方法第4部分:断裂模数和破坏强度的测定
- 手术室进修护士结业理论考试题附答案
- 组织行为学MBA全套课件
评论
0/150
提交评论