题目:
设计一个名为calculate()的函数,它接受两个double值和一个指向函数的指针,而被指向的函数接受两个double参数,并返回一个double值。calculate()函数的类型也是double,并返回被指向的函数使用calculate()的两个double参数计算得到的值。例如,假设add()函数的定义如下:
double add(double x,double y)
{
return x + y;
}
则下述代码中的函数嗲用将导致calculate()把2.5和10.4传递给add()函数,并返回add()的返回值
double q = calculate(2.5,10.4,add);
请编写一个程序,它调用上述两个函数和至少另一个与add()类似的函数。该程序使用循环让用户成对地输入数字。对于没对数字,程序都使用calculate()来调用add()和至少一个其他的函数。如果可以尝试创建一个指针数组,其中的指针指向add()样式的函数,并编写一个循环,使用这些指针连续让calculate()调用这些函数。提示: 下面是声明这种指针数组的样式,其中包含三个指针:
double (*pf[3])(double,double);
可以采用数组初始化语法,并将函数名作为地址来初始化这样的数组。
源代码:
#include <iostream>
double add(double x, double y);
double sub(double x, double y);
double mul(double x, double y);
double calculate(double x, double y, double (*ptr)(double, double));
int main()
{
using namespace std;
double (*pf[3])(double, double) = { add,sub,mul };
for (int i = 0; i < 3; i++)
{
cout << "第 " << i + 1 << " 次调用函数返回数值: " << calculate(2.5, 10.4, pf[i]) << endl;
}
return 0;
}
double add(double x, double y)
{
return x + y;
}
double sub(double x, double y)
{
return x - y;
}
double mul(double x, double y)
{
return x * y;
}
double calculate(double x, double y, double (*ptr)(double, double))
{
return (*ptr)(x, y);
}
演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