题目:有两个整数,输入a和b。用户输入1~3,当输入1时,给出a和b中的最大值,当输入2时,给出最小值,当输入3时,给出和。
//用指向函数的指针做函数参数
#include <stdio.h>
void main(){
int max(int x,int y);
int min(int x,int y);
int add(int x,int y);
int fun(int x,int y,int (*p)(int,int)); //函数声明一下好接下来调用
int a,b,i;
printf("please input i,a,b by order(i in range (1,3)):");
scanf("%d%d%d",&i,&a,&b);
if(i==1)
fun(a,b,max); //这里调用就方便了
if(i==2)
fun(a,b,min);
if(i==3)
fun(a,b,add);
}
int fun(int x,int y,int (*p)(int,int)){ //在主函数中调用的时候就可以轻松一点,直接按照模式选择
int z;
z=(*p)(x,y); //这里是调用下面的函数
printf("%d\n",z);
}
int max(int x,int y){
int z;
z=x>y?x:y;
printf("%d and %d,the max is:",x,y);
return z;
}
int min(int x,int y){
int z;
z=x<y?x:y;
printf("%d and %d,the min is:",x,y);
return z;
}
int add(int x,int y){
int z;
z=x+y;
printf("%d and %d,the add is:",x,y);
return z;
}
运行结果:
please input i,a,b by order(i in range (1,3)):1 5 3
5 and 3,the max is:5
Press any key to continue
please input i,a,b by order(i in range (1,3)):2 7 4
7 and 4,the min is:4
Press any key to continue
please input i,a,b by order(i in range (1,3)):3 6 9
6 and 9,the add is:15
Press any key to continue