C语言上机题 梯形法求积分
程序员文章站
2024-02-02 22:06:28
...
题目描述
求cosx,sinx,2x+1在[a,b]区间内的定积分,a、b的值从键盘输入。
① 编写求定积分通用函数double integral(double a,double b,long n,double (*p)(double)),形参a、b为积分区间,n为区间[a,b]等分数,p指向被积函数。用梯形法计算p指向的函数在[a,b]的定积分近似值,返回计算结果。
② 编写main函数,从键盘输入积分区间及等分数目,调用f函数求3个函数定积分的近似值。
提示,函数调用形式为integral(a,b,n,cos)
输入
a=XXX,b=XXX,n=XXX
输出
integral cos: XXX
integral sin: XXX
integral 2x+1: XXX
保留6位小数
#include <stdio.h>
#include <math.h>
double integral(double a,double b,long n,double (*p)(double));
double th(double x);
int main(void)
{
double a,b,y;
long n;
double (*p)(double);
scanf("a=%lf,b=%lf,n=%ld",&a,&b,&n);
p=cos;
y=integral(a,b,n,*p);
printf("integral cos:%.6lf\n",y);
p=sin;
y=integral(a,b,n,*p);
printf("integral sin:%.6lf\n",y);
p=th;
y=integral(a,b,n,*p);
printf("integral 2x+1:%.6lf",y);
}
double integral(double a,double b,long n,double (*p)(double))
{
double h,s,x;
int i;
h=(b-a)/n;
s=(p(a)+p(b))/2;
x=a;
for(i=1;i<n;i++)
{
x+=h;
s+=p(x);
}
return s*h;
}
double th(double x)
{return 2*x+1;}
上一篇: Promise入门/面试必看
下一篇: python opencv入门必看