#include
double fun1(double x)
{
return sin(x);
}
double fun2(double x)
{
return cos(x);
}
double fun3(double x)
{
return exp(x);
}
double integral(double a,double b,double (*p)(double))
{
double step=(b-a)/10000;
double x,sum=0;
for(x=a;xsum+=step*(*p)(x);
return sum;
}
main()
{
double a,b,sum,(*p)();
int type;
while(1)
{
printf("1:sin(x)\n2:cos(x)\n3:exp(x)\n0:結(jié)束\n");
printf("請選擇被積函數(shù)的種類(輸入種類前的序號):\n");
scanf("%d",&type);
while(type<0||type>5)
{
printf("輸入的序號不正確,請重新輸入:");
scanf("%d",&type);
}
switch(type)
{
case 1:p=fun1;break;
case 2:p=fun2;break;
case 3:p=fun3;break;
case 0:return 0;
}
printf("請輸入積分上下限:\n下限a:");
scanf("%lf",&a);
printf("上限b:");
scanf("%lf",&b);
sum=integral(a,b,p);
printf("第%d種函數(shù)在(%g,%g)范圍內(nèi)的定積分為:%f.\n",type,a,b,sum);
}
}