#include <stdio.h>
#include <string.h>
#define M 4
int add(inta, int b); //forward declaration
int sub(inta, int b);
int mul(inta, int b);
int div(inta, int b);
//转移表
int (*oper_func[])(int,int) = {
add, sub, mul, div
};
char oper_sequence[M][10]= {
"add", "sub","mul", "div"
};
int main()
{
char oper[10];
int seq;
int a,b;
int result;
int i;
printf("Operator:");
scanf("%s",oper);
printf("a:");
scanf("%d",&a);
printf("b:");
scanf("%d",&b);
for(i=0;i<M; i++)
{
if(strncmp(oper_sequence[i],oper, 3) ==0)
seq = i;
}
result = oper_func[seq](a,b);
printf("result is%d\n",result);
return 0;
}
int add(inta, int b)
{
return a+b;
}
int sub(inta, int b)
{
return a-b;
}
int mul(inta, int b)
{
return a*b;
}
int div(inta, int b)
{
return a/b;
}