9101:后缀表达式计算

 Problem Description

规则如下:式中不包含括号,运算符放在两个操作数的后面,所有的计算按运算符出现的顺序,严格从左向右进行,不再考虑运算符的优先级,如:(2 + 1) * 3,在此处即表示为2 1 + 3 *
请编程,计算后缀表达式的值。

 Input

输入数据有多组,每组数据占一行,代表一个后缀表达式,每行不超过50个字符;
每行由多个元素(操作数,运算符,终结符)组成,每两个元素之间有一个空格;
后缀表达式当中:
操作数:是一整数字符串,长度不超过5;
运算符范围:+,-,*,/
终结符:#,该符号代表表达式的终结;
假设没有不规范的后缀表达式。

 Output

每组输出数据占一行,输出后缀表达式的计算结果。

 Sample Input

2 1 + 3 * #
2 10 3 * + #
7 2 6 9 * + / #

 Sample Output

9
32
0.125

 Hints

操作数字符串转换为数值存储时,应定义为double类型;

注意计算结果的输出格式。

 Author

hdf

 Recommend

zh

输入数据怎么避开数之间的空格,输入的时候,

而且多数据输入
 scanf("%[^\n]",a);

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    char a[1000];
   int i;
   double b[1000],n,s;
   scanf("%[^\n]",a);
      n=strlen(a);
      int j=-1;
      for(i=0;i<n;i++)
       if(a[i]>='0'&&a[i]<='9')
         {
             b[++j]=a[i]-'0';
         }
         else if(a[i]=='+')
            {
                s=b[j-1]+b[j];
                 b[--j]=s;
            }
            else if(a[i]=='-')
            {
                s=b[j-1]-b[j];
                 b[--j]=s;
            }
            else if(a[i]=='*')
            {
                s=b[j-1]*b[j];
                 b[--j]=s;
            }
           else  if(a[i]=='/')
            {
                s=b[j-1]/b[j];
                 b[--j]=s;
            }
            else if(a[i]=='#')
            
            printf("%.lf\n",b[0]);

          return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以码平川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值