使用回调函数函数封装两个数取最大值,最小值,求和以及平均值函数
创建取最大值、最小值,求和以及平均值的函数:
int maxValue(int x, int y){
return x > y ? x : y;
}
int minValue(int x, int y){
return x < y ? x : y;
}
int sumValue(int x, int y){
return x + y;
}
int avgValue(int x, int y){
return sumValue(x, y) / 2;
}
实现回调函数
typedef int (*PFUNC) (int, int );
typedef struct cmdFunc{
char command[10];
PFUNC pFunc;
}CmdFuncPair;
PFUNC getFuction(const char *command){
PFUNC p = NULL;
CmdFuncPair cfp[4] = {
{"max", maxValue},
{"min", minValue},
{"sum", sumValue},
{"avg", avgValue}
};
for (int i = 0; i < 4; i++) {
if (0 == strcmp(cfp[i].command, command)) {
p = cfp[i].pFunc;
break;
}
}
return p;
}
int getValue(int x, int y, const char *command){
PFUNC p = getFuction(command);
if (p) {
return p(x, y);
}
return 0;
}
以上为用回调函数封装的函数
调用者可直接在主函数中输入命令调用所需的函数,如:
char command[10] = {'\0'};
printf("please input sum / avg / max / min : ");
scanf("%s", command);
printf("%d\n", getValue(3, 9, command));
这样就完成了。