谭浩强C++程序设计_指针习题13

【题目】

用矩形法求积分sinx  (0,1)  cos(-1,1) exp(0,2)


【程序】

#include <iostream>
#include <cmath>
using namespace std;
main()
{
	double integral(double (*p)(double),double up_limit,double low_limit);
	double (*p) (double);
	p=sin;
	cout<<"∫sin(x) from 0~1 Result is: "<<integral(p,1,0)<<endl;
	p=cos;
	cout<<"∫cos(x) from -1~1 Result is: "<<integral(p,1,-1)<<endl;
	p=exp;
	cout<<"∫exp(x) from 0~2 Result is: "<<integral(p,2,0)<<endl;

	return 0;
}
	double integral(double (*p)(double),double up_limit,double low_limit)//注意是(*p)
	{
		double j;
		double m;
		m=(fabs(up_limit)+fabs(low_limit))/1000000;
		cout<<"m="<<m<<endl;
		double result;
		for(result=0,j=1;j<1000000;j++)
		{
			result+=(*p)(j*m+low_limit)*m;
		}
		return (result);
	}
			

运行结果:

   

1.使用指针指向函数时,调用函数时注意是(*p)()而不是p(),这点谭浩强的书上是有错误的;

2.在函数调用指向函数的指针时,注意也是(*p)(double),而不是*p(double),后者是指针函数,不然会报错。

这个也是纠缠了很久,老是提示result那一个有错误

3.上下限注意用绝对值




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值