c语言之逆波兰表达式完整代码(附算法)

c语言之逆波兰表达式完整代码(附算法)

ID:6735869

大小:58.50 KB

页数:11页

时间:2018-01-24

c语言之逆波兰表达式完整代码(附算法)_第1页
c语言之逆波兰表达式完整代码(附算法)_第2页
c语言之逆波兰表达式完整代码(附算法)_第3页
c语言之逆波兰表达式完整代码(附算法)_第4页
c语言之逆波兰表达式完整代码(附算法)_第5页
资源描述:

《c语言之逆波兰表达式完整代码(附算法)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言课程设计之逆波兰表达式//逆波兰表达式(后缀表达式)reversepolishnotation//程序实现的功能是将中缀表达式转变为后缀表达式,再求出其值//主要运用的知识点有:isdigit函数,pow函数,system("cls")函数,堆栈,格式的强制转换#include#include#include#includevoidshift(charnotation[]);//中缀表达式转换为后缀表达式的转换函数floatcalculate(floata[][2],intk);//计算后缀表达式intj

2、udge(charnotation[]);//判断输入的中缀表达式是否符合要求intgrade(chara);//返回运算符的等级voiddisplay(floata[][2],intk);//在屏幕上显示后缀表达式//主函数voidmain(){charnotation[100];charchoice;do{printf("请输入正确的中缀表达式:");printf("例如:2*3+4/3-(2+1)");scanf("%s",¬ation);if(judge(notation)){shift(notation);}elseprintf("你的表达式有错误,请仔细检

3、查!");fflush(stdin);printf("你是否需要继续计算(是输入Y/y,否输入其他任意键)");scanf("%c",&choice);getchar();system("cls");}while(choice=='Y'

4、

5、choice=='y');printf("程序结束,谢谢使用!");}//判定函数intjudge(charnotation[]){inti,m,num=1,p1=0,p2=0;for(i=0;notation[i]!='';i++)//排除表达式外的字符{if(notation[i]!='('&¬ation[i]!

6、=')'&¬ation[i]!='+'&¬ation[i]!='-'&¬ation[i]!='*'&¬ation[i]!='/'&&!isdigit(notation[i])&¬ation[i]!='.'){num=0;returnnum;}}if(notation[0]=='*'

7、

8、notation[0]=='/'

9、

10、notation[0]==')'

11、

12、notation[0]=='.')//排除第一个字符为*,/,),.{num=0;returnnum;}for(i=0;notation[i]!='';i++)//排除'+','-','*','/

13、','.'之间的连续出现以及'+','-','*','/','.'后面直接加')'{if(notation[i]!='('&¬ation[i]!=')'&&!isdigit(notation[i])){if(notation[i+1]!='('&&!isdigit(notation[i+1])){num=0;returnnum;}}if(notation[i]=='('&&(notation[i+1]==')'

14、

15、notation[i+1]=='.'

16、

17、notation[i+1]=='*'

18、

19、notation[i+1]=='/')){//排除'('和')','.','*','

20、/'一起连用num=0;returnnum;}if(notation[i]==')'&&(notation[i+1]=='('

21、

22、notation[i+1]=='.'))//排除')'和'(','.'一起连用{num=0;returnnum;}}for(i=0;notation[i]!='';i++)//小数位不得超过4位{if(notation[i]=='.'&¬ation[i+1]!=''&¬ation[i+2]!=''&¬ation[i+3]!=''&¬ation[i+4]!=''&¬ation[i+5]!=''){if(

23、isdigit(notation[i+1])&&isdigit(notation[i+2])&&isdigit(notation[i+3])&&isdigit(notation[i+4])&&isdigit(notation[i+5])){num=0;returnnum;}}}for(i=0;notation[i]!='';i++)//排除一个小数中有两个小数点的情况{if(notation[i]=='.'){i++;while(isdigit(notation[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。