多年前写过一个四则运算的计算程序(只有数字的加减积除及括号)。代码找不到了,思路是:
编写计算无括号四则运算函数cal_no_paren(char *);
比较简单:先乘除后加减,可递归调用(参见下一个函数)
编写计算有括号四则运算函数cal_with_paren(char *);
先查找“)”,从前往后扫描:
如遇到“)”:
反向找出配对的“(”
对括号中的部分(由于是第一个“)”,这部分内无括号)调用cal_no_paren(char *)算出结果。
用计算结果替换括号部分,从而简化算式。
递归调用cal_with_paren(char *);
如未遇到“)”:
调用cal_no_paren(char *)算出结果。
结束。
希望对楼主有所帮助。