int cal(int(*f)(),int,int);//返回指针函数(*f)(int,int),即:用cal函数去调用多个函数;(*f)是为了左值#include <stdio.h>int add(int,int);int sub(int,int);int mul(int,int);int cal(int(*f)(),int,int);//返回指针函数(*f)(int,int),即:用cal函数去调用多个函数;(*f)是为了左值int (*select(char))();int add(int n1,int n2){ return n1+n2;}int sub(int n1,int n2){ return n1-n2;}int mul(int a,int b){ return a*b;}int cal(int(*f)(),int n1,int n2){ return (f)(n1,n2);}int (*select(char o))(){ switch(o){ case'+':return add; case'-':return sub; case'*':return mul; } }int main(){ int x,y; char o; printf("请输入算式,例1-2\n"); scanf("%d%c%d",&x,&o,&y); if ((o=='+')||(o=='-')||(o=='*')){ int (*f)(int,int); f=select(o); printf("%d%c%d=%d",x,o,y,cal(f,x,y)); } else {printf("未规范输入,或暂不支持此运算符");}}