求解逆波兰表达式 语言: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;
}
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号