华为机试题:四则运算(栈实现)
2014-09-17 14:46
218 查看
#include <iostream> #include <stack> #include <string> using namespace std; int calstr(char* str) { stack<int> num; int len=strlen(str); char str0[1024]={0}; int k=0; for(int i=0;i<len;i++) { char temp=str[i]; switch(temp) { case '+': case '-': { while(num.size()>0) { char tmd=num.top(); num.pop(); str0[k++]=tmd; } num.push(temp); break; } case '*': case '/': { while(num.size()>0&&((num.top()=='*')||(num.top()=='/'))) { char tmd=num.top(); num.pop(); str0[k++]=tmd; } num.push(temp); break; } } if(isdigit(temp)) str0[k++]=temp; } while(num.size()>0) { char tmd=num.top(); num.pop(); str0[k++]=tmd; } int i=0; int strnum[1024]={0}; int l=0; while(str0[i]) { if(isdigit(str0[i])) { strnum[l++]=str0[i]-'0'; } else if(str0[i]=='*') { --l; strnum[l-1]=strnum[l-1]*strnum[l]; } else if(str0[i]=='+') { --l; strnum[l-1]=strnum[l-1]+strnum[l]; } else if(str0[i]=='/') { --l; strnum[l-1]=strnum[l-1]/strnum[l]; } else if(str0[i]=='-') { --l; strnum[l-1]=strnum[l-1]-strnum[l]; } ++i; } return strnum[0]; } int main() { char* p=new char[1024]; gets(p); int res=calstr(p); cout<<res; return 0; }
相关文章推荐
- 华为校园招聘上机试题 Java实现(一)
- 华为校园招聘上机试题Java实现(一)
- 华为2016校招机试题(2015年9月) 海大下午场(包含实现代码,运行环境为VS2010)
- 华为2013机试题 大数相减JAVA实现
- 华为校招上机笔试试题(B卷)——java实现
- 华为校招上机笔试试题(A卷)——java实现
- 华为校园招聘上机试题Java实现(二)
- 2015届华为校园招聘机试题 (3)java实现
- 2015届华为校园招聘机试题 C语言实现
- 华为2016校招机试题(2015年9月) 海大上午场(包含实现代码,运行环境为VS2010)
- 2015届华为校园招聘机试题 (java实现)
- 华为校园招聘上机试题 Java实现(二)
- 2015届华为校园招聘机试题 java实现(2)
- 2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)
- [华为机试题]四则运算
- 2012届华为校园招聘机试题(java实现)
- 标题华为2016校招机试题(2015年9月) 海大上午场(包含实现代码,运行环境为vc)
- 2015届华为校园招聘机试题 java实现
- 华为机试题:实现一个简易的银行叫号系统
- 华为机试题-四则运算-栈的利用