求解逆波兰表达式 语言:GCC

求解逆波兰表达式

时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

编写函数int add(char s[]);计算字符串形式的逆波兰表达式(即两个操作数在前,计算符在后)。本题内,保证每个操作数均为1位数。操作符有'+','-','*','/'四种。且保证计算过程中除法运算全部为整数除法,结果为整数。
如23+4*,,结果20

输入:

一行字符串,长度不超过20。

输出:

逆波兰表达式的计算结果。

输入样例:

23+4*

输出样例:

20

提示:

 

来源

代码:

 

#include <stdio.h>
#include <stdlib.h>
int add(int a,char c,int b)
{
if(c=='+') return a+b;
else if(c=='-') return a-b;
else if(c=='*') return a*b;
else return a/b;
}
int main()
{
char a[20];
scanf("%s",a);
int b[10],i,k=0,j,sum;
for(i=1;a[i]!='\0';i=i+2)
{
k++;
b[k]=a[i]-48;
}
b[0]=a[0]-48;
sum=b[0];
for(i=2,j=1;j<=k;i=i+2,j++)
{
sum=add(sum,a[i],b[j]);
}
printf("%d\n",sum);
return 0;
}

 

  

 

 

 

posted @ 2011-06-03 14:38  itbird  Views(597)  Comments(0)    收藏  举报