c语言实现积分运算

用指针实现,最好先明白*p[4]和(*p)[4]的区别

int *p[4]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
int (*p)[4]; //定义一个数组指针,该指针指向含4个元素的一维数组(数组中每个元素是int型)。
区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。
int *p[n]; 中,运算符[ ]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组。
int (*p)[n]; 中( )优先级高,首先说明p是一个指针,指向一个整型的一维数组。

其次还要知道定积分的定义

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	float integral(float(*p)(float),float a,float b,int n);
	float fsin(float);
	float a1,b1,c,(*p)(float);
	int n;
	cout<<"输入精确度数n:"<<endl;
	cin>>n;
	cout<<"input a1,b1:"<<endl;
	cin>>a1>>b1;
	p=fsin;
	c=integral(p,a1,b1,n);
	cout<<"the integral of sin(x) is:"<<c<<endl;
	return 0;
}
//声明了一个指针p,
p指向一个具有一个float类型形参的函数,
这个函数返回一个float型值.
float integral(float(*p)(float),float a,float b,int n)
{
	int i;
	float x,h,s;
	h=(b-a)/2;
	x=a;//积分下限
	s=0;
	for(i=0;i<=n;i++)
	{
		x=x+h;//对函数的自变量x进行迭代
		s=s+(*p)(x)*h;对每一个小矩形累加求和
	}
	return(s);
}
float fsin(float x)
{
	return sin(x);
}

猜你喜欢

转载自blog.csdn.net/qq_24163555/article/details/83350984
今日推荐