C语言代码题-----函数指针

C语言代码题-----函数指针

题目:
在这里插入图片描述
初次代码:在这里插入图片描述

代码修改:``

 # include<stdio.h>
 #include<math.h>
 float y_1(float x)
 {
 float y1;
 y1=1+x*x;
 return y1;
 }
float y_2(float x)
{
float y2;
y2=x/(1+x*x);
return y2;
}

float Integral (float (*f)(float),float a, float b)
{
float x=0;/*注意,不论以后的变量是否会在原值基础上叠加,最好都要初始化,否则在后续代码修改时会出现未初始化错误,输出垃圾值。*/
float h=0;
float s=0;

h=(b-a)/100//注意:此处应该是b-a而不是a-b,b比a大,原版本代码在此处出现了大小判断错误。

float i=0;//注意:在此处,i因其作用不同不再是简单程序中的int值了,见后续程序。
for(i=0;i+h<=(b-a);i+=h)//思想:将b-a分为100份,在草纸上进行演算,提出同类项后会发现公式。
{
x=x+((*f)(a+i)+(*f)(a+i+h))/2;//注意:这里要累加起来,不要忘记加上原来的x
}
s=x*h;
return s;
}
int main(void)
{
int main (void)
{

    float y1,y2;
    y1=Integral(y_1,0,1);
    y2=Integral(y_2,0,3);

    printf("y1=%f\ny2=%f\n",y1,y2);

    return 0;
 }
 //
 啊这,第一次使用CSDN,卡在代码块里出不来了(吐血)
 总结:关注每一个变量的意义和作用
            关注边界的问题
 学到的新知识:在第三个函数中第一个参量(float)(*f)(float a)第一个float指的是这个函数的返回值是float类型,*f是调用的函数地址,在调用时直接传输被调函数的名字(就是一级指针类型变量);
 举个栗子:float (*f)(int ,float)-----后面的int,float是被调函数接收的参数类型,就是被调函数的定义的时候后面那一块。


2019.10.19
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值