C语言-函数指针-有两个整数a,b,由用户输入1、2、3, 如输入的是1,程序就输出a和b的最大值,如输入的是2,程序就输出a和b的最小值,如输入的是3,程序就输出a和b的和

该程序定义了三个函数getMax、getMin和getSum,分别计算两个数的最大值、最小值和和。在main函数中,通过用户输入的数字1、2或3,动态选择调用哪个函数,并利用函数指针pFunction实现回调。最后,dataHandler函数根据pFunction的指向执行相应的计算并返回结果。
摘要由CSDN通过智能技术生成

要求:必须要求函数指针变量,回调函数

#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;
}

输出结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值