#include <stdio.h>
typedef int (* FP_CALC)(int, int);
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int mul(int a, int b) { return a * b; }
int div(int a, int b) { return b? a/b : -1; }
FP_CALC calc_Func(char op)
{
switch (op)
{
case '+': return add;
case '-': return sub;
case '*': return mul;
case '/': return div;
default: return NULL;
}
return NULL;
}//定义一个返回值为FP_CALC的函数。
int calc(int a, int b, char op)
{
extern FP_CALC calc_Func(char op);
if(calc_Func(op))return (calc_Func(op))(a,b);
else return -1;
}
int main(void)
{
int a = 100, b = 20;
printf("calc(%d, %d, %c) = %d/n", a, b, '+', calc(a, b, '+'));
printf("calc(%d, %d, %c) = %d/n", a, b, '-', calc(a, b, '-'));
printf("calc(%d, %d, %c) = %d/n", a, b, '*', calc(a, b, '*'));
printf("calc(%d, %d, %c) = %d/n", a, b, '/', calc(a, b, '/'));
return 0;
}
//运行结果
calc(100, 20, +) = 120
calc(100, 20, -) = 80
calc(100, 20, *) = 2000
calc(100, 20, /) = 5