您的位置:首页 > 其它

HDU 1237 简单计算器

2012-09-07 21:15 246 查看
#include<stdio.h>

#include<string.h>

#include <stdlib.h>

#include<math.h>

char s[210],op[200],a[200];

int get(char *a,int l)

{

int t=1,i,m=0;

for(i=l-1;i>=0;i--){

m+=(a[i]-'0')*t;

t*=10;

}

return m;

}

int main()

{

double n[200];

int len,i,j,k,h,p;

while(gets(s),strcmp(s,"0")){

k=0; h=0; j=0;

len=strlen(s);

for(i=0;i<=len;i++){

if(s[i]>='0' && s[i]<='9') a[j++]=s[i];

else if(s[i]==' '||s[i]=='\0'){

if(s[i-1]>='0'&&s[i-1]<='9'){

n[k++]=get(a,j); j=0;

if(h){

if(op[h-1]=='*'){

n[k-2]*=n[k-1];

h--; k--;

}

else if(op[h-1]=='/'){

n[k-2]=n[k-2]*1.0/n[k-1];

h--; k--;

}

}

}

}

else op[h++]=s[i];

}

i=0;

while(h){

if(op[i]=='+'){

n[0]+=n[1];

for(p=1;p<k-1;p++) n[p]=n[p+1];

k--; h--; i++;

}

else if(op[i]=='-'){

n[0]-=n[1];

for(p=1;p<k-1;p++) n[p]=n[p+1];

k--; h--; i++;

}

}

printf("%.2lf\n",n[0]);

}

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: