C语言上机题 梯形法求积分

题目描述
求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;} 
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值