信息学奥赛一本通t1331(by寺貍)

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
long long flag=0;//废弃数据 
long long flag_1=0;//用于在第一次计算符号前先给ans赋值
long long ans;//为结果 
char tmp;//当前输入的单个字符 
char math[1002];//废弃数据 
long long mat[1002]={0};//这个数组是记录数字结果用的。 
long long temp=0;//这个值是作为输入数据时的形参 
long long i=0,j=0;//i是被定义为类似于指针的形参 
while(scanf("%c",&tmp)==1) 
{
 if(tmp<='9'&&tmp>='0')
 {
  temp=temp*10+tmp-'0'; 
  //此处是输入数据 
 }
 if(tmp==' ')//每一处空格就记录结果 
 {
  mat[i]=temp;
  i++;
  temp=0;
 }
 if(tmp=='+'||tmp=='-'||tmp=='*'||tmp=='/')//判断当前输入值是否是符号 
 {
  if(flag_1==0)//第一次计算符号前先给ans赋值 
  {
   i--;
   ans=mat[i];
   flag_1=1;
  }
  if(flag_1==1)
  {
  switch(tmp)//检测到符号以后符号计算 
   {
    case '+':i--;ans+=mat[i];break;
    case '-':i--;ans=mat[i]-ans;break;
    case '*':i--;ans*=mat[i];break;
    case '/':i--;ans=mat[i]/ans;break;
   }
  }
 }
 if(tmp=='@')
 {
  break;//保证检测到@的时候就退出循环 
 }
}
cout<<ans;//输出ans 
}

这里是信息学奥赛一本通第1331题《后缀表达式的值》的题解。
使用栈的思想但未使用模板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值