C++ 简单题目,关于用函数的指针调用函数,比较两个数大小,求大神看看。

用这三个函数写一个小程序比较大小
int min(int a, int b); // Returns the maximum of a and b
int max(int a, int b); // Returns the minimum of a and b
int callfn(int(*f)(int,int),int a,int b) ; // call function f and pass parameters a and b in order

输出要求在主函数里做。
代码如下:

#include <iostream>
using namespace std;

int min(int a, int b) // Returns the maximum of a and b
{
if(a <= b)
{
return a;
}
else
{
return b;
}
}
int max(int a, int b) // Returns the maximum of a and b
{
if(a <= b)
{
return b;
}
else
{
return a;
}
}
int callfn(int(*f)(int,int),int a,int b) // call function f and pass parameters a and b in order
{
return f;
}

#ifndef WEBSUBMIT
int main()
{
int (*f)(int,int);
int a = 43;
int b = 56;
f = &min;
cout << min(43,56) << endl;
f = &max;
cout << max(43,56) << endl;
}
#endif //WEBSUBMIT
我自己推测问题主要出在这里:

int callfn(int(*f)(int,int),int a,int b) // call function f and pass parameters a and b in order
{
return f;
}
这里不知道怎么改,如果删除return;

程序在机器上测试的时候会显示:

Testing program2-1 - failed!
diff <your-output> <expected-output>
1c1
< max 43
---
> max 56

如果改成return 0;

测试的时候输出值就都是0了。

请问要看什么呢?
第三个函数返回值不是Int型吗,改成return f(a,b);
类外建议把main函数定义为void类型,谢谢~追问

int callfn(int(*f)(int,int),int a,int b) // call function f and pass parameters a and b in order
{
return f;
}

好像是这里不对,具体怎么不对,求指点。

追答

f是一个函数指针,你的函数是int型的,返回值和函数的类型不匹配

追问

您的回答圆满的解决了我的问题,十分感谢!

追答

要return一个int型的,改成return f(a,b)就能通过了

追问

您的回答圆满的解决了我的问题,十分感谢!
但是main函数我改成void main()之后编译通不过,我就又该回去了。
但是其他都没问题,测试也圆满通过,谢谢。

温馨提示:内容为网友见解,仅供参考
无其他回答

用c++编写一个程序,用指向函数的指针实现求两个实数中的较大値和较小...
using namespace std;int max(int num1, int num2){ return (num1>=num2 ? num1 : num2);} int min(int num1, int num2){ return (num1<=num2 ? num1 : num2);} main(){ int *fun(int, int);int a = 10, b = 20;fun = max;count<<"the larger integer is: "...

C++编程:定义一个函数,比较两个数的大小,形参分别使用指针和引用_百 ...
include<iostream> include<stack> using namespace std;float compare(float *a,float &b) \/\/a为指针,b为引用 { if (*a>b) return *a;else return b;} int main(){ float x,y;cin>>x>>y;cout<<"The max="<<compare(&x,y)<<endl;return 0;} ...

关于C C++ 的指针和函数运用的区别比较 高手请赐教!
函数指针是指向函数的指针变量。每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。函数指针”是指向函数的指针变量,因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。指针函数是指带指针的函数,即本质是一个函数。我们知道函数都又有返回类...

c++ :用调用函数,实现从两个数中输出较大者(要求用指针变量传递参数值...
include <iostream>using namespace std;int maxNum(int *a,int *b){ return *a>*b?*a:*b;}int main(){ int a=1; int b=2; cout<<maxNum(&a,&b); return 0;}

2.c++编程 :利用指针来比较两个字符串的大小,不能使用strcmp()函数...
include <string.h> int strncmp1(char* a, char* b, int n){ int i = 0;if (a==0 || b==0)return 0;\/* 空指针不作处理*\/ while (i<n && *(a+i) && *(b+i)){ if (*(a+i)>*(b+i))return 1;if (*(a+i)<*(b+i))return -1;i++;} return 0;} main()...

用C++,定义一个函数指针数组,用该数组完成对于两个实数(加、减、乘...
int sub(int x, int y) { return x - y;} int mul(int x, int y) { return x * y;} int div(int x, int y) { return x \/ y;} int (*p[])(int, int) ={add, sub, mul, div};void menu() { printf("***\\n");printf("please choose a function:\\n"); print...

C++指针变量进行函数调用的问题
pf=sort ; \/\/指针指向sort函数,可以通过pf指针来引用sort函数了(实际上这里是将sort函数的地址 值赋值给了pf,如果不理解这个,说明对指针的理解还不够清楚)pf(a,b,c) ; \/\/通过pf调用sort函数,这里等价于sort(a,b,c);viod sort (int x,int y,int z) \/\/这里多了个分号 { int ...

我是个c++初学者,感觉学到指针这比较难,尤其是2级指针,哪为大虾能给...
可以把一个指针声明成为一个指向函数的指针。intfun1(char*,int); int(*pfun1)(char*,int); pfun1=fun1; ... ... inta=(*pfun1)("abcdefg",7);\/\/通过函数指针调用函数。 可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为实参。 例十三: intfun(char*); inta; charstr[]="ab...

C++考试题目求解答解析,小白求解,30分送上!
C语言唯独不能做的事情就是一次返回多个值,要想返回多个值只能通过结构体,指针等间接的办法。第11题:a.内联函数 的作用就是提高效率的,而且必须满足简单的特点;b.重载函数 的含义是同名的函数用不同的参数 c.递归调用 是指自己直接或间接调用自己 d.嵌套调用……这个就是指函数一层一层调...

C++ 实现库函数strcmp()的功能 使用指针逐个比较字符,直到比较到不同的...
不使用库函数,编写函数int strcmp(char *source, char *dest),若相等返回0,否则返回-1 int strcmp(char *source, char *dest){ assert(source != NULL && dest != NULL);while(*source++==*dest++){ if(*source=='\\0'&&*dest=='\\0')return 0;} return -1;} ...

相似回答