一道百度笔试题

来源:互联网 发布:电脑量角器软件 编辑:程序博客网 时间:2024/05/22 11:50

今晚做的,考试时没做出来,考完做出来了。



算加减乘除的,方法是用数组存储中间变量,但是边界条件调试了好久。

#include<iostream>#include<vector>#include<string>using namespace std;int chartoint(char *p,char *q){char *cur=p;int num=0;while(cur<=q){num=num*10;num+=(int)(*cur-'0');cur++;}return num;}int main(){vector<double> zhengshu;vector<char> fuhao;char zifu[65536];while(cin>>zifu){char* p=zifu,*q=zifu;zhengshu.clear();fuhao.clear();int len=strlen(zifu);double cur=1,cur2=1;char temp='\0';while(*q!='\0'){while(*q!='+'&&*q!='-'&&*q!='*'&&*q!='/'&&*q!='\0')q++;cur2=chartoint(p,q-1);if(cur==1)cur=cur2;else{if(temp=='*')cur=cur*cur2;else if(temp=='/')cur=cur/cur2;}if(*q=='+'||*q=='-'||*q=='\0'){zhengshu.push_back(cur);fuhao.push_back(*q);cur=1,cur2=1;}else{temp=*q;}if(*q!='\0'){p=q+1;q=q+1;}}double result=zhengshu[0];int len1=zhengshu.size();for(int i=0;i<len1;++i){if(fuhao[i]=='+')result+=zhengshu[i+1];else if(fuhao[i]=='-')result-=zhengshu[i+1];}printf("%.0f\n",result);}return 0;}

0 0