使用指向函数的指针实现。
#include<stdio.h>
#include<math.h>
double integral(double(*f)(double),double a,double b);
int main()
{
double y1,y2,y3;
y1=integral(sin,0.0,1.0);
y2=integral(cos,-1.0,1.0);
y3=integral(exp,0.0,2.0);
printf("%lf\n%lf\n%lf\n",y1,y2,y3);
}
double integral(double(*f)(double),double a,double b)
{
double s,h;
int n=1000,i;
h=(b-a)/n;
s=((*f)(a)+(*f)(b))/2.0;
for(i=0;i<n;i++){
s+=(*f)(a+i*h);
}
return s*h;
}