一、求后缀表达式
可能就是一填空题,考试应该也不会太复杂,要会,掌握着由外到内求解思想即可; 其实就是二叉树的后序遍历,左右根;拆分的顺序就是由左到右顺序进行,小括号内的最后拆(由外到内); 后面三道的具体步骤就不写了; ![在这里插入图片描述](https://img-blog.csdnimg.cn/f9838e03c83849ef8bb07473d5af3a64.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb52accab39548868799c889d7c752fd.png)
二、求三元式
三元式的拆分求解顺序和后缀表达式相反,由内到外; 三元式的形式(运算符,参数1,参数2) ![在这里插入图片描述](https://img-blog.csdnimg.cn/9b6644d0c56042fc84d56d5b72cb8443.png)
1.三元式:
三元式的求解过程是由内到外,然后右左向右,可以发现先拆小括号里面,然后再按顺序向右求解;要盯着三元式的形式去填,(运算符,参数1,参数2),参数当然也可以是一个三元式,比如(2)的第一个参数就是(1);变负数有点特殊,操作符是@,然后第一个参数就是想变负数的参数,第三个参数为空,画一条线即可;
2.间接三元式:
间接三元式其实就是对三元式做一个小改动,通过上图可以发现 (1)、(5)其实是一样的,所以可以把(5)删去,下面用到(5)的可以替换为(1);
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a391ef654fe4d98ac7b7303956b00ff.png)
三、求四元式
四元式的形式(运算符,参数1,参数2,运算结果(临时变量名))
1. 根据表达式写四元式
以上题的表达式为例,写出其四元式 同理也是盯着四元式的形式(运算符,参数1,参数2,运算结果(临时变量名))去写,和三元式不一样的就是多一列,多了一个运算结果,其实就是个变量,所以他叫四元式;然后三元式引用的(x)换成Tx;别的都一样, ![在这里插入图片描述](https://img-blog.csdnimg.cn/2e38fa0368c7479a8d0f7c3693bceb88.png)
2. 根据代码写四元式(重点)
普通四元式的形式(运算符,参数1,参数2,下一步跳转的地址编号),对于赋值操作的四元式形式:(运算符,参数1,参数2,临时变量);每个四元式的前面有一个地址编号,用于跳转用; 考试要考,要会做!
例题1
![在这里插入图片描述](https://img-blog.csdnimg.cn/b003d6b92b8041978b84612b3fe14dea.png)
赋值操作比较特殊,有三步,第一步是进行运算结果存入T,第二步是把运算结果T赋值给想赋值的变量C,第三步就是下一步跳转的地址编号;和上面表达式写的四元式有点不同的是,运算符前面加了个 j,j就是跳转指令;然后第四列的表示含义不同:赋值操作时(运算符为±*/、:=)第四列和上面的四元式一样,表示变量;其他操作时,第四列表示下一步跳转的地址编号;可以发现,四元式对于每一个条件都是成对出现的,当满足某个条件,进行操作后,第四列存储执行完当前操作后的,下一步跳转的地址编号;这里看的答案解析给的是0,默认当做程序跳出;下面一道题,用一种新的写法,对加一个四元式当做程序出口;
例题2
![在这里插入图片描述](https://img-blog.csdnimg.cn/7232572724754511908900198d2cdd02.png)
地址为109的表示程序出口,上题默认用的0,感觉还是这种写法比较好;需要注意当while后面的C>0没满足时,直接结束程序,而不是再跳到if(A |