|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- void main()
- { int fun(int a,int b,int (*p)(int,int));
- int max(int a,int b);
- int min(int a,int b);
- int (*p)(int,int);
- int a=54,b=1351,c=2;
- if(1==c)
- {
- fun(a,b,max);
- }
- else if (c==2)
- {
- fun(a,b,min);
- }
-
- }
- int max(int a,int b)
- {
- int max,c;
- if(a>b)
- {
- max=a;
- }
- else max=b;
- return max;
- }
- int min(int a,int b)
- {
- int min,c;
- if(a>b)
- {
- min=b;
- }
- else min=b;
- return min;
- }
- int fun(int a,int b,int (*p)(int,int))
- {int result;
- result=(*p)(a,b);
- printf("%d\n",result);
- return 0;
- }
复制代码
语法没问题,但是输出 怎么样都是1351,请问哪里有问题
本帖最后由 jackz007 于 2019-3-15 21:02 编辑
- int min(int a , int b)
- {
- int min , c ;
- if(a > b) min = b ;
- else min = b ; // 错误点
- return min ;
- }
复制代码
简化了一下代码,运算结果正确,楼主可以参考:
- #include <stdio.h>
- max(int a , int b)
- {
- return a > b ? a : b ;
- }
- min(int a , int b)
- {
- return a > b ? b : a ;
- }
- fun(int a , int b , int (* p)(int , int))
- {
- return((* p)(a , b)) ;
- }
- main(void)
- {
- int a = 54 , b = 1351 ;
- printf("max = %d\n" , fun(a , b , max)) ;
- printf("min = %d\n" , fun(a , b , min)) ;
- }
复制代码
|
|