#include<stdio.h>
#include<math.h>
double integral(double a,double b,double (*p)(float ));
double fsin(float );
double fcos(float );
double fexp(float );
int main()
{
double a,b,sum;
int n;
double x,p;
printf("1:sin(x)\n2:cos(x)\n3:exp(x)\n0:结束\n");
printf("请输入被积函数的种类(输入序号):\n");
scanf("%d",&n);
while(n<0||n>3)
{
printf("输入的序号不正确,请重新输入:\n");
scanf("%d",&n);
}
printf("输入积分的上下限:\n");
scanf("%lf%lf",&a,&b);
switch(n)
{
case 1:
sum=integral(a,b,fsin);break;
case 2:
sum=integral(a,b,fcos);break;
case 3:
sum=integral(a,b,fexp);break;
case 0:
return 0;
}
printf("第%d种函数在(%g,%g)范围内的定积分为:%f\n",n,a,b,sum);
}
double integral(double a,double b,double (*p)(float ))
//指向函数的指针作为参数
{
double s=(b-a)/1000;
double x,sum=0;
for(x=a;x<b;x+=s)
sum+=(*p)(x)*s;
return sum;
}
double fsin(float x1){
return(sin(x1));
}
double fcos(float x1){
return(cos(x1));
}
double fexp(float x1){
return(exp(x1));
}