微信公开课
微信公开课小程序热门讨论「编程设计一个简单的计算器程序」最新回复-这种运算比较麻烦,不过4种运算符号优先级相同应该简单写,我这里有个算法,能进行简单的四则运算,delphi的,供参考FunctionMath_Evaluate(S0:string):Extended;FunctionEvaluate(S0:String):Extended;Forward;ProcedureCleanUp(vars0:string);VarI:integer;BeginS0:=LowerCase(s0);I:=Pos(,s0);WhileI0DoBeginDelete(S0,I,1);I:=Pos(,S0);End;End;FunctionGetFirstOpp(Tot:Integer;S0:String):Integer;ConstSopps:String=(+*/^);VarI:Integer;BeginIfTot=0ThenTot:=Length(S0);ForI:=1To5DoBeginResult:=Pos(Sopps[i],S0);If((I3)And(Result0))ThenIf((Result=1)Or(Pos(S0[Result1],Sopps)0))ThenResult:=0;IfResult0ThenIfResultTotThenExit;End;IfResultTotThenResult:=0;End;FunctionSpecialF(P1:Integer;S0:String):Extended;VarOperstr:String;Arg:Extended;BeginResult:=0;Operstr:=Copy(S0,1,P11);IfS0[Length(S0)])ThenExit;Operstr:=LowerCase(Operstr);Arg:=Evaluate(Copy(S0,P1+1,Length(S0)P11));ifOperstr=sinThenResult:=Sin(Arg)ElseifOperstr=cosThenResult:=Cos(Arg)ElseifOperstr=tanThenResult:=Sin(Arg)/Cos(Arg)ElseifOperstr=arctanThenResult:=Arctan(Arg)ElseifOperstr=logThenResult:=Ln(Arg)/Ln(10)ElseifOperstr=lnThenResult:=Ln(Arg)ElseifOperstr=expThenResult:=Exp(Arg)ElseifOperstr=sqrtThenResult:=Sqrt(Arg){enteradditionalfunctionshere}ElseExit;End;FunctionGetValue(S0:String):Extended;BeginResult:=0;IfLength(S0)1ThenExit;IfLength(S0)=1ThenResult:=StrToFloat(S0)ElseCases0[1]Ofx:Result:=1;y:Result:=1;z:Result:=1;ElseResult:=StrToFloat(S0);End;End;ProcedureMatchBracket(VarI:Integer;S0:String);VarJ,Len:Integer;BeginJ:=1;Len:=Length(S0);RepeatInc(I);IfILenThenExit;IfS0[I]=(ThenInc(J);IfS0[I]=)ThenDec(J);IfJ0ThenExit;UntilJ=0;End;FunctionCalculate(P1:Integer;S0:String):Extended;VarV1,V2:Extended;BeginResult:=0;V1:=Evaluate(Copy(S0,1,P11));V2:=Evaluate(Copy(S0,P1+1,Length(s0)P1));CaseS0[P1]Of+:Result:=V1+V2;:Result:=V1V2;/:Result:=V1/V2;*:Result:=V1*V2;^:Result:=Exp(V2*Ln(V1));ElseExit;End;End;FunctionEvaluate(S0:string):Extended;VarP1,P2,Q1:Integer;BeginP1:=Pos((,S0);P2:=P1;IfP20ThenMatchBracket(P2,S0);IfP1=1ThenBeginIfP2=Length(S0)ThenBeginDelete(S0,P2,1);Delete(S0,1,1);Result:=Evaluate(S0);EndElseResult:=Calculate(P2+1,S0);Exit;End;Q1:=GetFirstOpp(P1,S0);If(P1+Q1=0)ThenBeginResult:=GetValue(S0);Exit;End;IfQ10ThenResult:=Calculate(Q1,S0)ElseIfLength(S0)P2ThenResult:=Calculate(P2+1,S0)ElseResult:=SpecialF(P1,S0);End;BeginTryCleanUp(S0);Result:=Evaluate(S0);ExceptResult:=0;End;End;
#includestdio.hintmain(void){intdata1,data2;charop;printf(Pleaseinputdata1opdata2:);scanf(%d%c%d,&data1,&op,&data2);//注意输入时操作数与运算符之间要用空格隔开。switch(op){case+: printf(n%d+%d=%d,data1,data2,data1+data2); break;case-: printf(n%d-%d=%d,data1,data2,data1-data2); break;case*: printf(n%d*%d=%d,data1,data2,data1*data2);case/: if(data2==0) printf(Error!chushuwei0); else printf(n%d/%d=%d,data1,data2,data1/data2); break;case%: if(data2==0) printf(Error!chushuwei0); else printf(n%d%%%d=%d,data1,data2,data1%data2); break;}return0;}本回答被提问者采纳 更多有关「编程设计一个简单的计算器程序」的疑问请扫码关注微信公开课+小程序!了解更多