30/11
2017
在论坛上发现了一个很强的C计算器代码
仅有几十行,能实现普通的运算
#include "stdio.h"
#include "string.h"
#define MAX 1001
double stack[MAX];
int tail;
int main()
{
int a;
while(scanf("%d ",&a)&&a!=0)
{
tail=0;
stack[++tail]=1.0*a;//tail始终指向末尾数字位置
//1.入栈所有数据(如果遇到*/号,只更新栈尾)
char ch1,ch2;
while(scanf("%c %d%c",&ch1,&a,&ch2)!=EOF)
{
if(ch1=='+')
{
stack[++tail]=1.0*a;//push
}
else if(ch1=='-')
{
stack[++tail]=-1.0*a;//push neg
}
else if(ch1=='*')
{
stack[tail]=stack[tail]*a;//update tail
}
else if(ch1=='/')
{
stack[tail]=stack[tail]/(double)a;//updata tail
}
if(ch2!=' ')
break;
}
//2.把栈里头的东西全部加起来,求和
double result=0;
for(int i=1;i<=tail;i++)
result+=stack[i];
printf("%.2lf\n",result);
}
return 1;
}
