版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言编写四则运算#include<stdio.h>//计算器#include<malloc.h>#defineSTACK_SIZEﻩﻩ100ﻩ//maxsizeofthestack#defineSTACK_INCREMENTﻩ10ﻩ//reallocsizetypedefstructFStack//stackofint{ﻩfloat*base;ﻩfloat*top;ﻩintstacksize;}FStack;voidInit(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;}boolisEmpty(FStack*s){ﻩif(s->top==s->base)ﻩ{ﻩﻩreturntrue;ﻩ}ﻩelseﻩ{ﻩﻩreturnfalse;ﻩ}}voidPush(FStack*s,floate){ﻩif(s->top-s->base>=s->stacksize)ﻩ{ printf("stackisfull!\nrealloc%d\n",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)++;}floatGetTop(FStack*s){ if(s->top==s->base) { ﻩprintf("stackisempty!\n");ﻩ return0;ﻩ} floate=*(s->top-1);ﻩreturne;}voidPop(FStack*s){ﻩif(s->top==s->base)ﻩ{ printf("stackisempty!\n");ﻩ return;ﻩ} s->top--;}typedefstructCStack//stackofchar{ﻩchar*base; char*top; intstacksize;}CStack;voidInit(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;}boolisEmpty(CStack*s){ﻩif(s->top==s->base) {ﻩﻩreturntrue;ﻩ}ﻩelseﻩ{ﻩﻩreturnfalse; }}voidPush(CStack*s,inte){ if(s->top-s->base>=s->stacksize)ﻩ{ﻩﻩprintf("stackisfull!\nrealloc%d\n",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)++;}charGetTop(CStack*s){ if(s->top==s->base)ﻩ{ﻩﻩprintf("stackisempty!\n");ﻩﻩreturn0; }ﻩchare=*(s->top-1);ﻩreturne;}voidPop(CStack*s){ﻩif(s->top==s->base)ﻩ{ﻩ printf("stackisempty!\n"); ﻩreturn;ﻩ}ﻩs->top--;}boolisOper(charch){ﻩif(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='%')ﻩ{ﻩﻩreturntrue;ﻩ}ﻩelseﻩ{ﻩﻩreturnfalse;ﻩ}}intPriority(charch){ﻩintp;ﻩswitch(ch) {ﻩcase'(':ﻩﻩp=0; ﻩbreak; case'+':ﻩcase'-':ﻩ p=1;ﻩﻩbreak;ﻩcase'*':ﻩcase'/':ﻩcase'%':ﻩﻩp=2;ﻩﻩbreak;ﻩ} returnp;}floatCalculate(floatf1,floatf2,charoper){ﻩfloatf3;ﻩ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("\nDevidedbyzero!"); ﻩﻩexit(1); ﻩ} ﻩelseﻩﻩ{ ﻩﻩf3=f1/f2;ﻩ } ﻩbreak;ﻩ}ﻩreturnf3;}floatStrtoFloat(char*str,int*pos){ﻩfloatfRes;ﻩinti=*pos;ﻩintk;ﻩcharn[50];ﻩfor(k=0;str[i]>='0'&&str[i]<='9'||str[i]=='.';i++,k++)ﻩ{ﻩﻩn[k]=str[i];ﻩ}ﻩn[k]='\0';ﻩ*pos=i;ﻩfRes=atof(n);ﻩreturnfRes;}boolCheck(char*str){ inti=0;ﻩwhile(str[i]!='\0')ﻩ{ ﻩif(str[i]!='+'&&str[i]!='-'&&str[i]!='*'&&str[i]!='/'&&str[i]!='%'&&str[i]!='.'&&str[i]!='('&&str[i]!=')'&&(str[i]<'0'||str[i]>'9')) ﻩ{ ﻩﻩreturnfalse; ﻩ}ﻩﻩi++;ﻩ} returntrue;}voidmain(){ charexp[100];ﻩinti;ﻩfloatf,f1,f2; charoper;ﻩFStackfstack;ﻩCStackcstack;ﻩInit(&fstack);ﻩInit(&cstack);ﻩprintf("Theexpressionis:");ﻩgets(exp);ﻩif(!Check(exp))ﻩ{ﻩﻩprintf("inputerror!exitnow!\n");ﻩﻩexit(1); }ﻩfor(i=0;exp[i]!='\0'&&exp[i]!=-52;i++)ﻩ{ﻩﻩif(!isOper(exp[i]))ﻩﻩ{ﻩﻩﻩf=StrtoFloat(exp,&i);ﻩ ﻩPush(&fstack,f);ﻩﻩ}ﻩﻩif(isOper(exp[i]))ﻩﻩ{ ﻩﻩif(!isEmpty(&cstack))ﻩﻩﻩ{ﻩ ﻩﻩwhile(!isEmpty(&cstack)&&Priority(exp[i])<=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,exp[i]);ﻩﻩﻩ} ﻩelseﻩ {ﻩﻩ ﻩPush(&cstack,exp[i]);ﻩﻩﻩ} ﻩ}ﻩ elseif(exp[i]=='(') ﻩ{ﻩﻩﻩPush(&cstack,exp[i]);ﻩ } ﻩelseif(exp[i]==')') {ﻩﻩﻩ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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西中江国际工程有限公司社会招聘4人备考题库及1套参考答案详解
- 2026广东东莞农商银行金融科技专家人才招聘备考题库及答案详解(必刷)
- 2026党规考试题及答案
- 2026浙江台州市中医院招聘高层次卫技人员9人备考题库附答案详解(完整版)
- 2026贵州医科大学招聘专职辅导员(非事业编制)10人备考题库有完整答案详解
- 2026湖北省新能源有限公司社会招聘1人备考题库附答案详解(达标题)
- 2026中国地质调查局发展研究中心招聘劳务派遣人员5人备考题库及答案详解(有一套)
- 2026年度国家税务总局部分直属事业单位公开招聘备考题库带答案详解
- 2026湖南兵器轻武器研究所有限责任公司招聘24人备考题库附答案详解(培优)
- 2026北京大学教育学院博士后研究人员招聘1人备考题库及1套完整答案详解
- 2026年中职烹饪专业教师招聘笔试试题及答案解析
- ISO14001-2026与ISO14001-2015版核心差异解析及应对
- 2026广东广州南方投资集团有限公司社会招聘49人备考题库及答案详解(真题汇编)
- 2026年湖北省黄冈市八年级地理生物会考真题试卷(+答案)
- 2026年部编版新教材语文一年级下册第四单元检测题(有答案)
- 江西省省宜春市袁州区重点名校2026届中考数学模拟预测题含解析
- 2026年继续教育公需课思想政治与政策理论通关试题库审定版附答案详解
- 廉洁风险防范培训
- 汽车喷漆房安全生产制度
- 2025年盘锦事业单位真题
- 校车驾驶员培训课件
评论
0/150
提交评论