函數(shù)的嵌套調(diào)用_第1頁
函數(shù)的嵌套調(diào)用_第2頁
函數(shù)的嵌套調(diào)用_第3頁
函數(shù)的嵌套調(diào)用_第4頁
函數(shù)的嵌套調(diào)用_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C C 程序設(shè)計程序設(shè)計 我們知道,一元二次方程有求根公式,我們知道,一元二次方程有求根公式,一般的一元三次方程、一元四次方程等高一般的一元三次方程、一元四次方程等高次方程是否也有類似的求根公式呢?次方程是否也有類似的求根公式呢? 8.5 8.5函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用 引入引入問題問題 十六世紀(jì)中葉,一元三次方程和一元十六世紀(jì)中葉,一元三次方程和一元四次方程求根公式分別被意大利數(shù)學(xué)家卡四次方程求根公式分別被意大利數(shù)學(xué)家卡爾達(dá)諾和他的學(xué)生弗拉利獲得爾達(dá)諾和他的學(xué)生弗拉利獲得(2)(2)(1)(1) 函數(shù)名(實參表列函數(shù)名(實參表列););例如例如 8.5 8.5函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用

2、 (3) (3) 如果使用用戶自己定義的函數(shù),而該函如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面(在同一個文件中后面(在同一個文件中),),應(yīng)該在主調(diào)函數(shù)中應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作對被調(diào)用的函數(shù)作聲明聲明(2) (2) 如果使用庫函數(shù),還應(yīng)該在本文件開頭如果使用庫函數(shù),還應(yīng)該在本文件開頭用用# include# include命令將調(diào)用有關(guān)庫函數(shù)時所需命令將調(diào)用有關(guān)庫函數(shù)時所需用到的信息用到的信息“包含包含”到本文件中來到本文件中來1 1、函數(shù)語句:把函數(shù)調(diào)用作為一個語句、函數(shù)語句:把函數(shù)調(diào)用作為一個語句scanf(

3、“%d”,&ai);scanf(“%d”,&ai);8.5.2 8.5.2 函數(shù)調(diào)用的三種方式函數(shù)調(diào)用的三種方式 例如例如 按函數(shù)在程序中出現(xiàn)的位置來分,按函數(shù)在程序中出現(xiàn)的位置來分,可以有以下三種函數(shù)調(diào)用方式可以有以下三種函數(shù)調(diào)用方式 這時不要求函數(shù)帶回值,只要求函這時不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作數(shù)完成一定的操作 例如例如 2 2、函數(shù)表達(dá)式:函數(shù)出現(xiàn)在一個表達(dá)式中、函數(shù)表達(dá)式:函數(shù)出現(xiàn)在一個表達(dá)式中c=2c=2* *max(a,b);max(a,b); 這時要求函數(shù)帶回一個確定的值以參加這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運算表達(dá)式的運算, ,函數(shù)函數(shù)m

4、axmax是表達(dá)式的一部分是表達(dá)式的一部分、函數(shù)參數(shù):函數(shù)調(diào)用作為一個函數(shù)的實參、函數(shù)參數(shù):函數(shù)調(diào)用作為一個函數(shù)的實參 例如例如 m=max(a,max(b,c);m=max(a,max(b,c); 在一個函數(shù)中調(diào)用另一函數(shù)(即被調(diào)在一個函數(shù)中調(diào)用另一函數(shù)(即被調(diào)用函數(shù))需要具備哪些條件呢用函數(shù))需要具備哪些條件呢?8.5.3 8.5.3 對被調(diào)用函數(shù)的聲明對被調(diào)用函數(shù)的聲明(1) (1) 被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù) (是庫函數(shù)或用戶自己定義的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù)) )直到十九世紀(jì),挪威數(shù)學(xué)家阿貝爾證明了一般直到十九世紀(jì),挪威數(shù)學(xué)家阿貝爾證明

