用c语言实现:用栈完成从键盘输入一个算数表达式,完成表达式求值,其中表达式中数字可以为一位数,表达式中的符号包括加、减、乘、除、小括号,其中优先计算括号里的式子。最后写出实验思路及实验结果。
时间: 2024-02-01 21:12:14 浏览: 24
实验思路:
1.定义一个栈结构,存储操作数和操作符;
2.从键盘输入算数表达式,遍历表达式中的每一个字符;
3.如果字符是数字,则将它入栈;
4.如果字符是运算符,则将它与栈顶运算符优先级进行比较:
4.1 如果栈顶运算符优先级较低,则将它入栈;
4.2 如果栈顶运算符优先级较高,则弹出栈顶元素和次栈顶元素,进行运算,将结果入栈,再将当前运算符入栈;
5.如果字符是左括号,则将它入栈;
6.如果字符是右括号,则弹出栈顶元素和次栈顶元素,进行运算,直到弹出左括号为止;
7.当遍历完整个表达式后,如果栈不为空,则依次弹出栈顶元素和次栈顶元素,进行运算,直到栈为空,得到最终结果。
实验结果:
输入表达式:(1+2)*3-4/(5+6)
计算结果:6.090909
输入表达式:(1+2)*(3-1)
计算结果:6
输入表达式:5+6*3-2/4
计算结果:21.5