模拟后缀表达式求值的求值过程 还可用 关于它的基本运算有

郁闷的C小加(二)
时间限制:1000 ms &|& 内存限制:65535 KB
聪明的你帮助C小加解决了中缀表达式到后缀表达式的转换(详情请参考&郁闷的C小加(一)&),C小加很高兴。但C小加是个爱思考的人,他又想通过这种方法计算一个表达式的值。即先把表达式转换为后缀表达式,再求值。这时又要考虑操作数是小数和多位数的情况。
输入第一行输入一个整数T,共有T组测试数据(T&10)。每组测试数据只有一行,是一个长度不超过1000的字符串,表示这个运算式,每个运算式都是以&=&结束。这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数并且小于1000000。数据保证除数不会为0。输出对于每组测试数据输出结果包括两行,先输出转换后的后缀表达式,再输出计算结果,结果保留两位小数。两组测试数据之间用一个空行隔开。样例输入
(19+21)*3-4/5=
1 #include&stdio.h&
2 #include&string.h&
3 #include&stack&
4 #include&stdlib.h&
5 using namespace
7 char a[1010];
8 char b[1010];
9 stack &char& s1;
10 stack &float& s2;
12 int i,j,n,m,t;
13 float x,y,z;
15 int fun(char x)
case '+' :
case '-' :return 1;
case '*' :
case '/' :return 2;
case '(' :return 0;
:return -1;
28 float js(float x,float y,char z)
case '+':return y+x;
case '-':return y-x;
case '*':return y*x;
default :return y/x;
39 int main()
char c[1010];
scanf("%d",&t);
s1.push('#');
while(t--)
scanf("%s",a);
m=strlen(a)-1;
for(i=0;i&m;i++)
if(a[i]&='0'&&a[i]&='9'||a[i]=='.')
memset(c,0,sizeof(c));
while(a[i]&='0'&&a[i]&='9'||a[i]=='.')
b[j++]=a[i];
c[p++]=a[i++];
d=atof(c);
s2.push(d);
else if(a[i]=='(')
s1.push(a[i]);
else if(a[i]==')')
while(s1.top()!='(')
b[j++]=s1.top();
x=s2.top();s2.pop();
y=s2.top();s2.pop();
x=js(x,y,b[j-1]);
s2.push(x);
while(fun(s1.top())&=fun(a[i]))
b[j++]=s1.top();
x=s2.top();s2.pop();
y=s2.top();s2.pop();
x=js(x,y,b[j-1]);
s2.push(x);
s1.push(a[i]);
while(s1.top()!='#')
b[j++]=s1.top();
x=s2.top();s2.pop();
y=s2.top();s2.pop();
x=js(x,y,b[j-1]);
s2.push(x);
b[j+1]='\0';
printf("%.2f\n",s2.top());
阅读(...) 评论()扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
后缀表达式求值算法
傀儡僵尸000C3
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
1 后缀表达式的求值将中缀表达式转换成等价的后缀表达式后,求值时,不需要再考虑运算符的优先级,只需从左到右扫描一遍后缀表达式即可.具体求值步骤为:从左到右扫描后缀表 达式,遇到运算符就把表达式中该运算符前面两个操作数取出并运算,然后把结果带回后缀表达式;继续扫描直到后缀表达式最后一个表达式. 例如,后缀表达式(abc*+def*/-) 的求值2 后缀表达式的求值的算法设置一个栈,开始时,栈为空,然后从左到右扫描后缀表达式,若遇操作数,则进栈;若遇运算符,则从栈中退出两个元素,先退出的放到运算符的右边,后退出的 放到运算符左边,运算后的结果再进栈,直到后缀表达式扫描完毕.此时,栈中仅有一个元素,即为运算的结果.例,求后缀表达式:1 2 + 8 2 - 7 4 - / * 的值, 栈的变化情如下:
为您推荐:
其他类似问题
扫描下载二维码您的访问出错了(404错误)
很抱歉,您要访问的页面不存在。
1、请检查您输入的地址是否正确。
进行查找。
3、感谢您使用本站,3秒后自动跳转至网站首页百度文库-信息提示
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
对不起,该文档已被删除,无法查看
15秒后,自动返回首页后缀表达式,最全面的后缀表达式文章 - 电子工程世界网
后缀表达式
在电子工程世界为您找到如下关于“后缀表达式”的新闻
后缀表达式资料下载
运算符和算术表达式 45
3.9 赋值运算符和赋值表达式 47
33.10 逗号运算符和逗号表达式 48
3.11 小结 49
3.11.1 C的数据类型 49
3.11.2 基本类型的分类及特点 49
3.11.3 常量后缀 49
3.11.4 常量类型 49
3.11.5 数据类型转换 49
3.11.6 运算符优先级和结合性 50...
将中缀表达式转换成后缀表达式后,并计算结果...
本程序是一个完整的后缀表达式计算,主要用栈的操作实现,本程序封装了CStack类实现栈的操作,本程序最大的特色在于运用动态监视表达式的算法对表达式进行数据校验,对一切合法的表达式进行计算,检验出所有任何非法表达式并提示。...
把算术表达式转换成后缀表达式然后求值。数据结构实验,包含实验报告。...
简单的后缀表达式求值...
中缀表达式转换为后缀表达式并求值使用switch语句...
a.6.7 void 175
a.6.8 指向void的指针 175
a.7 表达式 175
a.7.1 指针生成 176
a.7.2 初等表达式 176
a.7.3 后缀表达式 177
a.7.4 一元运算符 179
a.7.5 强制类型转换 180
a.7.6 乘法类运算符 180
a.7.7 加法类运算符 181
a.7.8 移位...
把中缀表达式转换为后缀表达后,求表达式的结果。用到栈和队列...
3.10 逗号运算符和逗号表达式 48
3.11 小结 49
3.11.1 C的数据类型 49
3.11.2 基本类型的分类及特点 49
3.11.3 常量后缀 49
3.11.4 常量类型 49
3.11.5 数据类型转换 49
3.11.6 运算符优先级和结合性 50
4 最简单的C程序设计—顺序程序设计...
3.10 逗号运算符和逗号表达式 48
3.11 小结 49
3.11.1 C的数据类型 49
3.11.2 基本类型的分类及特点 49
3.11.3 常量后缀 49
3.11.4 常量类型 49
3.11.5 数据类型转换 49
3.11.6 运算符优先级和结合性 50
4 最简单的C程序设计—顺序...
后缀表达式相关帖子
序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误。b.后续的部分就是主程序,Shell脚本像高级语言一样,也有变量赋值,也有控制语句。除第 一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上&,这个符号表明下一行与此行会合并为同一行。c.编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。执行脚本的时候,要先将...
“化身”。
4.8.1斐波那契数列实现 101
4.8.2递归定义 103
4.9栈的应用——四则运算表达式求值 104
4.9.1后缀(逆波兰)表示法定义 104
4.9.2后缀表达式计算结果 106
4.9.3中缀表达式转后缀表达式 108
4.10队列的定义 111
电脑有时会处于疑似死机的状态。就当你失去耐心,打算了reset时。突然它像酒醒了一样,把你刚才点击的所有操作全部都...
2.3.1 后缀表示
2.3.2 综合属性
2.3.3 简单语法制导定义
2.3.4 树的遍历
2.3.5 翻译方案
2.3.6 2.3节的练习
2.4 语法分析
2.4.1 自顶向下分析方法
2.4.2 预测分析法
2.4.3 何时使用产生式
2.4.4 设计一个预测分析器
2.4.5 左递归
2.4.6 2.4节的练习
2.5 简单表达式的翻译器
2.5.1 抽象语法和...
   3.9 赋值运算符和赋值表达式 47
   3.10 逗号运算符和逗号表达式 48
   3.11 小结 49
   3.11.1 C的数据类型 49
   3.11.2 基本类型的分类及特点 49
   3.11.3 常量后缀 49
   3.11.4 常量类型 49
   3.11.5 数据类型转换 49
   3.11.6 运算符优先级和结合性...
;ARM汇编指令中的后缀&&2.1.3&&ARM汇编指令的书写格式 2.2&&ARM指令集的基本概念&&2.2.1&&ARM指令的基本格式&&2.2.2&&ARM指令中的条件执行&&2.2.3&&ARM指令中的S标志...
; && & do_something_
也不要在一行里放多个赋值语句。内核编码风格超级简单。就是请避免使用怪异的表达式。除了注释、文档和Kconfig之外,不要使用空格来缩进,前面的例子是例外,是有意为之。
选用一个好的编辑器,不要在行尾留空格。
& && && &&nbsp...
“.s”两种后缀,在以“.s”为后缀的汇编文件中,程序完全是由纯粹的汇编代码编写。所谓的纯粹是相对以“.S”为后缀的汇编文件而言的,由于现代汇编工具引入了预处理的概念,允许在汇编代码(.S)中使用预处理命令。预处理命令以符号“#”开头,包括宏定义、文件包含和条件编译。在U-Boot和Linux内核源码中,这种编程方式运用非常广泛程序清单1. 2&&main.c文件内容...
同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示&相等则跳转&,即当CPSR中的Z标志置位时发生跳转。
& & 在16种条件标志码中,只有15种可以使用,如表3-2所示,第16种(1111)为系统保留,暂时不能使用。
& & 表3-2 指令的条件码
& & 条件码 助记符后缀 标 志 含 义
; && && &&&-e s/macppc/ppc/)& && & “sed –e”表示后面跟的是一串命令脚本,而表达式“s/abc/def/”表示要从标准输入中,查找到内容为“abc”的,然后替换成“def”。其中“abc”表达式用可以使用“.”作为通配符。& &nbsp...
。模式中一般需要包含模式字符“%”。存在多个模式时,模式表达式之间使用空格分割。
返&&回 值:空格分割的“TEXT”字串中所有符合模式“PATTERN”的字串。
函数说明:“filter”函数可以用来去除一个变量中的某些字符串,我们下边的例子中就是用到了此函数。
6.$(filter-out PATTERN...,TEXT)
函数名称:反过滤函数—filter-out...
后缀表达式视频
你可能感兴趣的标签
热门资源推荐}

我要回帖

更多关于 中缀转后缀表达式求值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信