P1449 后缀表达式
题目:题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入格式
输入:后缀表达式
输出格式
输出:表达式的值
输入输出样例
输入
3.5.2.-*7.+@
输出
16
说明/提示
字符串长度,1000内。
这时洛谷栈的一个简单题
#include<stdio.h>
int main()
{
char ss[1010];
scanf("%s",ss);
long long int a[1000],now=0;
int j=0;
for(int i=0;ss[i]!='@';i++)
{
if(ss[i]>='0'&&ss[i]<='9')
{
now=now*10;
now=now+ss[i]-'0';
}
else if(ss[i]=='.')
{
a[++j]=now;
now=0;
}
else if(ss[i]=='-')
{
a[j-1]=a[j-1]-a[j];
j=j-1;
}
else if(ss[i]=='*')
{
a[j-1]=a[j-1]*a[j];
j=j-1;
}
else if(ss[i]=='/')
{
a[j-1]=a[j-1]/a[j];
j=j-1;
}
else if(ss[i]=='+')
{
a[j-1]=a[j-1]+a[j];
j=j-1;
}
}
printf("%lld",a[1]);
}
if(ss[i]>='0'&&ss[i]<='9')
{
now=now*10;
now=now+ss[i]-'0';
}
else if(ss[i]=='.')
{
a[++j]=now;
now=0;
}
我觉得呢,这里是精华,学习一下,这里考虑到了不止一位的数,如112,12