c语言用devc++如何根据这个要求解定积分

积分上限四分之π 积分下限负四分之π 被积函数tanx 积分上限e 积分下限负e 被积函数e**x
要求一:写两个子函数分别实现;用矩形法近似计算定积分断点分
11,101,1001三种情况计算,并比较计算结果。要求二:用梯形法完成上述定积分计算。两种方法都要有谢谢大佬

你好同学,代码供参考:
矩形法和梯形法

#include<stdio.h>
#include<math.h>
double const pi = 3.141592653; 
double f(double x){
    //return tan(x); //可以改成exp(x) 
    return exp(x); 
}
// 矩形法 
double rect(double a, double b, int n){
    int i;
    double h, s;
    h = (b-a)/(n-1);
    s = 0;
    for(i=0; i<n-1; i++){
        s+=f(a+i*h)*h;
    }
    return s;
}
// 梯形法 
double trapz(double a, double b, int n){
    int i;
    double h,s;
    s = 0;
    h = (b-a)/(n-1);
    for(i=1;i<n-1;i++){
        s+=f(a+i*h)*h;
    }
    s+=(f(a)+f(b))*0.5*h;
    return s;
}
int main(){
    double a,b;
    double s; //面积 
    // 上下限 
    //a = -pi/4;
    //b = pi/4;
    a = -exp(1);
    b = exp(1);
    s = rect(a, b, 11);//矩形法,可以改成101、1001 
    printf("矩形法面积:%lf\n",s); 
    s = trapz(a, b, 11);//梯形法,可以改成101、1001 
    printf("梯形法面积:%lf\n",s); 
    return 0;
}

我这里拿y=exp(x)从-e到e积分作为例子,然后分别用矩形法和梯形法计算,分11段结果如下:

矩形法面积:11.356665
梯形法面积:15.458083

因为实际的积分值为15.0883,可见梯形法的精度比矩形法要高(在相同划分段数的情况下)