5、了一般的五次及五次以上的方程都的五次及五次以上的方程都不可能有公式解法不可能有公式解法 此后三百多年的時間里,推求五次及其以此后三百多年的時間里,推求五次及其以上高次方程解法的人不可勝數(shù),但都無果而終上高次方程解法的人不可勝數(shù),但都無果而終法國數(shù)學(xué)奇才伽羅華,非常徹底地把全部代數(shù)法國數(shù)學(xué)奇才伽羅華,非常徹底地把全部代數(shù)方程可解性問題,轉(zhuǎn)化或歸結(jié)為置換群及其子方程可解性問題,轉(zhuǎn)化或歸結(jié)為置換群及其子群結(jié)構(gòu)分析的問題,將這一問題徹底解決群結(jié)構(gòu)分析的問題,將這一問題徹底解決 “ “聲明聲明”一詞的原文是一詞的原文是declerationdecleration,聲明的作用是把函數(shù)名、函數(shù)參數(shù)的個數(shù)和聲

6、明的作用是把函數(shù)名、函數(shù)參數(shù)的個數(shù)和參數(shù)類型等信息通知編譯系統(tǒng),以便在遇到參數(shù)類型等信息通知編譯系統(tǒng),以便在遇到函數(shù)調(diào)用時,編譯系統(tǒng)能正確識別函數(shù)并檢函數(shù)調(diào)用時,編譯系統(tǒng)能正確識別函數(shù)并檢查調(diào)用是否合法查調(diào)用是否合法. .(例如函數(shù)名是否正確,(例如函數(shù)名是否正確,實參與形參的類型和個數(shù)是否一致)實參與形參的類型和個數(shù)是否一致) 函數(shù)的定義是指對函數(shù)功能的確立,包函數(shù)的定義是指對函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參及其類型、括指定函數(shù)名,函數(shù)值類型、形參及其類型、函數(shù)體等,它是一個完整的、獨立的函數(shù)單函數(shù)體等,它是一個完整的、獨立的函數(shù)單位。已經(jīng)定義的函數(shù),編譯系統(tǒng)會為它分配位。已

7、經(jīng)定義的函數(shù),編譯系統(tǒng)會為它分配相應(yīng)的存儲區(qū)域,可以說,定義的過程就是相應(yīng)的存儲區(qū)域,可以說,定義的過程就是子函數(shù)生成的過程子函數(shù)生成的過程函數(shù)的函數(shù)的“定義定義”和和“聲明聲明”不是一回不是一回事事(1) (1) 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名( (參數(shù)類型參數(shù)類型1 1,參數(shù)類,參數(shù)類 型型2 2) );函數(shù)原型的一般形式為函數(shù)原型的一般形式為(2) (2) 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名( (參數(shù)類型參數(shù)類型1 1,參數(shù)名,參數(shù)名1 1,參數(shù)類型參數(shù)類型2 2,參數(shù)名,參數(shù)名2 2) ); 做這樣的函數(shù)原型聲明,編譯系統(tǒng)會按做這樣的函數(shù)原型聲明,編譯系統(tǒng)會按照聲明的形式做匹配檢查,當(dāng)和原

8、型不匹配照聲明的形式做匹配檢查,當(dāng)和原型不匹配會導(dǎo)致編譯出錯,按語法出錯提示會導(dǎo)致編譯出錯,按語法出錯提示 如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不必加以聲明。因為編譯系統(tǒng)已之前,可以不必加以聲明。因為編譯系統(tǒng)已經(jīng)先知道了已定義函數(shù)的有關(guān)情況,會根據(jù)經(jīng)先知道了已定義函數(shù)的有關(guān)情況,會根據(jù)函數(shù)首部提供的信息對函數(shù)的調(diào)用作正確性函數(shù)首部提供的信息對函數(shù)的調(diào)用作正確性檢查檢查 思考一下,如果被調(diào)函數(shù)出現(xiàn)在主調(diào)函思考一下,如果被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)之前,需要聲明嗎?數(shù)之前,需要聲明嗎? 數(shù)組名(實參表列數(shù)組名(實參表列);); 8.5.1 8.5.1函數(shù)調(diào)用的一

