c语言编写四则运算Word文档下载推荐.docx
《c语言编写四则运算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言编写四则运算Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
{
printf("
overflow!
\n"
);
return;
}
top=s->
base;
stacksize=STACK_SIZE;
}
boolisEmpty(FStack*s)
if(s->
top==s->
returntrue;
else
returnfalse;
voidPush(FStack*s,floate)
top-s->
base>
=s->
stacksize)
stackisfull!
\nrealloc%d\n"
STACK_INCREMENT);
base=(float*)realloc(s->
base,(s->
stacksize+sizeof(FStack)));
{
}
base+s->
stacksize;
stacksize+=STACK_INCREMENT;
*(s->
top)=e;
(s->
top)++;
floatGetTop(FStack*s)
stackisempty!
return0;
floate=*(s->
top-1);
returne;
voidPop(FStack*s)
top--;
typedefstructCStack//stackofchar
char*base;
char*top;
}CStack;
voidInit(CStack*s)
base=(char*)malloc(STACK_SIZE*sizeof(CStack));
boolisEmpty(CStack*s)
voidPush(CStack*s,inte)
base=(char*)realloc(s->
stacksize+sizeof(CStack)));
charGetTop(CStack*s)
chare=*(s->
voidPop(CStack*s)
boolisOper(charch)
if(ch=='
+'
||ch=='
-'
*'
/'
%'
)
intPriority(charch)
intp;
switch(ch)
case'
('
:
p=0;
break;
p=1;
p=2;
returnp;
floatCalculate(floatf1,floatf2,charoper)
floatf3;
switch(oper)
f3=f1+f2;
f3=f1-f2;
f3=f1*f2;
f3=(float)((int)f1%(int)f2);
if(f2==0)
\nDevidedbyzero!
"
exit
(1);
f3=f1/f2;
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]!
if(str[i]!
str[i]!
)'
(str[i]<
'
||str[i]>
))
i++;
voidmain()
charexp[100];
inti;
floatf,f1,f2;
charoper;
FStackfstack;
CStackcstack;
Init(&
fstack);
cstack);
Theexpressionis:
gets(exp);
Check(exp))
inputerror!
exitnow!
for(i=0;
exp[i]!
=-52;
i++)
isOper(exp[i]))
f=StrtoFloat(exp,&
i);
Push(&
fstack,f);
if(isOper(exp[i]))
isEmpty(&
cstack))
{
while(!
cstack)&
Priority(exp[i])<
=Priority(GetTop(&
cstack)))
{
oper=GetTop(&
Pop(&
f2=GetTop(&
f1=GetTop(&
f=Calculate(f1,f2,oper);
}
cstack,exp[i]);
}
elseif(exp[i]=='
while(GetTop(&
cstack)!
!
\nTheresultis:
%f\n"
GetTop(&
fstack));