中缀表达式转后缀表达式(数组)
来源:互联网 发布:avmo.pw最新域名 编辑:程序博客网 时间:2024/06/05 10:13
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> char c1[101],c2[101],c3[101]; float a[101]; int main(){ int i,j,k,m,n; int top=0,v=-1,u=0; gets(c1); k=strlen(c1); for(i=0;i<k;i++){ switch(c1[i]){ case '(':c2[++top]=c1[i];break; case '+': case '-':while(top>0 && c2[top]!='('){ c3[++v]=c2[top]; c3[++v]=' '; top--; } c2[++top]=c1[i]; break; case '*': case '/':while(top>0 && c2[top]!='(' && c2[top]!='+' && c2[top]!='-'){ c3[++v]=c2[top]; c3[++v]=' '; top--; } c2[++top]=c1[i]; break; case ')':while(c2[top]!='('){ c3[++v]=c2[top]; c3[++v]=' '; top--; } top--; break; default: c3[++v]=c1[i]; if(c1[i+1]>'9' || c1[i+1]<'0') c3[++v]=' '; break; } } while(top>0 && c2[top]!='('){ c3[++v]=c2[top]; c3[++v]=' '; top--; } puts(c3); top=0; float sum; k=strlen(c3); for(i=0;i<k;i++){ if(c3[i]==' '); else if(c3[i]=='+'){sum=a[top-1]+a[top];a[--top]=sum;} else if(c3[i]=='-'){sum=a[top-1]-a[top];a[--top]=sum;} else if(c3[i]=='*'){sum=a[top-1]*a[top];a[--top]=sum;} else if(c3[i]=='/'){sum=a[top-1]/a[top];a[--top]=sum;} else{ int m=0; while(c3[i]>='0' && c3[i]<='9'){ m=10*m+c3[i]-'0'; i++; } a[++top]=m; } } printf("%.8f\n",a[top]); return 0; }
阅读全文
0 0
- 中缀表达式转后缀表达式(数组)
- 中缀表达式转后缀表达式 (中缀表达式的计算)
- 中缀转后缀表达式
- 表达式中缀转后缀
- 中缀转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 后缀表达式转中缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- 中缀表达式转后缀表达式
- U-boot 入门
- 深入理解javascript原型和闭包(7)——原型的灵活性
- 使用hadoopstreaming计算航空平均迟到时间
- 【PMP】知识点总结20170528
- idea使用心得
- 中缀表达式转后缀表达式(数组)
- 程序员跳槽神级攻略
- http乱码问题
- 边框(Border) 和 轮廓(Outline) 属性
- chrome插件简介
- json格式与javascript对象字面量和数组对象的区别
- Android studio 3.0 引起的 outputFile sync failed:not vaild
- kotlin和DataBinding一起使用踩坑日记
- G2.9 std_alloc