您的位置:首页 > 其它

后缀表达式计算

2016-05-04 11:01 197 查看
#include <iostream>
#include <stack>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;

//  9 3 1 - 3 * + 10 2 / +
int main( )
{
int k;
char a[210];
stack<long>s;
scanf("%d",&k);
getchar();
while(k--)
{
memset(a,0,sizeof(a));
gets(a);
int res=0;
for(int i=0;i<strlen(a);i++)
{
int temp=0;
int flg=0;
//if(a[i]>='0'&&a[i]<='9')
//{
while(a[i]>='0'&&a[i]<='9')
{
temp=temp*10+a[i]-'0';
i++;
flg=1;
}
if(flg==1){s.push(temp);flg=0;}
//}
if(a[i]==' ')
{
continue;
}
if(a[i]!=' '&&!(a[i]>='0'&&a[i]<='9'))
{
int op1=s.top();s.pop();
int op2=s.top();s.pop();
if(a[i]=='+') res=op2+op1;
else if(a[i]=='-') res=op2-op1;
else if(a[i]=='*') res=op2*op1;
else if(a[i]=='/') res=op2/op1;
else if(a[i]=='%')res=op2%op1;
s.push(res);
}

}
printf("%d\n",s.top());
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  namespace