if(operate=='('||operate==')')// 括号多余的情况{cout<< " 表达式有错"<<endl;return 0;} count(b,operate,a); } cout<<stack1.n[stack1.top]<<endl; return 0;}实验结果: 运行结果如下: 思考题 1、试着扩充运算符集,如增加乘方、单目加等。 2、如何增强计数器的功能和仿真界面。 3、如何实现前缀算术表达式、后缀表达式的求解? 用栈来实现表达式中缀表示法变后缀要用一个字符型数组 oPTR 作为输入的结束标志。依次读入表达式中的字符, 对于每一个字符有三种情况: 第一种情况是—数字: 处理方式: 将字符直接赋值到后缀表达式串中。第二种情况是—非数字非运算符;处理方式;结束。第三种情况是== 运算符;处理情况按运算符与栈顶运算符的三种优先关系 1 大于栈顶优先级:将字符直接赋值到后缀表达式串中 2 等于栈顶优先级:将栈顶元素退栈,处理表达式中下一个字符 3 小于栈顶优先级:将栈顶元素退栈,并将推出栈的元素输出到后缀表达式串中 I nt tranExpression(char *str1,char *str2) {/* 将中缀表达式串 str1, 转换为后缀表达式 str2*/ I nstack(optr); P ush(optr, ’#’);I =0;k=0; W hile(str1[i]!= ’#’,||gettop(OPTR)!= ’#’) {if(str1[i]>= ’0’&&c<= ’9’)S tr2[K++]=str1[i++];/* 数复制到 str2 中*/ E lse {If judge(str[i]) return ERROR; 总结和感想: 栈的四则运用还是不熟悉,代码从网上摘下来,进行调试的!自己写还没有能力写出来,感觉水平有待提高吧!!