机试练习题三
来源:互联网 发布:vscode css智能提示 编辑:程序博客网 时间:2024/06/05 07:52
1.四则混合运算
input=“1+4*5-8/3”,output=19
#include <iostream>#include <stack>using namespace std;//不带括号的四则运算,如果带括号,操作符的优先级就有'='//比较两个操作符的优先级char optCompare(char a,char b){if(a=='+' || a=='-'){if(b=='+' || b=='-'){return '>';}else{return '<';}}else{//如果a是*/,那么b无论是什么操作符,都是>return '>';}}int compute(int x,char optr,int y){int ret;switch(optr){case '+':ret=x+y;break;case '-':ret=x-y;break;case '*':ret=x*y;break;case '/':ret=x/y;break;}return ret;}//测试栈/*int i,x;for(i=0;i<5;i++){cout<<"input "<<i<<" value:";cin>>x;test.push(x);//进栈}while(test.empty()==false){cout<<test.top()<<" ";//返回栈顶的元素test.pop();//删除栈顶元素}*/void main(){stack<int> dat;stack<char> optr;string str="1+4*5-8/3";for(int i=0;i!=str.size();i++){if(str[i]>='0' && str[i]<='9'){dat.push((int)str[i]-48);//将字符转成数字进栈}else{if(optr.empty()){optr.push(str[i]);}else{if(optCompare(optr.top(),str[i])=='<'){optr.push(str[i]);}else{int a=dat.top();dat.pop();int b=dat.top();dat.pop();dat.push(compute(b,optr.top(),a));optr.pop();optr.push(str[i]);}}}}while(optr.empty()==false){int a=dat.top();dat.pop();int b=dat.top();dat.pop();dat.push(compute(b,optr.top(),a));optr.pop();}cout<<"the result is "<<dat.top()<<endl;}
- 机试练习题三
- 机试练习题一
- 机试练习题二
- 机试练习题四
- Java练习题(三)
- java入门练习题三
- SQL(三)-- 练习题
- javascript练习题(三)
- 多线程练习题(三)
- mysql练习题三
- 线段树练习题三
- 线段树练习题三
- C语言练习题(三)
- C练习题-(三)
- 微软机试-测试练习题
- 华为机试练习题汇总
- 华为机试在线练习题
- c语言练习题(三)
- 在vs2010下学《directx9.0 3D 游戏开发编程基础》
- Android2.2 Vold 分析(三)---Vold 中 volumeManager分析
- Android2.2 Vold 分析-(四)---Vold 消息接收及挂载/卸载处理部分分析
- 【Linux入门学习之】Linux连接文件:硬连接和软连接
- WebService的两种调用方式
- 机试练习题三
- V4L2 - 基础知识/附图说明/易于理解
- [Java Path Finder][JPF学习笔记][8]几篇使用JPF的论文
- linux 基础学习之三:bash shell初识 上
- jrtplib3.7.1编译调试心得体会
- JAVA中equals()方法的重要性
- Android 系统属性 SystemProperties 分析
- android Fragments详解一:概述
- I2C总线协议学习笔记