版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【2025考研】全国统考数学三历年真题(高清电子版)
- 2024考研数学二期末试卷|高频考点
- 军训实训考试题及答案
- 悬吊操作考试题及答案
- 2026年高职美容美发(美发进阶技术)试题及答案
- 燃气锅考试题及答案
- 重力坝考试题及答案
- 护士结核考试题及答案
- 沧州市肃宁县2027届数学三年级第一学期期末教学质量检测模拟试题含解析
- 江苏省无锡市江阴市2026年七上数学期末达标测试试题含解析
- 2026届中国移动校园招聘笔试真题(含详细答案解析)
- 赣州文化传媒集团有限责任公司2026年公开招聘劳务派遣制工作人员【28人】笔试参考题库及答案详解
- 肥料配方师安全生产规范水平考核试卷含答案
- 电商运营合作协议书范本
- 广东省深圳市2025年中考语文试卷试题真题(含答案详解)
- 2026年医院信息科笔试备考试题库及答案
- 《热爱班集体》分层作业及答案-2026-2027学年统编版(新教材)小学道德与法治四年级上册
- 消化疾病质子泵抑制剂应用中国专家共识(2026 版)
- 学校护学岗工作职责及工作制度
- 镇寺庙办公室工作制度
- 地面方块地毯铺设工程施工方案及工艺方法
评论
0/150
提交评论