9、般形式函數(shù)調(diào)用的一般形式 例如例如 (2)(2)(1)(1) 1 1、函數(shù)語句:把函數(shù)調(diào)用作為一個語句、函數(shù)語句:把函數(shù)調(diào)用作為一個語句scanf(“%d”,&ai);scanf(“%d”,&ai);8.5.2 8.5.2 函數(shù)調(diào)用的三種方式函數(shù)調(diào)用的三種方式 例如例如 按函數(shù)在程序中出現(xiàn)的位置來分,按函數(shù)在程序中出現(xiàn)的位置來分,可以有以下三種函數(shù)調(diào)用方式可以有以下三種函數(shù)調(diào)用方式 這時不要求函數(shù)帶回值,只要求函這時不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作數(shù)完成一定的操作 例如例如 2 2、函數(shù)表達(dá)式:函數(shù)出現(xiàn)在一個表達(dá)式中、函數(shù)表達(dá)式:函數(shù)出現(xiàn)在一個表達(dá)式中c=2c=2*

10、*max(a,b);max(a,b); 這時要求函數(shù)帶回一個確定的值以參加這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運算表達(dá)式的運算, ,函數(shù)函數(shù)maxmax是表達(dá)式的一部分是表達(dá)式的一部分、函數(shù)參數(shù):函數(shù)調(diào)用作為一個函數(shù)的實參、函數(shù)參數(shù):函數(shù)調(diào)用作為一個函數(shù)的實參 例如例如 m=max(a,max(b,c);m=max(a,max(b,c); 在一個函數(shù)中調(diào)用另一函數(shù)(即被調(diào)在一個函數(shù)中調(diào)用另一函數(shù)(即被調(diào)用函數(shù))需要具備哪些條件呢用函數(shù))需要具備哪些條件呢?8.5.3 8.5.3 對被調(diào)用函數(shù)的聲明對被調(diào)用函數(shù)的聲明(1) (1) 被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)被調(diào)用的函數(shù)必須是已經(jīng)存在

11、的函數(shù) (是庫函數(shù)或用戶自己定義的函數(shù)(是庫函數(shù)或用戶自己定義的函數(shù)) )(3) (3) 如果使用用戶自己定義的函數(shù),而該函如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面(在同一個文件中后面(在同一個文件中),),應(yīng)該在主調(diào)函數(shù)中應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作對被調(diào)用的函數(shù)作聲明聲明(2) (2) 如果使用庫函數(shù),還應(yīng)該在本文件開頭如果使用庫函數(shù),還應(yīng)該在本文件開頭用用# include# include命令將調(diào)用有關(guān)庫函數(shù)時所需命令將調(diào)用有關(guān)庫函數(shù)時所需用到的信息用到的信息“包含包含”到本文件中來到本文件中來 “ “聲明聲

12、明”一詞的原文是一詞的原文是delarationdelaration,聲,聲明的作用是把函數(shù)名、函數(shù)參數(shù)的個數(shù)和參明的作用是把函數(shù)名、函數(shù)參數(shù)的個數(shù)和參數(shù)類型等信息通知編譯系統(tǒng),以便在遇到函數(shù)類型等信息通知編譯系統(tǒng),以便在遇到函數(shù)調(diào)用時,編譯系統(tǒng)能正確識別函數(shù)并檢查數(shù)調(diào)用時,編譯系統(tǒng)能正確識別函數(shù)并檢查調(diào)用是否合法調(diào)用是否合法. .(例如函數(shù)名是否正確,實(例如函數(shù)名是否正確,實參與形參的類型和個數(shù)是否一致)參與形參的類型和個數(shù)是否一致) 函數(shù)的定義是指對函數(shù)功能的確立,包函數(shù)的定義是指對函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參及其類型、括指定函數(shù)名,函數(shù)值類型、形參及其類型、函數(shù)體等

13、,它是一個完整的、獨立的函數(shù)單函數(shù)體等,它是一個完整的、獨立的函數(shù)單位。已經(jīng)的定義的函數(shù),編譯系統(tǒng)會為它分位。已經(jīng)的定義的函數(shù),編譯系統(tǒng)會為它分配相應(yīng)的存儲區(qū)域,可以說,定義的過程就配相應(yīng)的存儲區(qū)域,可以說,定義的過程就是子函數(shù)生成的過程是子函數(shù)生成的過程函數(shù)的函數(shù)的“定義定義”和和“聲明聲明”不是一回不是一回事事(1) (1) 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名( (參數(shù)類型參數(shù)類型1 1,參數(shù)類,參數(shù)類 型型2 2) );函數(shù)原型的一般形式為函數(shù)原型的一般形式為(2) (2) 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名( (參數(shù)類型參數(shù)類型1 1,參數(shù)名,參數(shù)名1 1,參數(shù)類型參數(shù)類型2 2,參數(shù)名,參數(shù)

14、名2 2) ); 做這樣的函數(shù)原型聲明,編譯系統(tǒng)會按做這樣的函數(shù)原型聲明,編譯系統(tǒng)會按照聲明的形式做匹配檢查,當(dāng)和原型不匹配照聲明的形式做匹配檢查,當(dāng)和原型不匹配會導(dǎo)致編譯出錯,按語法出錯提示會導(dǎo)致編譯出錯,按語法出錯提示 如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)函數(shù)之前,可以不必加以聲明。因為編譯系統(tǒng)已之前,可以不必加以聲明。因為編譯系統(tǒng)已經(jīng)先知道了已定義函數(shù)的有關(guān)情況,會根據(jù)經(jīng)先知道了已定義函數(shù)的有關(guān)情況,會根據(jù)函數(shù)首部提供的信息對函數(shù)的調(diào)用作正確性函數(shù)首部提供的信息對函數(shù)的調(diào)用作正確性檢查檢查 思考一下,如果被調(diào)函數(shù)出現(xiàn)在主調(diào)函思考一下,如果被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)

