这个用C语言写的计算器的思路是什么?

Python017

这个用C语言写的计算器的思路是什么?,第1张

对初学编程者来说,这个程序的原理确实难了点,因为它用到了编译原理的知识.

即如果设一个四则运算表达式的形式为S,那么它一定是一个以等号结尾的运算式,即S->exp=,->是推导符号.

运算式exp又可以继续推导成

exp->exp+term|exp-term|term

exp表示加减运算,term表示乘除运算.这个推导式反映了乘除的优先级比加减高.

即要先计算乘除式的结果,再来加减.

term可以推导如下:

term->term*factor|term/factor|factor

factor->num|(E)

factor是数字或者一个被括号括住的运算式,表示最高优先级.

数字本身是不带运算的,是原子性的,肯定是最高优先级.

括号是被规定了优先计算.

这个程序的代码就是按照上面的推导式,用递归方式来分析运算式的.

1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。

2、输入预处理命令和主函数:#include /*函数头:输入输出头文件*/,void main()/*空类型:主函数*/。

3、定义变量:int a,b,d; /*定义变量的数据类型为整型*/,char c;/*定义变量的数据类型为字符型*/。

4、输入四则运算式:printf(输入如“3*4”或“5+2”的四则运算式:);/*输出文字提示*/scanf(%d%c%d,&a,&c,&b);/*输入四则运算式*/。

5、判断运算符号:switch(c) /*判断运算符号*/{case'+':d=a+bbreak;/*进行加法6、运算*/case'-':d=a-bbreak;/*进行减法运算*/case'*':d=a*bbreak;/*进行乘法运算*/case'/':d=a/bbreak; /*进行除法运算*/}。

7、输出结果:printf(%d%c%d=%d\n,a,c,b,d);/*输出结果*/。