"a+b*((e+(c-d)*f)/h)"一个运算表达式的字符串,怎么分别获取到a,b,c,d,e,f,h变量然后赋值

例如:最后赋值后运算该表达式1+2*((3+(4-2.5)*5)/6)

没有明白你的具体意思,估计是表达式求值吧。如果是表达式求值,明显使用堆栈。
建立一个堆栈
将包括括号以及运算符号的所有ASCII码依次按规则压入堆栈
规则如下:
从右向左依次开始压入,碰到字符和运算符和")"不管,当碰到"("时,弹栈直到弹出第一个'")",然后将弹出的内容求值,继续依照上述规则压栈。
一直压栈直到最左边的元素时,弹栈,求值。
如果你是要从"a+b*((e+(c-d)*f)/h)"这个字符串里求值,可以用相关字符串操作函数,比如strcompare()等函数等,获取到a,b……的ASCII码,
比如c++6的库函数里有一个strtok()函数,可以设定一个标志字符,本例里可以设置
char* source = "a+b*((e+(c-d)*f)/h)";
char* delimes = "+";
char* resoult = null;
执行函数 resoult = strtok(delimes,source) 即可用resoult返回第一个“+”以前的所有字符,而此时source里将保留剩下的字符,可以再次定义一个delimes获取其他字符。
然后将返回的各字符ASCII码转换为整形数即可。ASCII码转整形只相差一个常数,如果不记得,可以用a-"0"计算得出。
你的式子还算简单,都是单个字母的变量,如果变量名较长,可能还需要用到模式匹配算法等。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网