#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MX 100
char exp[MX];
int pos;
int num();
void error();
int plus();
int add(){
int sum = plus();
char opt;
while(pos<(int)strlen(exp)){
opt = exp[pos];
if(opt=='+'){
pos++;
sum += plus();
}
else if(opt=='-'){
pos++;
sum -= plus();
}else
break;
}
return sum;
}
int plus(){
int sum = num(), t;
char opt;
while(pos<(int)strlen(exp)){
opt = exp[pos];
if(opt=='*'){
pos ++;
sum *= num();
}
else
if(opt=='/'){
pos++;
if((t=num()))
sum /= t;
else
error();
}
else
break;
}
return sum;
}
void error(){
printf("Error!\n");
exit(0);
}
int num(){
int sum = 0;
if(exp[pos]=='('){
pos++;
sum = add();
if(exp[pos]!=')')
error();
else
pos++;
return sum;
}
while(exp[pos]>='0'&&exp[pos]<='9'){
sum *= 10;
sum += exp[pos]-'0';
pos++;
}
return sum;
}
void main(){
freopen("in.txt", "r", stdin);
while(scanf("%s", exp)!=EOF)
printf("%d\n", add());
}
递归实现的计算器
最新推荐文章于 2023-05-03 10:23:35 发布