找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 1078|回复: 1

ACSL知识点——前后缀表达式

[复制链接]

6

主题

5

回帖

87

积分

超级版主

积分
87
发表于 2-14-2025 23:40:34 | 显示全部楼层 |阅读模式
第二轮前一天晚上写的,难免疏漏,敬请谅解。本文中除非特殊说明,否则每个数字为单独的数。



0.基本概念
要想了解前后缀表达式是什么,首先我们要观察以下日常中的表达式:
例:1+2*3+8/4
其中2*3中的"*"(即乘号)是放在两个用于计算的数字中间的,故这种表达式称作中缀表达式。

以此类推,前缀表达式就是将运算符号(+,-,*,÷)放在两个用于计算的数前面
例如: +1*23
这就是1+2*3的前缀形式。

同理,后缀表达式就是将运算符号(+,-,*,÷)放在两个用于计算的数后面
例如: 123*+
这就是1+2*3的后缀形式。


1.转化与运算

首先是转化,从中缀表达式(即“正常“的式子)转到其他表达式相对简单,按照运算顺序依次将运算符放到应该在的位置。
没看懂?看个例子就直到了,将式子转化为前缀
原式(中缀):1+2*3+4/5
step1:1+*23+/45
由于乘除法先运算,并且需要转化至前缀,所以将运算符号放在前面(eg:2*3->*23)
step2:+1(*23)+(/45)
现在只剩下加法,从左往右运算,这里我们将已经转化好的小式子看作整体(打了括号),所以要运算1+(2*3),把加号放在前面
step3:+(+1*23)/45
基本同理,把另一个还没转化的+号放在了前面,此时括号内可以视作一个用于计算的数
去掉括号,得出答案:++1*23/45
从前后缀转中缀也是同理,只不过是把原先在前后的运算符号放在中间,就不多赘述了。


其次是运算,也很简单,这里也拿前缀举例子。后缀同理
在前缀表达式中,我们要找到后面紧跟两个数(在运算后期可能是已计算过的表达式)的运算符号,例如+12
然后将运算符号放回到中间,+12就变成了1+2,这样就可以计算出这个表达式的值了,也就是3.
和转化同理,千万不可跨级运算。
举个题目的例子:++1*23/54
step1:++1(2*3)(5/4)
观察发现*和/后面各有两个紧邻的数,将符号移到中间,便有了2*3与5/4(5除以4)
将括号内运算一下,得到++16(1.25)<--此括号内为一个小数(做题时也可以用这种方法,尤其是遇到两位数,小数时,打括号以区分)
step2:+(1+6)(1.25)
几乎同理,把+16变成1+6,式子变为+7(1.25)
step3:7+1.25
一样的,不解释,得出答案为8.25。

2.温馨提示
ACSL中一个上箭头(↑)代表次方,有时也可能是^,这种运算的优先级自然是最高的(一般来说)
大部分题目中都可能算出两位数,可以打一个括号,和单独的数区分开来。eg:12(34)5,代表1,2,三十四,5
英语中prefix为前缀,infix为中缀,postfix为后缀

3.题目
ACSL的出题就两种,一种是求表达式的值,另一种是转换表达式,这两种之前都提到过了。
真题找不到了,过段时间再找找

9

主题

17

回帖

148

积分

超级版主

积分
148
发表于 2-15-2025 08:50:06 | 显示全部楼层
附上例题
1,转化表达式
将下列前缀表达式转换为后缀表达式:
− + A ^ B 2 ^ / * A C + B C 3

前缀: − + A ^ B 2 ^ / * A C + B C 3
= − + A (^ B 2) ^ / (* A C) (+ B C) 3
= − (+ A (^ B 2)) ^ (/ (* A C) (+ B C)) 3
= − (+ A (^ B 2))( ^ (/ (* A C) (+ B C)) 3)
= (A (B 2 ^) +) (((A C *) (B C +) /) 3 ^) −
后缀/答案: AB2^+AC*BC+/3^−
这题是从前缀变成后缀,变成中缀也是同理

2,求值
Evaluate this prefix expression: (Note: all numbers are single digits)
+ − * 4 − 8 / 6 3 / + ↑ 3 2 ↑ 4 2 5 / / ↑ 6 3 * 4 3 2

sol:+ − * 4 − 8 / 6 3 / + ↑ 3 2 ↑ 4 2 5 / / ↑ 6 3 * 4 3 2
= + − * 4 − 8 (/ 6 3) / + (↑ 3 2) (↑ 4 2) 5 / / (↑ 6 3) (* 4 3) 2
= + − * 4 (− 8 2) / (+ 9 16) 5 / (/ 216 12) 2
= + − (* 4 6) ( / 25 5) ( / 18 2)
= + (− 24 5) 9
= + 19 9
= 28

题目中可能会出现代入求值的情况,但实际上没啥区别,就是要么直接代入值进行运算求值;要么先转换表达式再代入求值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 4-12-2025 09:43 , Processed in 0.072046 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表