1.问题
计算机如何读懂四则运算表达式?
例: “10.3 +(-3 - -0.54)* 100”
2.后缀表达式
将运算符放在数字后面的后缀表达式
实例:
10 + 4 -> 10 4 +
1 +2*3 -> 1 2 3 * +
9 + (3 - 1) * 5 -> 9 3 1 -5 * +
后缀表达式消除了中缀表达式中的括号
同时保留中缀表达式中的运算优先级
3. 解决方案
1.将中缀表达式进行数字和运算符的分离
2.将中缀表达式转换为后缀表达式
3.通过后缀表达式计算 最终结果
所要计算的中缀表达式中包含
- 数字和小数点【0-9 或 .】
- 符号位 【 + 或 -】
-运算符 【+,-,*,/】
- 括号 【(或)】
思想 : 以符号作为标志对表达式中的字符逐个访问
- 定义累计变量num(存储数字)
- 当前字符exp【i】为数字或小数点时:
累计: num += exp【i】
-当前字符exp【i】为符号时:
num 为运算数,分离并保存
若exp【i】为正负号:
累计符号位 + 和 -: num += exp【i】
若exp【i】为运算符:
分离并保存
伪代码:
for(int i=0; i<exp.length(); i++)
{
if ( exp[i] 为数字或小数点)
累计: num += exp【i】;
else if( exp[i] 为符号)
{
if (num != "")
分离并保存运算数: num;
if( exp[i] 为正号或负号)
符号位累计 : num += exp【i】;
else
{
分离并保存运算符 : exp【i】;
}
}
}
难点:
- 如何区分正负号与加号和减号?
- +和 - 在表达式的第一个位置
- 括号后的 + 和-
- 运算符后的 + 和 -
四则运算表达式的计算分三个步骤
- 数字和符号分离
- 中缀表达式转后缀表达式
- 根据后缀表达式计算结果

被折叠的 条评论
为什么被折叠?



