[问题描述] 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的.假设操作数[问题描述]一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的.假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#.引入表达式起始、结束符是为了方便.编程利用“算符优先法”求算术表达式的值.[基本要求](1) 从键盘读入一个合法的算术表达式,输出正确的结果.(2) 显示输入序列和栈的变化过程.[选作内容](1) 扩充运算符集合.(2) 引入变量操作数.(3) 操作数类型扩充到实数.
问题描述:
[问题描述] 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的.假设操作数
[问题描述]
一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的.假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#.引入表达式起始、结束符是为了方便.编程利用“算符优先法”求算术表达式的值.
[基本要求]
(1) 从键盘读入一个合法的算术表达式,输出正确的结果.
(2) 显示输入序列和栈的变化过程.
[选作内容]
(1) 扩充运算符集合.
(2) 引入变量操作数.
(3) 操作数类型扩充到实数.
答
#include <stdio.h>#include <math.h>enum state;int ctoi( char c)bool isNum( char a)bool isOp(char op){switch(op){case '+':return true;break;case '-':return true;break;case '*':return tr...