expr给出一个形如A op B的表达式,计算它的值。
// hw12_expr.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "math.h"
#include "string"
int isNum(int par){
if(par>=48 && par<=57)return 1;
else return 0;
}
int isOp(char op){
return op=='+' ||op=='-'||op=='*';
}
int push(int a,int cha){
cha=cha-48;
return a*10+cha;
}
int cal(int a,char op,int b){
switch(op){
case '+':return a+b;break;
case '-':return a-b;break;
case '*':return a*b;break;
}
}
int main(int argc, char* argv[])
{
char str[40];
int a=0,b=0,i;
char op;
int flag=0;
//
gets(str);
for(i=0;i<40;i++){
// if(str[i]=' ')continue;
switch(flag){
case 0:
if(isNum(str[i])){
a=push(a,str[i]);
flag=1;
}
break;
case 1:
if(isNum(str[i])){
a=push(a,str[i]);
break;
}
case 2:
op=str[i];
if(isOp(op)){
flag=3;
}
break;
case 3:
if(isNum(str[i])){
b=push(b,str[i]);
flag=4;
}
break;
case 4:
if(isNum(str[i]))b=push(b,str[i]);
else flag=5;
break;
case 5:
printf("%d",cal(a,op,b));
flag=6;
break;
case 6:
getchar();
return 0;
}
}
return 0;
}