写一个通用函数,用来求sinx、cosx、e ^ x、x ^ 2的定积分
#include<stdio.h>#include<math.h>float fsin(float x){return sin(x);}float fcos(float x){return cos(x);}float fe(float x){return exp(x);}float fpf(float x){return pow(x,2);}//以函数指针作为形参,即可实现函数名作为参数,由另一个函数调用float fun(float a,float b,int n,float (*p)(float x)){//积分的上限,下限,区间划分的份数以及被积函数的指针float i;float h=(b-a)/n;float s=0;for(i=a;i<b;i+=h){s=s+((p(i)+p(i+h))*h)/2;//梯形法求面积 }return s;}void main(){float a[4],b[4],r[4];printf("请输入求正弦函数定积分的上限a和下限b\n");scanf("%f%f",&a[0],&b[0]);r[0]=fun(a[0],b[0],50,fsin);printf("结果为%f\n",r[0]);printf("请输入求余弦函数定积分的上限a和下限b\n");scanf("%f%f",&a[1],&b[1]);r[1]=fun(a[1],b[1],50,fcos);printf("结果为%f\n",r[1]);printf("请输入求以e为底的指数函数定积分的上限a和下限b\n");scanf("%f%f",&a[2],&b[2]);r[2]=fun(a[2],b[2],50,fe);printf("结果为%f\n",r[2]);printf("请输入求X^2函数定积分的上限a和下限b\n");scanf("%f%f",&a[3],&b[3]);r[3]=fun(a[3],b[3],50,fpf);printf("结果为%f\n",r[3]);}