📄 function.cpp
字号:
//9.设计一个名为calculate()的函数,它接受两个double值和一个指向函数
//的指针,而被指向的函数接受两个double参数,并返回一个double值、
//calculate()函数的类型也是double,并返回被指向的函数使用calculate()
//的两个double参数计算得到的值。例如,假如add()函数的定义如下:
// double add(double x,double y)
// {
// return x + y;
// }
// 则下述代码中的函数调用:
// double q = calculate(2.5,10.4,add);
// 将导致calculate()把2.5和10.4传递给add()函数,并返回add()的返回值(12.9).
// 请编写一个程序,它调用上述两个函数和至少另一个与add()类似的函数。
// 如果读者爱冒险,可以尝试创建一个指针数组,其中的指针指向add()样式的函数,
// 并编写一个循环,使用这些指针连续让calculate()调用这些函数。提示:
// 下面是声明这种指针数组的方式,其中包含3个指针:
// double (*pf[3]) (double,double);
// 可以采用数组初始化句法,并将函数名作为地址来初始化这样的数组。
#include <iostream>
double add ( double x, double y); // +
double subtract( double x, double y); // -
double multiply( double x, double y); // *
double divide ( double x, double y); // /
typedef double (*pf)(double,double); //pf函数指针?
double calculate( double x, double y, double (*pf) (double,double) );
using namespace std;
int main()
{
using namespace std;
double a=0.0;
double b=0.0;
pf func[4]={add,subtract,multiply,divide}; //函数指针数组
cout<<"请输入两个double数: ";
while(cin>>a>>b)
{
for(int i=0;i<4;i++)
{
cout<<calculate(a,b,func[i])<<endl;
}
cout<<"请再输入两个double数: ";
}
cout<<"输入有误,已退出。"<<endl;
return 0;
}
double add ( double x, double y) //加
{
cout<<x<<"+"<<y<<"=";
return x+y;
}
double subtract( double x, double y) //减
{
cout<<x<<"-"<<y<<"=";
return x-y;
}
double multiply( double x, double y) //乘
{
cout<<x<<"*"<<y<<"=";
return x*y;
}
double divide ( double x, double y) //除
{
if(0==y)
{
cout<<"被除数不能为零!";
return x/y; //为了显示后果,所以
}
else
{
cout<<x<<"/"<<y<<"=";
return x/y;
}
}
double calculate( double x, double y, double (*pf) (double,double) )
{
return pf(x,y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -