C语言编写一个计算计算算式的程序。求点思路。本人在计算算式时有问题。在将字符串转为数字时没问题

例子。输入12.3*4+2/4-9*2
输出就是这个算式的答案。
题目是一字符串的形式获取算式,之后计算,

既然你说字符串转换为数字的时候没问题(但我还是想确认一下,因为你的这个测试用例串出现了2/4,这里的2和4你转换之后的结果是整数还是浮点数?),那就是运算符的优先问题了。就是说乘除优先于加减做运算。你可以用栈来实现这个功能。先将第一个运算符进栈(也就是这里的*号),然后读到第二个运算符的时候,将它与栈中的进行比较,如果栈中的运算符优先级要高就先计算第一个,如果是第二个运算符的优先级高,就继续把这个运算符进栈。重复这个过程,如果你处理到了最后一个操作数的时候,栈里的运算符还没有完,那就按出栈顺序进行运算,因为栈中的运算符一定是栈顶的比栈底的优先级要高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-02
思路:
1.获得算式的字符串
2.检查算式的正确性,以数字开始,以数字结束。连个数字间只能存在算术运算符(+-*/),除此外就是非法算式
3.从右向左找到第一个运算符,字符串下标~~,然后找到该运算符前的字符串是数字,给一个变量,依次直到最后。
4.直接按解析的顺序把算式赋值给一个变量,并输出该变量,就是算式的结果

C语言编写一个计算计算算式的程序。求点思路。本人在计算算式时有问题...
),那就是运算符的优先问题了。就是说乘除优先于加减做运算。你可以用栈来实现这个功能。先将第一个运算符进栈(也就是这里的*号),然后读到第二个运算符的时候,将它与栈中的进行比较,如果栈中的运算符优先级要高就先计算第一个,如果是第二个运算符的优先级高,就继续把这个运算符进栈。重...

用C语言编程实现一个简单的四则运算计算器
\/\/函数,读数操作数 int getNextNum(){ int ret;scanf("%d",&ret);return ret;} \/\/函数,读运算符 char getOpt(){ return getchar();} \/\/函数,计算 int caculate(int op1 , int op2 ,char opt){ if(opt=='+')return op1+op2;if(opt=='-')return op1-op2;if(opt=='*')retur...

用C语言设计一个简单计算器程序,能根据键盘输入的运算指令和数据,做...
回答:可以 去做吧

C语言问题: 设计一个简易计算器,要求:能够进行任意多个数的加减乘除四...
2*(4-6)-7\/3*(3+1)#,然后回车,便得到结果

用C语言编写一个程序:
int v1, v2, t, r, a;char op, ops[] = { '+', '-', '*', '\/' };srand( (unsigned)time(NULL) ); \/\/用当前时间初始化随机数种子 printf( "请答题 Ctrl+C 结束...\\n" );while(1){ v1 = GEN_VALUE(); \/\/随机生成第1个算数 v2 = GEN_VALUE(); \/\/随机生成...

C语言计算器乘法那段代码有毒,请问该怎么改,思路是怎么样的
你用的不知道是不是vc++6.0,对单行的注释不要常用\/**\/,因为这会使vc糊涂,用\/\/就很好 用vc编你这个有bug。把switch里\/**\/都删了,或换成\/\/

C语言计算程序
例如7*8 化为 7 8 *例如6-9 化为 6 9 -例如5*(3+2),化成后缀表达式就是5 3 2 + *可知后缀表达式无括号。然后依次扫描符号,数字就直接进栈,遇到运算符就将前两个数字出栈、运算后结果再进栈:例如5 3 2 + *扫描5——>5扫描3——>5 3扫描2——>5 3 2扫描+——>5 5扫描*...

C语言:从键盘输入一个人简单的数学表达式,计算并显示该表达式的值
int num1; \/\/存放第一个操作数值 int num2; \/\/存放第二个操作数值 double result0; \/\/存放运算结果 char current_char;int i = 0;printf("请输入简单表达式!\\n");scanf("%c", ¤t_char);while (current_char >= '0' && current_char <= '9'){\/\/输入第一个变量 va...

急!!!求一个简单的C语言计算器程序...
printf("+ 5.求余 +\\n");printf("+ 6.从n到m的和+\\n");printf("+ 7.阶乘 +\\n");printf("+ 8.退出 +\\n");printf("+===+\\n");} void add()\/\/加法运算 { double a,b;printf("input two numbers:");scanf("%lf%lf",&a,&b);printf("%lf+%lf=...

用c语言做一个加减乘除还有乘方的计算器,做出来界面要好看好看好看。一...
void count(char *p);\/\/从左往右读取元算式元素 void resultCount();\/\/对模拟栈数组进行相应的计算 void choose(char *p);\/\/判断字符的类型 void judge(char c);\/\/判断'+','-'运算符,并进行相应的计算 void input_num(double n);\/\/将数字存入模拟栈数字数组 void input_char(char c);\/\/...

相似回答