今晚做的,考试时没做出来,考完做出来了。
算加减乘除的,方法是用数组存储中间变量,但是边界条件调试了好久。
#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;
}