大學生新聞網,大學生新聞發布平臺
大學生新聞網
大學生新聞大學生活校園文學大學生村官
社會實踐活動社會實踐經歷社會實踐報告社會實踐總結社會實踐心得
全國排名校友會版軟科排名分類排名本科排名一本排名二本排名專科排名學校地址
求職簡歷職場法則面試技巧職場故事求職招聘大學生就業
英語學習計算機學習電氣工程機械工程經濟管理建筑設計財務會計
申請書證明書檢討書自薦信演講稿心得體會調查報告讀后感求職信推薦信其它范文

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。

② 函數也是有地址的,函數名作為函數的首地址。可以定義一個指向函數的指針變量,將函數入口地址賦予指針變量,然后通過指針變量調用函數,這樣的指針變量即稱為指向函數的指針。


③ 函數指針也是指針變量,可以實現指針變量的運算,但不能進行算術運算,因為函數指針的移動是毫無意義的,不同于數組指針變量,加減一個整數可以使指針指向后面或前面的數組元素。

④ 在函數調用中 “(* 指針變量名)” 兩邊的括號不可少,其中此處為一種表示符號,而不是求值運算。
    作者:大學生新聞網    來源:大學生新聞網
    發布時間:2025-03-10    閱讀:
    掃一掃 分享悅讀
  • 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
主站蜘蛛池模板: 国产一国产一区秋霞在线观看 | 牛牛在线精品免费视频观看| 好深好爽办公室做视频| 人妻无码一区二区三区| 91国高清视频| 极品美女aⅴ高清在线观看| 国产在线视频网| 丝袜足液精子免费视频| 特级xxxxx欧美| 国产真实交换多p免视频| 久久亚洲精品视频| 精品少妇人妻AV一区二区三区 | 免费无毒片在线观看| 97久久精品国产成人影院| 最近免费中文字幕大全高清大全1 最近免费中文字幕大全高清大全1 | 男女做爽爽免费视频| 国产精品天干天干| 久久大香伊焦在人线免费| 精品无码国产一区二区三区麻豆| 在线成人综合色一区| 五月婷中文字幕| 紧缚调教波多野结衣在线观看| 国精品无码一区二区三区在线蜜臀| 亚洲A∨无码一区二区三区| 羞羞漫画喷水漫画yy视| 国自产拍亚洲免费视频| 久久精品动漫一区二区三区| 精品人妻无码区在线视频| 国产精品美女一区二区三区| 久久伊人色综合| 狠狠躁夜夜躁人人爽天天不卡软件| 国产看午夜精品理论片| 中文在线三级中文字幕| 欧美成人看片一区二区三区尤物| 国产亚洲精品无码成人| av网站免费线看| 日韩一级在线播放| 人妻18毛片a级毛片免费看| 麻豆狠色伊人亚洲综合网站| 成人免费看www网址入口| 亚洲午夜久久久影院伊人|