逆波兰式计算表达式值
作者:互联网
#include<stdio.h>
#include<string.h>
int a[257];
char str[257];
int main(){
gets(str);
int len = strlen(str);
int i;
int cnt =1;
// for(i = 0;i<len;++i)
// {
// printf("%c",str[i]);
// }
for(i =0;i<len;++i)
{
int tmp = 0;
int flag = 0;
int f = 1;
// if(str[i] == '-'&&str[i+1]>='0'&&str[i+1]<='9'&&i+1<len )
// {
// f = -1;
// i++;
// }
while(str[i]>='0'&&str[i]<='9')
{
flag = 1;
tmp = tmp*10 + str[i]-'0';
i++;
}
if(flag)
a[cnt++] = f*tmp;
// if(str[i]<='9'&&str[i]>='0')
// {
// a[cnt++] = f*(str[i]-'0');
// }
if(str[i] =='+')
{
int tmp1 = a[cnt-1];
cnt--;
int tmp2 = a[cnt-1];
//cnt--;
a[cnt-1] = tmp2+tmp1;
}
else if(str[i] =='-')
{
int tmp1 = a[cnt-1];
cnt--;
int tmp2 = a[cnt-1];
// cnt--;
a[cnt-1] = tmp2-tmp1;
}
else if(str[i] =='*')
{
int tmp1 = a[cnt-1];
cnt--;
int tmp2 = a[cnt-1];
//cnt--;
a[cnt-1] = tmp2*tmp1;
}
else if(str[i] =='/'){
int tmp1 = a[cnt-1];
cnt--;
int tmp2 = a[cnt-1];
// cnt--;
a[cnt-1] = tmp2/tmp1;
}
}
//printf("%d ()", cnt);
printf("%d",a[cnt-1]);
return 0;
}
标签:cnt,计算,int,--,波兰,str,tmp1,表达式,tmp2 来源: https://blog.csdn.net/qq_54575190/article/details/121043102