C語言 設一個函數process,調用它時,實現不同功能。


//凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/

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

方法1:

 1 #include<stdio.h>
 2 //求最大
 3 int max(int x,int y){
 4     return x>y?x:y;
 5 }
 6 //求最小
 7 int min(int x,int y){
 8     return x<y?x:y;
 9 }
10 //求和
11 int add(int x,int y){
12     return x+y;
13 }
14 //類似多態
15 void process(int x,int y,int (*fun)){
16     int z;
17     if(fun==max)
18         z=max(x,y);
19     if(fun==min) 
20         z=min(x,y);
21     if(fun==add)
22         z=add(x,y);
23     printf("%d\n",z);
24 }
25 
26 void main(){
27     int a,b;
28     printf("Please input a and b:\n");
29     scanf("%d %d", &a, &b);
30     printf("max=");
31     process(a,b,max);
32     printf("min=");
33     process(a,b,min);
34     printf("sum=");
35     process(a,b,add);
36 }

方法2:

 1 #include<stdio.h>
 2 //求最大
 3 int max(int x,int y){
 4     return x>y?x:y;
 5 }
 6 //求最小
 7 int min(int x,int y){
 8     return x<y?x:y;
 9 }
10 //求和
11 int add(int x,int y){
12     return x+y;
13 }
14 
15 void main(){
16     int a,b;
17     int (*process)(int, int);
18 
19     printf("Please input a and b:\n");
20     scanf("%d %d", &a, &b);
21 
22     process=max;
23     printf("max=%d\n",process(a,b));
24 
25     process=min;
26     printf("min=%d\n",process(a,b));
27 
28     process=add;
29     printf("sum=%d\n",process(a,b));
30 }

結果為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM