c语言程序设计,设计一个简单的程序,能完成加减乘除运算,网上搜的答案运行都出现很多错误,解释一下程 10
c语言程序设计,设计一个简单的程序,能完成加减乘除运算,网上搜的答案运行都出现很多错误,解释一下程序设计的思路,多谢了,各位...
c语言程序设计,设计一个简单的程序,能完成加减乘除运算,网上搜的答案运行都出现很多错误,解释一下程序设计的思路,多谢了,各位
展开
1个回答
展开全部
1、简单版本的,输入两个数一个操作符:“1 + 2”类似这种,直接获取两个数以及操作符,用switch语句来分别对不同操作符进行操作。
2、复杂版本的,随意输入表达式,可以有括号以及其他运算符,“1+2*8+(6/7)^3”类似这种,有四种解决办法:
2.1、一遍一遍地扫描字符串,优先级越高的运算符越先做,每扫描一次减少一点,直到表达式只剩一个数值。
2.2、将表达式通过栈转换为逆波兰表达式,并计算逆波兰表达式。
2.3、递归求解,使用类似BNF的定义来使用递归将表达式一点一点剥离成小表达式,计算完小表达式后,将多个小表达式综合起来,即为整个表达式的值。
2.4、直接使用lex和yacc来写一个计算器,需要写的代码量很少,自动生成的代码量比较多。
主要就这几种思路,细节问题你可以自己上网查。
2、复杂版本的,随意输入表达式,可以有括号以及其他运算符,“1+2*8+(6/7)^3”类似这种,有四种解决办法:
2.1、一遍一遍地扫描字符串,优先级越高的运算符越先做,每扫描一次减少一点,直到表达式只剩一个数值。
2.2、将表达式通过栈转换为逆波兰表达式,并计算逆波兰表达式。
2.3、递归求解,使用类似BNF的定义来使用递归将表达式一点一点剥离成小表达式,计算完小表达式后,将多个小表达式综合起来,即为整个表达式的值。
2.4、直接使用lex和yacc来写一个计算器,需要写的代码量很少,自动生成的代码量比较多。
主要就这几种思路,细节问题你可以自己上网查。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询