前缀表达式计算

#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
int i,top,stack[100],len,num[100];
int k=0;
top=-1;//栈为空
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
      if(str[i]>='0'&&str[i]<='9')//操作数
  {
  int count=0;
while(str[i]!=' '&&str[i]!=0)
{
count=count*10+str[i]-'0';//计算出正确的数字
i++;
}
num[k++]=count;//数字数组
  }
}
for(i=len-1;i>=0;i--)
{
   if(str[i]>='0'&&str[i]<='9')//碰到操作数
   {
   top++;
   stack[top]=num[--k];//将num中的数字压栈
   while(str[i]!=' ')//利用空格跳过后面的多余数字
   i--;
   }
   if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')
  {
  int t1,t2;
  t1=stack[top--];//第一个出栈的数
  t2=stack[top--];//第二个出栈的数
  if(str[i]=='+')
  stack[++top]=t1+t2;//将计算结果压栈
  if(str[i]=='-')
  stack[++top]=t1-t2;
  if(str[i]=='*')
  stack[++top]=t1*t2;
  if(str[i]=='/')
  stack[++top]=t1/t2;
  }
}
printf("%d",stack[top]);
return 0;
}

#面试复盘#
全部评论

相关推荐

02-26 13:56
已编辑
重庆财经学院 Java
King987:你有实习经历,但是写的也太简单了,这肯定是不行的,你主要要包装实习经历这一块,看我的作品,你自己包装一下吧,或者发我,我给你出一期作品
点赞 评论 收藏
分享
03-04 07:14
门头沟学院 C++
黑皮白袜臭脚体育生:老板:都给工作机会了还想要工资,哪来这么多好事
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务