濠电姷鏁告慨鐑藉极閹间礁纾绘繛鎴旀嚍閸ヮ剦鏁囬柕蹇曞Х椤︻噣鎮楅崗澶婁壕闂佸憡娲﹂崑澶愬春閻愮儤鈷戦悹鎭掑妼濞呮劙鏌熼崙銈嗗闂傚倸鍊搁崐宄懊归崶顒佸剭妞ゆ劧绠戦獮銏ゆ煃鏉炴壆鍔嶆い鏂垮缁辨捇宕掑顑藉亾閸濄儳鐭欓柛鏇ㄥ灠缁狀垶鏌ㄩ悤鍌涘闂傚倸鍊搁崐椋庢濮橆兗缂氶柤濮愬€栫€氬鏌i弮鍌氬付缂佲偓婢舵劕绠规繛锝庡墮婵″ジ鏌涘顒傜Ш妤犵偞鐗曡彁妞ゆ巻鍋撳┑陇鍋愮槐鎺楁偑閳ь剟宕抽敐澶婅摕闁跨喓濮撮悙濠囨煃鏉炴壆璐伴柣搴㈠▕濮婅櫣鎹勯妸銉︾彚闂佺懓鍤栭幏锟�华体会体育2串1 ,大学生新闻发布平台
华体会体育2串1
大学生新闻大学生活校园文学hthcom华体会
hth电竞官方下载 hth官方下载 hthvp华体会 hth358华体会 社会实践心得
全国排名校友会版hthcom华体会赌博 分类排名本科排名一本排名hth359华体会 hth365华体会 学校地址
求职简历职场法则面试技巧职场故事求职招聘大学生就业
英语学习计算机学习电气工程机械工程经济管理建筑设计财务会计
申请书证明书检讨书自荐信演讲稿心得体会调查报告读后感求职信推荐信其它范文

C语言求定积分

利用梯形法计算定积分



其中, f(x)=x3+3x2-x+2。
算法思想
根据定积分的定义分析可得:[x0,x1],[x1,x2],···,[xn-1,xn],将定积分的区间 [a,b] 分成 n 个子区间,其中:





若右边的极限存在,其极限值即为定积分的值。理论上区间分得越细,越逼近定积分实际的值,一般采用梯形法近似计算定积分的值,把区间 [a,6] 划分成 n 等份,则任意第 f 个小梯形的面积为 (上底+下底)×高/2,si=H×[f(xi)-1)+f(xi)]/2,其中 xi+1=a+(i+1)×H;xi=a+i×H;H=(b-a)/n。该实例问题实际上转换为求 n 等份梯形的面积累计和。
程序代码

#include <stdio.h>
#include <math.h>
 
float collect(float s,float t,int m,float (*p)(float x));
float fun1(float x);
float fun2(float x);
float fun3(float x);
float fun4(float x);
 
int main()
{
    int n,flag;
    float a,b,v=0.0;
    printf("Input the count range(from A to B)and the number of sections.\n");
    scanf("%f%f%d",&a,&b,&n);
    printf("Enter your choice:'1' for fun1,'2' for fun2,'3' for fun3,'4' for fun4==>");
    scanf("%d",&flag);
    if(flag==1)
        v=collect(a,b,n,fun1);
    else if(flag==2)
        v=collect(a,b,n,fun2);
    else if(flag==3)
        v=collect(a,b,n,fun3);
    else
        v=collect(a,b,n,fun4);
    printf("v=%f\n",v);
    return 0;
}
 
float collect(float s,float t,int n,float (*p)(float x))
{
    int i;
    float f,h,x,y1,y2,area;
    f=0.0;
    h=(t-s)/n;
    x=s;
    y1=(*p)(x);
    for(i=1;i<=n;i++)
    {
        x=x+h;
        y2=(*p)(x);
        area=(y1+y2)*h/2;
        y1=y2;
        f=f+area;
    }
    return (f);
}
 
float fun1(float x)
{
    float fx;
    fx=x*x-2.0*x+2.0;
    return(fx);
}
 
float fun2(float x)
{
    float fx;
    fx=x*x*x+3.0*x*x-x+2.0;
    return(fx);
}
 
float fun3 (float x)
{
    float fx;
    fx=x*sqrt(1+cos(2*x));
    return(fx);
}
 
float fun4(float x)
{
    float fx;
    fx=1/(1.0+x*x);
    return(fx);
}
调试运行结果
程序运行结果如下所示:
Input the count range(from A to B)and the number of sections.
0 1 100
Enter your choice:'1' for fun1,'2' for fun2,'3' for fun3,'4' for fun4==>2
v=2.750073
总结
① 定义 collect() 函数时,函数的首部 “float collect(float s,float t,int n,float (*p)(float x))” 中的 “float (*p)(float x)” 表示 p 是指向函数的指针变量,该函数的形参为实型。在 main() 函数的 if 条件结构中调用 collect() 函数时,除了将 a,b,n 作为实参传给 collect 的形参 s,n,t 外,还必须将函数名 fun1,fun2,fun3,fun4 作为实参将其入口地址传递给 collect() 函数中的形参 p。

② 函数也是有地址的,函数名作为函数的首地址。可以定义一个指向函数的指针变量,将函数入口地址赋予指针变量,然后通过指针变量调用函数,这样的指针变量即称为指向函数的指针。


③ 函数指针也是指针变量,可以实现指针变量的运算,但不能进行算术运算,因为函数指针的移动是毫无意义的,不同于数组指针变量,加减一个整数可以使指针指向后面或前面的数组元素。

④ 在函数调用中 “(* 指针变量名)” 两边的括号不可少,其中此处为一种表示符号,而不是求值运算。
    作者:华体会体育2串1     来源:华体会体育2串1
    发布时间:2025-03-10    阅读:9
    扫一扫 分享悦读
  • C语言整数逆序输出
  • 将一个从键盘输入的整数存放到一个数组中,通过程序的运行按照数组中的逆序输出该整数,利用递归的方法解决问题。
  • 03-10 关注:0
  • C语言约瑟夫环问题
  • 编号为 1,2,3,…,n 的 n 个人围坐一圈,任选一个正整数 m 作为报数上限值,从第一个人开始按顺时针方向报数,报数到 m 时停止,报
  • 03-10 关注:1
  • C语言输出等腰三角形
  • 本实例要求从键盘输入任意整数 n,通过程序运行输出对应高度为 n 的等腰三角形。
  • 03-10 关注:0
  • C语言字符串加密和解密算法
  • 在本实例中要求设计一个加密和解密算法。在对一个指定的字符串加密之后,利用解密函数能够对密文解密,显示明文信息。
  • 03-09 关注:3
  • C语言统计单词个数,单词个数算法
  • 在实际生活中经常会遇到一个问题:写英语作文时,常常要求满足一定的字数。在以往,要么我们一个一个地数;要么我们估算一行的单词数,
  • 03-09 关注:3
Baidu
map