十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个需要用函数指针实现.
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了惠安免费建站欢迎大家使用!
这几个函数都是 double sin(double)的形式, 所以函数指针为 double(*pfun)(double)
于是 结果如下:
#include math.h
double execute (double x, double (*func)(double))
{
double temp;
temp = 0;//这里的temp没有实际作用.
return ((*func)(x));
}
main()
{
double (*function[3])(double);
double x=1;
int i;
function[0]=sin;
function[1]=cos;
function[2]=tan;
for (i=0; i3; i++)
printf("func No: %d---%f\n", i+1, execute(x, function[i]));
}
前面的 tran
double tran(double (*)(double),double (*)(double),double);
是 tran 函数的声明。告诉编译器有一个这样的函数,声明函数的格式
返回类型 函数名( 参数1类型,参数2类型 );
后边的';'是格式要求
后面的 tran
double tran(double (*f1)(double),double (*f2)(double),double x)
{return (*f1)(x)/(*f2)(x);}
是tran 函数的实现。
这里 tran 函数 有三个参数,其中
第一个参数: 返回类型为 double 指向 带有 一个 double 参数 的 函数的指针;
第二个参数: 返回类型为 double 指向 带有 一个 double 参数 的 函数的指针;
第三个参数: double
参数1 参数2 传递的不是普通的变量 而是一个函数的入口
调用
y=tran(sin,cos,v); //* *//
是说 tran 的 参数1 参数2 在函数的实现部分 形参1 *f1 形参2 *f2 分别用
double sin(double) 和 double cos(double) 两个实际的函数代替
(*f1)(x)/(*f2)(x) 实际计算的是 sin(v)/cos(v)
计算的结果是 tan(v)
如果要计算 cot(v)
y=tran(cos,sin,v)
你也可以编写自己的 函数作为实参调用 tran
double myfun1(double x)
{
return exp(-x);
}
double myfun2(double x)
{
return x*x;
}
调用
y=tran(myfun1,myfun2,v);
这个调用计算的是 exp(-v)/(v*v)
x 是 一 double型 数值参数
void tran(int*); ---- 声明tran函数,返回值是void,参数是int *类型
tran(a); -----调用tran函数,参数是数组a