要求:必须要求函数指针变量,回调函数
#include<stdio.h>
/*
有两个整数a,b,由用户输入1、2、3,
如输入的是1,程序就输出a和b的最大值,
如输入的是2,程序就输出a和b的最小值,
如输入的是3,程序就输出a和b的和
*/
int getMax(int data1,int data2)
{
return data1>data2?data1:data2;
}
int getMin(int data1,int data2)
{
return data1<data2?data1:data2;
}
int getSum(int data1,int data2)
{
return data1+data2;
}
int dataHandler(int data3,int data4,int (*pFunction)(int,int))
{
int result;
result=(*pFunction)(data3,data4);//拿到dataHandler形参的值
return result;
}
int main()
{
int a=10;
int b=20;
int number;//记录输入的1、2、3的number
int result;
int (*pFunction)(int ,int );//定义函数指针变量
//提示
printf("请输入1、2、3,1:两个数的最大值,2:两个数得最小值,3:两个数得和\n");
scanf("%d",&number);
//判断函数指针指向那个函数地址
switch(number)
{
case 1:
pFunction=getMax;
break;
case 2:
pFunction=getMin;
break;
case 3:
pFunction=getSum;
break;
}
//输出
result=dataHandler(a,b,pFunction);
printf("result=%d",result);
return 0;
}
输出结果: