C语言 设一个函数process,调用它时,实现不同功能。

//凯鲁嘎吉 - 安科网http://www.cnblogs.com/kailugaji/

输入a, b,第一次调用process找最大值,第二次调用process找最小值,第三次调用求和。

方法1:

#include<stdio.h>
 //求最大
 int max(int x,int y){
     return x>y?x:y;
 }
 //求最小
 int min(int x,int y){
     return x<y?x:y;
 }
 //求和
 int add(int x,int y){
     return x+y;
 }
 //类似多态
 void process(int x,int y,int (*fun)){
     int z;
     if(fun==max)
         z=max(x,y);
     if(fun==min) 
         z=min(x,y);
     if(fun==add)
         z=add(x,y);
     printf("%d\n",z);
 }
 
 void main(){
     int a,b;
     printf("Please input a and b:\n");
     scanf("%d %d", &a, &b);
     printf("max=");
     process(a,b,max);
     printf("min=");
     process(a,b,min);
     printf("sum=");
     process(a,b,add);
 }

方法2:

#include<stdio.h>
 //求最大
 int max(int x,int y){
     return x>y?x:y;
 }
 //求最小
 int min(int x,int y){
     return x<y?x:y;
 }
 //求和
 int add(int x,int y){
     return x+y;
 }
 
 void main(){
     int a,b;
     int (*process)(int, int);
 
     printf("Please input a and b:\n");
     scanf("%d %d", &a, &b);
 
     process=max;
     printf("max=%d\n",process(a,b));
 
     process=min;
     printf("min=%d\n",process(a,b));
 
     process=add;
     printf("sum=%d\n",process(a,b));
 }

结果为:

C语言 设一个函数process,调用它时,实现不同功能。

相关推荐