1 概述
写一个用矩形法求定积分的通用函数,分别求sinx,cosx,expx从0到1的定积分(指针方法处理)
2 解法
//C程序设计第五版(谭浩强)
//章节:第八章 善于利用指针
// 所有练习均要求用指针方法处理
//练习8.13 写一个用矩形法求定积分的通用函数,分别求sinx,cosx,expx从0到1的定积分
#include <stdio.h>
#include <math.h>
int main()
{
float definite_integral(float (*p)(float), float m, float n);
float f_sin(float x);
float f_cos(float x);
float f_exp(float x);
float m=0, n=1, (*p)(float); // 指针函数
p = f_sin;
printf("sinx从%1.0f到%1.0f的定积分结果为:\n%f\n\n", m, n,definite_integral(p, m, n));
p = f_cos;
printf("cosx从%1.0f到%1.0f的定积分结果为:\n%f\n\n", m, n,definite_integral(p, m, n));
p = f_exp;
printf("expx从%1.0f到%1.0f的定积分结果为:\n%f\n\n", m, n,definite_integral(p, m, n));
return 0;
}
float definite_integral(float (*p)(float), float m, float n)
{
int i;
float x, sum = 0;
x = (n-m)/20; // 分成20份
for(i=0;i<20;i++){
sum += x*p(m+x*i);
}
return sum;
}
float f_sin(float x)
{
return sin(x);
}
float f_cos(float x)
{
return cos(x);
}
float f_exp(float x)
{
return exp(x);
}