15、之前,需要聲明嗎?數(shù)之前,需要聲明嗎? 和一元高次方程對應(yīng)的多項式函數(shù)屬于和一元高次方程對應(yīng)的多項式函數(shù)屬于初等函數(shù),而初等函數(shù)都是連續(xù)函數(shù),根據(jù)初等函數(shù),而初等函數(shù)都是連續(xù)函數(shù),根據(jù)閉區(qū)間上連續(xù)函數(shù)的零點定理:閉區(qū)間上連續(xù)函數(shù)的零點定理:設(shè)函數(shù)設(shè)函數(shù) 在閉區(qū)間在閉區(qū)間a,ba,b上連續(xù),且上連續(xù),且 與與 異號,那么在開區(qū)間異號,那么在開區(qū)間(a,b)(a,b)上至少有上至少有一點一點 使得使得 )(xf)(af)(bf0)( f 8.5.4 8.5.4函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用 根據(jù)上述定理知道,只要能找到某個根根據(jù)上述定理知道,只要能找到某個根所處的大概區(qū)間,找到一個合理的算法讓這所處

16、的大概區(qū)間,找到一個合理的算法讓這個區(qū)間縮小,根據(jù)區(qū)間套定理,就可以找見個區(qū)間縮小,根據(jù)區(qū)間套定理,就可以找見一點逼近這個方程根的近似值一點逼近這個方程根的近似值 根據(jù)前面的分析,通過演示我們共同可以根據(jù)前面的分析,通過演示我們共同可以得出算法,得出算法,82625xxxy以方程以方程)(,(11xfxxy1x0)(,(xfxxx)(,(xfxx)(,(xfx)(,(11xfx1x1x)(,(11xfx)(,(22xfx2x1x)(,(11xfxx)(,(xfx(1)(1)取兩個不同點取兩個不同點 , ,如果如果 和和符號相反符號相反, ,則則 區(qū)間內(nèi)必有一個根。如區(qū)間內(nèi)必有一個根。如果果 與

17、與 同符號同符號, ,則應(yīng)改變則應(yīng)改變 , ,直直到到 、 異號為止異號為止21,xx)(1xf)(2xf),(21xx)(1xf)(2xf21,xx)(1xf)(2xf(2)(2)連接連接 和和 兩點兩點, ,此線此線( (即弦即弦) )交交x x軸于軸于x x)(,(11xfx)(,(11xfx(3) (3) 若若 與與 同號同號, ,則根必在則根必在 區(qū)區(qū)間內(nèi)間內(nèi), ,此時將此時將 作為新的作為新的 , ,如果如果 與與 同符號同符號, ,則表示根在則表示根在 區(qū)間內(nèi)區(qū)間內(nèi), ,將將x x作為新作為新的的)(xf)(1xf)(xf),(2xxx1x)(2xf),(1xx2x(4) (4)

18、 重復(fù)步驟重復(fù)步驟(2)(2)和和(3),(3),直到直到 為止為止, , 為一個很小的數(shù)為一個很小的數(shù), ,此時認(rèn)為此時認(rèn)為 , ,此時此時得到的得到的 就是所求的符合精度要求的近似根就是所求的符合精度要求的近似根 | )(|xf0| )(|xfxjx83525xxx(1)(1) 用函數(shù)用函數(shù) 代表代表 的函數(shù)的函數(shù): :x)(xf(3)(3) 用函數(shù)調(diào)用用函數(shù)調(diào)用 來求來求 區(qū)間的區(qū)間的 那個實根。顯然那個實根。顯然, ,執(zhí)行函數(shù)執(zhí)行函數(shù) 過程中要用過程中要用到到函數(shù)到到函數(shù) , ,而執(zhí)行函數(shù)而執(zhí)行函數(shù) 過過程中要用到到函數(shù)程中要用到到函數(shù)int()xpo),(21xxroot),(21x

19、x()rootint()xpo)(xf(2)(2) 用函數(shù)調(diào)用用函數(shù)調(diào)用 來求來求 和和 的連線與的連線與 軸的交點橫坐標(biāo)軸的交點橫坐標(biāo)),int(21xxxpo)(,(11xfx)(,(22xfxx float f(float x)float f(float x) / /* *定義函數(shù)定義函數(shù), ,以實現(xiàn)以實現(xiàn)f(x)f(x)x3-5x2+16x-80 x3-5x2+16x-80* */ /float yfloat y; =(x=(x* *x-6)x-6)* *x x* *x-2)x-2)* *x-8;x-8; return(y);return(y);首先定義一個生成多項式的函數(shù):首先定義一

20、個生成多項式的函數(shù):# include # include # include # include float yfloat y; =(x1=(x1* *f(x2)-x2f(x2)-x2* *f(x1)/f(x2)-f(x1)f(x1)/f(x2)-f(x1); return(y);return(y); 其次,定義求弦與其次,定義求弦與x x軸交點橫坐標(biāo)函數(shù)軸交點橫坐標(biāo)函數(shù)float xpoint(float x1,x2)float xpoint(float x1,x2)/ /* *定義定義xpointxpoint函數(shù)函數(shù), ,求出弦與求出弦與x x軸交點軸交點* */ /return(x)return(x) 再次,定義求根函數(shù)再次,定義求根函數(shù)float root(float x1,float x2)float root(float x1,float x2)float x,y,y1;float x,y,y1;y1=f(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論