版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.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);retur
2、n;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-bas
3、e)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-;typed
4、ef 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 Pu
5、sh(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(C
6、Stack* 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(
7、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)pri
8、ntf(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
9、 != + & 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(in
10、put 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(&fsta
11、ck);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);Pop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江金华社发人力资源发展有限公司招聘1人备考题库及答案详解(考点梳理)
- 2026福建南平武夷旅游集团幼儿园自主招聘6人备考题库含答案详解(预热题)
- 2026广西贺州第五高级中学招聘财务干事1人备考题库有完整答案详解
- 2026陕西省汉中市汽车运输集团有限公司汉台区分公司就业见习招聘5人备考题库附答案详解(预热题)
- 2026陕西咸阳市高新一中学校教师招聘备考题库含答案详解(黄金题型)
- 2026四川宜宾屏山县事业单位上半年考核招聘工作人员12人备考题库附答案详解(达标题)
- 2026湖南省博物馆招聘备考题库附答案详解(达标题)
- 2026新疆双河市新盛建设工程检测试验有限责任公司招聘3人备考题库含答案详解
- 2026湖南娄底市娄星区招聘高中教师20人备考题库及答案详解(全优)
- 2026广西工商职业技术学院选调6人备考题库及答案详解(考点梳理)
- DB31/T 875-2015人身损害受伤人员休息期、营养期、护理期评定准则
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南
- 镇级国土空间总体规划编制技术指南(试行)
- 项目部组织架构及岗位职责
- FZT 61001-2019 纯毛、毛混纺毛毯
- (高清版)JTGT 3383-01-2020 公路通信及电力管道设计规范
- 智能船舶与海洋工程智慧船舶技术创新与应用探索
- 《如何上好自习》课件
- 《供应链管理》期末考试复习题库(含答案)
- 软件正版化工作信息统计表样表
- 4-肠结核及结核性腹膜炎
评论
0/150
提交评论