c语音,任意输入一个运算式,包含加减乘除,程序算出结果。具体怎么实现

任意输入一个运算式,包含加减乘除,程序算出结果。具体怎么实现

核心部分伪代码:

stack 符栈,数栈;
c=getchar()
while(c!='\n' || !符栈.empty()){
	if(c是操作数) 数栈.push();c=getchar();
	else if(符栈.empty()) 符栈.push(c);c=getchar();
	else switch(precede(符栈.top(),c)){//比较栈运算符和当前运算符的优先级
				case '<': 符栈.push(c); c=getchar();break;
				case '=': 符栈.pop(); c=getchar();break;//脱括号
				case '>': { //栈顶优先级更高,运算 
					b=数栈.top();数栈.pop();
					a=数栈.top();数栈.pop();
					o=符栈.top();符栈.pop();
					数栈.push(operate(a,o,b));
					break;//不需要getchar(),因为当前c还没有任何操作
				}
			}
}
printf(数栈.top())

表达式求值,这是数据结构的部分了。你需要先学习“栈”的使用方法,栈的操作,然后学习伪代码,了解运算的过程。然后再上手操作一番。

https://blog.csdn.net/qq_46523755/article/details/115437923

这里有栈的C语言描述,你可以学习自己构造一个栈,自己写对栈的操作,加深对栈的认知。然后练习一些经典过程,比如十进制和其他进制的转换、括号匹配的检验、汉诺塔问题,以及表达式求值。

计算后缀表达式的算法,和将中缀表达式转换为后缀表达式的算法

https://blog.csdn.net/qq_41398808/article/details/79558789

四则运算呗

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html