算术表达式值演.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算术表达式求值演示.cpp #includestdio.h #includestdlib.h #includestring.h #includemath.h #includeconio.h #includecharstack.h #includefloatstack.h char OPSET[10]={+,-,*,/,(,),#,^,~,=};//运算符 char Prior[10][10]={{,,,,,,,,,}, {,,,,,,,,,}, {,,,,,,,,,}, {,,,,,,,,,}, {,,,,,=, ,,,}, {,,,, ,,,,,}, {,,,,, ,=,,,}, {,,,,,,,,,}, {,,,,,,,,,}, {,,,,,,,,,}};//优先关系 StackChar OPTR;//运算符栈 StackFloat OPND;//运算数栈 void print() { printf(\n****************************************************************************\n); printf(\n步骤 \tOPTR栈 \tOPND栈 \t\t输入字符 主要操作\n\n); } //运算 float Operate(float a, char theta, float b) { float d=1; switch( theta ) { case +: return(a+b); case -: return(a-b); case *: return(a*b); case /: { if(b==0) { printf(\nERROR!\n); return 0; } return(a/b); } case ^: while(b--) d=d*a; return(d); case ~: return(0-b); default : return(0); } } //判断输入字符是否是运算符 int In (char Test, char* TestOp) { for(int i=0; i10; i++) if(Test == TestOp[i]) return(1); return(0); } //比较运算符之间的关系 char Precede(char a, char b) { int i, j; for(i=0; i9; i++) if(a==OPSET[i]) break; for(j=0; j9; j++) if(b==OPSET[j]) break; return(Prior[i][j]); } //输出OPTR栈内数据 void printOPTR(StackChar OPTR) { StackChar TOPTR; InitStack(TOPTR); char p; int n=5; while(Pop(OPTR,p)) { n--; printf(%3c ,p); Push(TOPTR,p); } while(0n--) printf( ); while(Pop(OPTR,p)) { Push(TOPTR,p); } } //输出OPND栈内数据 void printOPND(StackFloat OPND) { StackFloat TOPND; InitStack(TOPND); float q; int n=4; while(Pop(OPND,q)) { n--; printf(%2.2f ,q); Push(TOPND,q); } while(0n--) printf( ); while(Pop(TOPND,q)) { Push(OPND,q); } } //输入运算数字时的操作显示 void printNDoperate(float c) { printf(\t%2.2f,c); printf(\t Push(OPND,%2.2f),c); }

文档评论(0)

mv2323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档