1、复合梯形公式:
#include"stdio.h"
#include"math.h"
 
double f1(double x)
{
   return x/(4+x*x);
}
 
double f2(double x)
{
   return sqrt(4-(sin(x)*sin(x)));
}
 
double Tixing(f,a,b,n)
   double (*f)();
   int n;
   double a,b;
{
   int k;
   double h,x,s;
   h=(b-a)/n;
   x=a;
   s=f(x)+f(b);
   for(k=1;k<n;k++)
   {
     x+=h;
     s+=2*f(x);
   }
   s*=h/2;
   return s;
}
 
main()
{
   double a,b,s1,s2;
   int n;
   a=3;b=6;n=8;
   s1=Tixing(f1,a,b,n);
   a=0;b=3.1415926/6;n=6;
   s2=Tixing(f2,a,b,n);
   printf("T8=%f\n",s1);
   printf("T6=%f\n",s2);
}
 
2、复合Simpson公式:
#include"stdio.h"
#include"math.h"
 
double f1(double x)
{
   return x/(4+x*x);
}
 
double f2(double x)
{
   return sqrt(4-(sin(x)*sin(x)));
}
 
double Simpson(f,a,b,n)
   double (*f)();
   int n;
   double a,b;
{
   int k;
   double h,x,s;
   h=(b-a)/(2*n);
   x=a;
   s=f(x)-f(b);
   for(k=1;k<=n;k++)
   {
     x+=h;s+=4*f(x);
     x+=h;s+=2*f(x);
   }
   s*=h/3;
   return s;
}
 
main()
{
   double a,b,s1,s2;
   int n;
   a=3;b=6;n=4;
   s1=Simpson(f1,a,b,n);
   a=0;b=3.1415926/6;n=3;
   s2=Simpson(f2,a,b,n);
   printf("s4=%f\n",s1);
   printf("s3=%f\n",s2);
}