请问这里哪里错了???
#include<stdio.h>
#include<math.h>
void main()
{
float integral(float a,float b,float(*p)(float x) );
float f1(float x);
float f2(float x);
float f3(float x);
float f4(float x);
float f5(float x);
float x;
float a=5,b=7;
float result;
printf("请输入x的值:\n");
scanf("%f",&x);
result=integral(a,b,f1);
result=integral(a,b,f2);
result=integral(a,b,f3);
result=integral(a,b,f4);
result=integral(a,b,f5);
}
float f1(float x)
{
float s;
s=1+x;
return s;
}
float f2(float x)
{
float s;
s=2*x+3;
return s;
}
float f3(float x)
{
float s;
s=(float)exp(x)+1; //e的x次方+1
return s;
}
float f4(float x)
{
float s;
s=(1+x)*(1+x);
return s;
}
float f5(float x)
{
float s;
s=x*x*x;
return s;
}
float integral(float a,float b,float(*p)(float x) )
{
float i,result,x;
for(i=a;i<=b;i++)
{
result+=(*p)(x);
}
return result;
printf("结果是: %3.3f",result);
}
对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:
其中,f(x)为被积函数,为横坐标的两点间的间隔,
越小,则计算出的结果越精确。
对于求解此类问题可以使用C语言中的回调函数编写通用的计算函数,代码如下:
#include <stdio.h>没呢。。不过我在主函数那里声明了喔。。
追答我的意思是,你的声明在下面,可上面调用的时候,参数还没声明啊,我是这个意思
追问噢。。原来这样啊。。
追答你改好了,哪里错了呢
追问最后 return result; 那里错了,我先跳了出来所以结果输不出来,谢谢你帮忙啦。。。
追答啊,这到没事,不过,那种声明在下面的语法居然没错?我还真没那样学过。恩,C中,return是结束语。这到是,当时只顾看上面那些,没看下面,呵呵。我也受教了。