定积分函数 float integral() 谭浩强 C程序设计 第二版245页遗留问题,不会做的请看过来······
谭浩强 C程序设计 第二版245页曾遗留一个问题,就是编写一个定积分函数,求五个函数的定积分,给出的提示是编写一个通用函数,其形式是float integral(float a,float b,float(*fun)(float)).小可现在正研究C语言呢,就顺便把这个程序编了出来。希望有用的着的童鞋拿去看~~~~~~#include<stdio.h>
#include<math.h>
main()
{ float f1(float);
float f2(float);
float f3(float);
float f4(float);
float f5(float);
float integral(float,float,float(*fun)());
float a,b;
printf("enter a and b:");
scanf("%f,%f",&a,&b);
printf("\n函数(1+x)在%4.1f到%4.1f的积分是:",a,b);
integral(a,b,f1);
printf("\n函数(2*x+3)在%4.1f到%4.1f的积分是:",a,b);
integral(a,b,f2);
printf("\n函数(e^x+1)在%4.1f到%4.1f的积分是:",a,b);
integral(a,b,f3);
printf("\n函数(x^2+2*x+1)在%4.1f到%4.1f的积分是:",a,b);
integral(a,b,f4);
printf("\n函数(x^3)在%4.1f到%4.1f的积分是:",a,b);
integral(a,b,f5);
}
f1(float x)
{
return 1+x;
}
f2(float x)
{ return 2*x+3;
}
f3(float x)
{return exp(x)+1;
}
f4(float x)
{return x*x+2*x+1;
}
f5(float x)
{return x*x*x;
}
integral(float m,float n,float (*fun)(float))
{float sum=0.0;
float length=0.000001;
float z=m;
while(z<n)
{sum+=((*fun)(z)+(*fun)(z+length))*length/2; /*这里可以替换为sum+=((*fun)(z+length))*length; */
z+=length; /*当然也可以替换为sum+=((*fun)(z))*length; */
}
printf("%6.3f\n",sum);
}