C语言用指向函数的指针作函数参数写求通用定积分公式。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言用指向函数的指针作函数参数写求通用定积分公式。相关的知识,希望对你有一定的参考价值。

如下是我的代码,请各位编程达人给出出招,看我错在哪里了。。
#include<stdio.h>
#include<math.h>
float f1(float a)

float z;
z=a+1;
return(z);

float f2(float a)

float z;
z=2*a+3;
return(z);

void integral(float a,float b,float (*fun)(float ))

float i,trace,hight1,hight2,area,sum=0;
trace=(b-a)/1000;
for(i=a;i<=b;i+=trace)

hight1=(*fun)(a);
a+=trace;
hight2=(*fun)(a);
area=(((hight1+hight2)*trace)/2);
sum+=area;

printf("sum=%f\n",sum);


void main()

float a,b,sum1;
printf("*************************\n");
printf("请输入该定积分的上下区间a和b:\n");
scanf("%f %f",&a,&b);
integral(a,b,f1(a));
integral(a,b,f2(a));

参考技术A 看不出有什么编译或执行的问题。但您的integral函数中的循环控制有点小问题,应该是
for ( i=a;i<b;i+=trace )
您现在的写法,多加了一次计算,不知道这个对运算结果会不会造成影响。本回答被提问者采纳
参考技术B 看不出有什么编译或执行的问题。但您的integral函数中的循环控制有点小问题,应该是
for
(
i=a;i<b;i+=trace
)
您现在的写法,多加了一次计算,不知道这个对运算结果会不会造成影响。

C++基础之类和对象二

(1)指向类的成员的指针分为指向数据成员的指针和指向成员函数的指针两种。一个类的对象用运算符“.*”来操作指向该类成员的指针,而一个指向类的对象的指针用
运算符“->”来操作指向该类成员的指针。
(2)对象指针和对象引用都可以作为函数参数,在C++语言中,经常使用对象引用作为函数参数。因为用对象引用作为函数参数比用对象指针作为函数更简洁明了,实参用对象,形参用对象引用即可,又由于用对象引用作为函数参数比用对象作为函数参数提高效率。因此,C++程序中多用对象引用作为函数参数。
(3)this是一个隐含于每个类的成员函数中的特殊指针,该指针指向正被某个成员函数操作的对象。通常它被隐含着,有时它会被显式使用。
(4)对象数组是同一个类的若干个对象组成的数组。该数组的每个元素是某类的个对象。对象数组可以使用初始化表进行初始化,也可以为每个元素赋值
(5)指向对象数组的指针通常来指向二维对象数组的某一行,这就是指向一维对象数组的指针。
(6)对象指针数组是一种元素为指向对象指针的数组。一维一级对象指针数组是经常使用的,该数组的元素是一级对象指针

int (*p)[3];//p是一个指向一维数组的指针,该数组有3个int型元素

<类名>(*PL)[3];//PL是指向数组的指针名,该指针是一个指向一维对象数组的指针,该数组中有3个元素,每个元素是指定<类名>的对象

7)常类型修饰符 const是用来定义常量的。它可以定义一般常量、常对象、常引用和常指针。常指针有两种形式,

一种是指针中存放的地址不变,它所指向的变量可变的常指针,格式为:<类型>* const<指针名>=<初始值>;

另一种是指针中存放的地址可变,它们指向的变量不变的常指针,格式为:<类型> const*<指针名>=<初始值>;。
(8)常类型中还有常成员,它分为常数据成员和常成员函数。使用 const修饰的数据成员称常数据成员,它需要在构造函数的成员初始化表中进行初始化,并且它的值不能被更新。使用 const修饰的成员函数称常成员函数。只有常成员函数才能操作常变量和常对象

#include <iostream. h>
class A
{
pubic:
A(int i);
void print();
const int& r;
private:
const int a;
static const int b;
};
const int A::b=10;
A::A(int i): a(),r(a)
{
}
void A: :print()
{
cout<<a<<":"<<b<<":"<<r<<endl;
}
void main()
{
A a1(100),a2(0);
al. print();
a2. print ();
}
执行该程序输出如下结果:
100:10:100
0:10:0
说明:该程序中,说明了如下三个常类型数据成员:
const int&ir
const int a s
static const int b
其中,r是常imt型引用,a是常int型変量,b是静态常int型量。
程序中对静态数据成员b进行初始化。
值得注意的是构造函数的格式如下所示:
A(int i): a(i), r(a)
{}
其中,冒号后边是一个数据成员初始化列表,它包含两个初始化项,用逗号进行了间隔。

(9)一个类的成员是另一个类的对象时,该成员被称为子对象,它是一种数据成员。含有子对象的类的构造函数的成员初始化表中要包含对子对象的初始化,

其格式为:<子对象名>(<参数表>)。
(10)动态创建的对象又称为堆对象。堆对象是可以根据需要随时释放的。创建堆对象使用运算符new,释放堆对象使用运算符 delete
(11)运算符new可用来创建变量和对象的指针,其格式如下:
<类型>*<指针名>=new<类型>(<初值>)
这将创建一个指向变量或对象的指针,并且可以对所指向的变量或对象进行初始化。
该运算符还可以创建一般类型变量或对象数组,其格式如下
<类型>*<指针名>=new<类型>[<大小>];

// delete[] <指针名>
(12)C++语言中的类型转换包含了C语言中的隐含转换和强制转换两种。一般由高类型转换为低类型时,要进行强制转换。
(13)C++程序中,具有一个参数的构造函数具有类型转换的功能。这种转换通常是将一个数值转换为某类的对象。
(14)类中还有一种特殊的成员函数称为转换函数。这种转换函数通常用来将某类的对象转换成为转换函数所定义的类型。定义转换函数格式如下所示。
operator<转换函数名>()
{函数体}
其中,<转换函数名>是类型说明符

以上是关于C语言用指向函数的指针作函数参数写求通用定积分公式。的主要内容,如果未能解决你的问题,请参考以下文章

知识总结18

C语言 结构指针变量作函数参数和链表基础

c语言用指针写选择法排序函数

c语言 结构体的指针作为函数参数问题

c#调用c++的DLL,接口函数参数有函数指针,在线等解决办法

c++的函数指针是怎么用的呀?