数值积分(函数指针的运用)
#include <stdio.h>
#include <math.h>
//编写一个函数calc(f,a,b),求函数f(x)在[a,b]上的数值积分(函数指针的运用),以f(x)=x^2,范围为[0,1]和f(x)=sinx/x,范围为[1,2]为例子
int main()
{
double f1(double x);
double f2(double x);
double calc(double (*f)(double),double a,double b);
printf("f(x)=x^2在范围[0,1]的数值积分结果为%.3f\n",calc(f1,0.0,1.0));
printf("f(x)=sinx/x在范围[0,1]的数值积分结果为%.3f\n",calc(f2,1.0,2.0));
return 0;
}
double f1(double x)
{
return x*x;
}
double f2(double x)
{
return (sin(x)/x);
}
double calc(double (*f)(double),double a,double b)
{
return ((b-a)/2)*((*f)(a)+(*f)(b));
}
将一个函数作为另一个函数的某个参数传入计算,使后者通用性增强。
还没有评论,来说两句吧...