【总结】
1.函数指针的使用方式double (*f)(doube);
2.循环的次数问题:每循环依次就会求得一个梯形的面积
3.加分号表示函数声明,如:
double f1(double x);
double f2(double x);
double f3(double x);
【代码】
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1000
double f1(double x)
{
return x * x*x + 2 * x*x - x + 2;
}
double f2(double x)
{
return 2*x - 3;
}
double f3(double x)
{
return x * x - 5;
}
double DefineIntegral(double(*f)(double), double a, double b)
{
double y1, y2, x, delta, sum;
int i;
delta = fabs(b - a) / N;
sum = 0;
x = a;
for (i = 0; i < N; ++i)
{
y1 = f(x);
y2 = f(x + delta);
sum += (y1 + y2)*delta / 2;
x = x + delta;
}
return sum;
}
int main()
{
printf("%lf\n", DefineIntegral(f2, -1, 1));
printf("%lf", DefineIntegral(f3, 0, 1));
return 0;
}
【结果】