有关c语言用梯形法求定积分的一个程序,请帮忙修改

#include<stdio.h>
#include<math.h>
double f(double x)
{
return sqrt(4-x*x);
}
main()
{
double a,b,s1,s2,s,h,m=1E-6;
int n,i;
printf("请输入积分下限a和积分上限b\n");
scanf("%lf""%lf",&a,&b);
s2=0;n=100;
do
{s1=s2;n=2*n;h=(b-a)/n;i=1;s2=0;
do
{s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;
i=i+1;
}
while(i<=n);
}
while((fabs(s1-s2))>(m*(fabs(s2)-fabs(s1))));
printf("f(x)在[a,b]上的定积分为%lf",s2);
return 0;
}

#include<stdio.h>
#include<math.h>
double f(double x)
{
return sqrt(4-x*x);
}
main()
{
double a,b,s1,s2,s,h,m=1E-6;
int n,i;
printf("请输入积分下限a和积分上限b\n");
scanf("%lf%lf",&a,&b);
s2=0;
n=10000;
// do
{
s1=s2;
n=2*n;
h=(b-a)/n;
i=1;
s2=0;
do
{
s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;
i=i+1;
}
while(i<=n);
}
// while((fabs(s1-s2))>(m*(fabs(s2)-fabs(s1))));
printf("f(x)在[a,b]上的定积分为%.10lf",s2);
return 0;
}

温馨提示:答案为网友推荐,仅供参考