用C写了个用梯形法求定积分的程序
编译能通过,可用具体实例时出现奇妙数字,
初步怀疑是数字类型转换引起的错误,请大家帮忙!
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main( )
{
float integral(float (*p)(float),float a, float b,int n);
float (*p)(float)=NULL;
float a,b,c;
float fsin(float);
float fcos(float);
float fexp(float);
int n=10;
printf("Input a , b:");
scanf("%f,%f",&a,&b);
p=fsin;
c=integral(p,a,b,n);
printf("The integral of sin(x) is:%f\n",c);
p=fcos;
c=integral(p,a,b,n);
printf("The integral of cos(x) is:%f\n",c);
p=fexp;
c=integral(p,a,b,n);
printf("The integral of exp(x) is:%f\n",c);
}
float integral(float (*p)(float),float a, float b,int n)
{
float s,h;
s=0;
h=(b-a)/n;
for(int i=0;i<n;i++)
{
s=s+((*p)(a+i*h)+(*p)(a+(i+1)*h))*h/2;
}
return(s);
}
float fsin(float x)
{
return (float)sin((float)x);
}
float fcos(float x)
{
return (float)cos((float)x);
}
float fexp(float x)
{
return (float)exp((float)x);
}
[align=right][color=#000066][此贴子已经被作者于2007-5-29 15:41:00编辑过][/color][/align]