#include <iostream>
#include <string>
#include <stdio.h>
//函数声明
int myAdd(int,int);
int mySub(int,int);
int myMul(int,int);
int myDiv(int,int);
//
typedef int (*FP_CALC)(int,int);//定义一个函数指针的类型,int类型,类型名为FP_CALC
FP_CALC calc_func(char op);//这里利用自己定义的类型名FP_CALC定义了一个指针函数!
int calc(int a,int b,char op);
///
int myAdd(int a,int b)
{
return a+b;
}
int mySub(int a,int b)
{
return a-b;
}
int myMul(int a,int b)
{
return a*b;
}
int myDiv(int a,int b)
{
return b?a/b:-1;
}
FP_CALC calc_func(char op)
{
switch (op)
{
case '+': return myAdd;
case '-': return mySub;
case '*': return myMul;
case '/': return myDiv;
default: return NULL;
}
return NULL;
}
int calc(int a, int b, char op)
{
FP_CALC fp = calc_func(op);
if (fp)
return fp(a, b);
else
return -1;
}
void main()
{
int a = 100,b = 20;
printf("calc(%d,%c,%d) = %d/n", a,'+', b, calc(a, b, '+'));
printf("calc(%d,%c,%d) = %d/n", a,'-', b, calc(a, b, '-'));
printf("calc(%d,%c,%d) = %d/n", a,'*', b, calc(a, b, '*'));
printf("calc(%d,%c,%d) = %d/n", a,'/', b, calc(a, b, '/'));
}