C++题目看不懂,希望高手可以解释一下!结果是怎么算出来的,谢谢!

#include<iostream>usingstd::cin;usingstd::cout;usingstd::endl;floatf1(int);floatf2(in... #include<iostream>
using std::cin;
using std::cout;
using std::endl;
float f1(int);
float f2(int);
double twice(float (*)(int),int);
int main()
{
int a=3;
int b=5;
cout<<twice(f1,a)的值是:"
<<twice(f2,a)<<endl;
cout<<"twice(f2,b)的值是:"
<<twice(f2,b)<<endl;
}
float f1(int n)
{return float (n*n);}
float f2(int n)
{return float (n*n*n);}
double twice(float (*pf)(int),int n)
{return 2.0*double(pf(n));
}
操作结果:
twice(f1,a)的值是:18
twice(f2,b)的值是:250
展开
 我来答
dalewzm
2012-03-19 · TA获得超过105个赞
知道答主
回答量:128
采纳率:0%
帮助的人:157万
展开全部
楼主代码中一处应该是打错了,cout<<twice(f1,a)<<endl;结果才是18,twice函数的形参两个,一个是函数指针,一个是int变量,而函数名就是函数地址,twice 函数就是返回2.0*所传入的函数(n)算出来的值,double()是强制类型转化,twice(f1,a)就是f1(a)=9,然后2*9=18,twice(f2,b)就是f2(b)=125,2.0*125=250
roaming_sheep
2012-03-19 · TA获得超过699个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:708万
展开全部
f1返回 平方值
f2返回 三次方值

twice(f1,a) 返回 a的平方的2倍( 3*3 *2 = 18) ,其中 f1 参数决定了是平方
twice(f1,a) 返回 a的三次方的2倍 ( 5*5*5 *2 = 250),其中 f2参数决定了是三次方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户89922
2012-03-19
知道答主
回答量:11
采纳率:0%
帮助的人:1.8万
展开全部
我用的是VS2005。我的输出正确,a=2,b=12。输出x=6。
如图:
我觉得你的C平台有点旧,可能有一些问题,有些警告没报出来。
追问
...我的是VC+++++++++6.0   关键是我想知道怎么算的  就是过程啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式