![第六章函數(shù)-基礎(chǔ)篇(C語言程序設(shè)計清華版第三版)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/22542cf3-906c-46ad-bcc1-59cd6548ed02/22542cf3-906c-46ad-bcc1-59cd6548ed021.gif)
![第六章函數(shù)-基礎(chǔ)篇(C語言程序設(shè)計清華版第三版)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/22542cf3-906c-46ad-bcc1-59cd6548ed02/22542cf3-906c-46ad-bcc1-59cd6548ed022.gif)
![第六章函數(shù)-基礎(chǔ)篇(C語言程序設(shè)計清華版第三版)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/22542cf3-906c-46ad-bcc1-59cd6548ed02/22542cf3-906c-46ad-bcc1-59cd6548ed023.gif)
![第六章函數(shù)-基礎(chǔ)篇(C語言程序設(shè)計清華版第三版)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/22542cf3-906c-46ad-bcc1-59cd6548ed02/22542cf3-906c-46ad-bcc1-59cd6548ed024.gif)
![第六章函數(shù)-基礎(chǔ)篇(C語言程序設(shè)計清華版第三版)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/22542cf3-906c-46ad-bcc1-59cd6548ed02/22542cf3-906c-46ad-bcc1-59cd6548ed025.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、函數(shù)(一)提綱C函數(shù)概述函數(shù)的定義與聲明函數(shù)的定義函數(shù)的聲明原型函數(shù)調(diào)用函數(shù)調(diào)用概述函數(shù)的參數(shù)傳遞函數(shù)的返回值函數(shù)的嵌套調(diào)用函數(shù)的遞歸調(diào)用運(yùn)算符小結(jié)結(jié)束C函數(shù)概述(1)“”的思想經(jīng)常用于實(shí)際問題的解決,在程序語言中的一種體現(xiàn)就是“模塊化”程序往往由若干個的部分構(gòu)成。C能很好地支持模塊化程序設(shè)計。從物理上看,一個C程序可以由若干個源程序文件構(gòu)成,每個源程序文件是獨(dú)立的編譯單位。從邏輯上看,一個C程序可以由若干函數(shù)構(gòu)成,每個函數(shù)分別完成了一個邏輯上相對獨(dú)立的功能。C函數(shù)的特點(diǎn)main函數(shù)是函數(shù)是C程序的執(zhí)行入口。程序的執(zhí)行入口。C中所有函數(shù)都是平行的,定義函數(shù)時任何一個函數(shù)都不從屬中所有函數(shù)都是平
2、行的,定義函數(shù)時任何一個函數(shù)都不從屬于其它函數(shù)。于其它函數(shù)。C函數(shù)間可互相調(diào)用,但任何函數(shù)都不能調(diào)用函數(shù)間可互相調(diào)用,但任何函數(shù)都不能調(diào)用main函數(shù)函數(shù)。C函數(shù)概述(2)C函數(shù)的分類從用戶使用角度:標(biāo)準(zhǔn)函數(shù)(庫函數(shù))與自定義函數(shù)按函數(shù)參數(shù)形式:無參數(shù)函數(shù)與有參數(shù)函數(shù)按函數(shù)返回值形式:無返回值函數(shù)與有返回值函數(shù)函數(shù)調(diào)用的過程圖解 返回主調(diào)函數(shù)主調(diào)函數(shù)函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)函數(shù)return返回點(diǎn)返回點(diǎn)函數(shù)的定義(1)若缺省,則系若缺省,則系統(tǒng)認(rèn)為是統(tǒng)認(rèn)為是int若不需返值,若不需返值,請用類型請用類型void應(yīng)是合法標(biāo)應(yīng)是合法標(biāo)識符識符語句部分可以包含任何合法的語句部分可以包含任何合法的C語言語句
3、。語言語句。通常,語句中應(yīng)該包含通常,語句中應(yīng)該包含return語句以提供函數(shù)返回值(除非語句以提供函數(shù)返回值(除非不需返回值)不需返回值)“聲明部分聲明部分”和和“語句部分語句部分”都缺省時,函數(shù)稱為都缺省時,函數(shù)稱為“空函數(shù)空函數(shù)”返回類型返回類型函數(shù)名函數(shù)名()形式參數(shù)表形式參數(shù)表聲明部分聲明部分語句部分語句部分必要的部分可選的部分類型類型1 參數(shù)名參數(shù)名1, 類型類型2 參數(shù)名參數(shù)名2, 函數(shù)的定義(2)函數(shù)首部的標(biāo)準(zhǔn)形式與傳統(tǒng)形式標(biāo)準(zhǔn)C中規(guī)定,在函數(shù)首部的參數(shù)列表部分既要給出參數(shù)的名字,也要給出參數(shù)的類型。而在傳統(tǒng)的C(K&R C)中,函數(shù)首部的參數(shù)列表中只給出參數(shù)的名字,參
4、數(shù)名字和參數(shù)的對應(yīng)關(guān)系在首部的下一行中給出。例子 返回/*K&R C方式方式*/int max(x, y)int x, y; /*標(biāo)準(zhǔn)標(biāo)準(zhǔn)C方式方式*/int max(int x, int y) 函數(shù)的聲明原型(1)C語言中,在使用函數(shù)之前,系統(tǒng)必須獲得足夠多的信息,以檢查函數(shù)的使用形式是否合法。函數(shù)的聲明就是用以提供這類信息的。C的函數(shù)聲明又稱為函數(shù)的原型,有兩種形式: 返回類型返回類型函數(shù)名函數(shù)名()形式參數(shù)表形式參數(shù)表類型類型1 參數(shù)名參數(shù)名1, 類型類型2 參數(shù)名參數(shù)名2, ;返回類型返回類型函數(shù)名函數(shù)名()形式參數(shù)表形式參數(shù)表類型類型1, 類型類型2, ;函數(shù)的聲明原型(2)
5、函數(shù)聲明可以出現(xiàn)位置使用該函數(shù)的函數(shù)(也稱主調(diào)函數(shù))中。與主調(diào)函數(shù)在同一文件中,但在所有函數(shù)之外。與主調(diào)函數(shù)在不同文件中(所有函數(shù)之外)。這時,主函數(shù)所在的文件必須用#include指令包含原型所在的文件。如果在函數(shù)的使用之前,用戶沒有提供函數(shù)聲明,則系統(tǒng)將根據(jù)猜測,同時。函數(shù)的聲明原型(3)函數(shù)的聲明和函數(shù)的定義不同函數(shù)的聲明只需提供類型檢查需要的函數(shù)參數(shù)類型和返回值類型等信息。函數(shù)的定義則除了函數(shù)聲明所提供的這些信息外還必須提供對函數(shù)功能的描述。因而函數(shù)的定義可以起到函數(shù)聲明的作用。函數(shù)的定義是必須的。函數(shù)的聲明不是必須的(當(dāng)函數(shù)的定義在使用之前,或系統(tǒng)可正確猜測到所需的信息時,可以不提供
6、函數(shù)聲明)。同一個函數(shù)只能定義一次。同一個函數(shù)可以進(jìn)行多次聲明。示例:P110返回函數(shù)調(diào)用概述函數(shù)的使用稱為函數(shù)調(diào)用。函數(shù)調(diào)用的一般形式是函數(shù)調(diào)用可以出現(xiàn)在函數(shù)語句中,例:printf(“%d”, 1+1);函數(shù)表達(dá)式中,例:c=getchar();函數(shù)的參數(shù)中,例:z=max(sqrt(x), y);示例返回函數(shù)名函數(shù)名()實(shí)際參數(shù)表實(shí)際參數(shù)表表達(dá)式表達(dá)式1, 表達(dá)式表達(dá)式2, 函數(shù)的參數(shù)傳遞函數(shù)調(diào)用時,主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。函數(shù)調(diào)用時,主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)傳遞關(guān)系。下圖是一對具體調(diào)用的數(shù)據(jù)傳遞下圖是一對具體調(diào)用的數(shù)據(jù)傳遞 形參在未出現(xiàn)函數(shù)調(diào)用時并不占內(nèi)存中的存儲單元
7、。只有形參在未出現(xiàn)函數(shù)調(diào)用時并不占內(nèi)存中的存儲單元。只有發(fā)生函數(shù)調(diào)用時,形參才被分配空間;同時,當(dāng)函數(shù)調(diào)用發(fā)生函數(shù)調(diào)用時,形參才被分配空間;同時,當(dāng)函數(shù)調(diào)用結(jié)束后,形參所占的內(nèi)存單元也被釋放。結(jié)束后,形參所占的內(nèi)存單元也被釋放。實(shí)參可以是常量、變量或表達(dá)式,但要求有確定的值。實(shí)參可以是常量、變量或表達(dá)式,但要求有確定的值。C語言中規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是語言中規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“”,即單向傳遞。函數(shù)中對形參的修改不影響實(shí)參。,即單向傳遞。函數(shù)中對形參的修改不影響實(shí)參。例見例見P108 6.1.3返回c=max (a, b);max (int x, int y) i
8、nt z; return (z=xy?x:y); 函數(shù)的返回值函數(shù)的返回值是通過函數(shù)中的函數(shù)的返回值是通過函數(shù)中的return語句,傳遞出來的。語句,傳遞出來的。return語句的一般形式是語句的一般形式是return 表達(dá)式表達(dá)式; return不是必須的。如果一個函數(shù)定義為需要返回值(其不是必須的。如果一個函數(shù)定義為需要返回值(其函數(shù)返回值類型不是函數(shù)返回值類型不是void)而函數(shù)中不包含)而函數(shù)中不包含return語句,語句,則函數(shù)的返回值是則函數(shù)的返回值是。如果一個函數(shù)定義為不需要返回值(即,其函數(shù)返回值為如果一個函數(shù)定義為不需要返回值(即,其函數(shù)返回值為void),函數(shù)中也可以包含)
9、,函數(shù)中也可以包含return語句,形式為:語句,形式為:return;示例返回函數(shù)的嵌套調(diào)用C不允許嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù)。函數(shù)的嵌套調(diào)用是指在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。main函數(shù)調(diào)用a函數(shù)結(jié)束 a函數(shù)調(diào)用b函數(shù) b函數(shù)返回函數(shù)的遞歸調(diào)用(1)遞歸的思想是指把一個規(guī)模較大的問題轉(zhuǎn)化成形式相同但規(guī)模小一些的問題加以解決。例如求e的n次冪。en=1 當(dāng)n=0時een-1 當(dāng)n=1,2,3時具有遞歸特性的問題一般具有如下特點(diǎn):1、原始問題可轉(zhuǎn)化為解決方法相同的新問題;2、新問題的規(guī)模比原始問題??;3、新問題又可轉(zhuǎn)化為解決方法相同的規(guī)模更小的新問題,直到終結(jié)條件為止。函數(shù)的
10、遞歸調(diào)用(2)在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用函數(shù)本身的情況,稱為函數(shù)的遞歸調(diào)用。兩種形式的遞歸直接遞歸:f1中調(diào)用f1間接遞歸:f1中調(diào)用f2、f2再調(diào)用f1遞歸函數(shù)的編寫與使用應(yīng)注意:遞歸函數(shù)一定要有出口示例遞歸函數(shù)執(zhí)行情況分析Fibonacci數(shù)列返回運(yùn)算符小結(jié)返回示例:函數(shù)定義、聲明與調(diào)用void main() float a,b,c; scanf(%f,%f,&a,&b); c=add(a,b); printf(sum is %fn,c);float add(float x,float y) float z=x+y; return z;返回示例:函數(shù)返回值
11、max (float x,float y) float z; z=xy?x:y; return z;void main () float a, b; int c; scanf (%f%f, &a, &b); c=max (a,b); printf (Max is %dn,c);返回如果輸入是如果輸入是10.3 10.8,函數(shù),函數(shù)max的返的返回值是多少?回值是多少?示例:遞歸函數(shù)執(zhí)行情況分析遞歸調(diào)用的過程可分為兩個階段:遞推和回歸例如,求3!的遞歸算法的求值過程:0!=1(已知條件)3!=3*2!2!=2*1!1!=1*0!1!=1*1=12!=2*1!=2*1=23!=3*2!=3*2=6求n!的遞歸函數(shù)定義如下: long fact(int n) if(n=0) return 1L; return n*fact(n-1);可見,在遞歸函數(shù)中必須有:可見,在遞歸函數(shù)中必須有: 1 1、遞歸結(jié)束條件、遞歸結(jié)束條件 2 2、遞歸調(diào)用語句、遞歸調(diào)用語句返回示例:Fibonacc
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球丙二醛行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國低空洞焊膏行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025辦公寫字樓出租合同范本2
- 活牛購銷合同
- 廣場商鋪?zhàn)赓U合同
- 2025北京市非居民供熱采暖合同(合同版本)
- 文化傳播項目合同
- 門窗安裝工承包合同范本
- 提升跨部門協(xié)作能力的技能培訓(xùn)
- 合同協(xié)議框架性合作協(xié)議
- 創(chuàng)業(yè)計劃路演-美甲
- 梁山伯與祝英臺小提琴譜樂譜
- 我國全科醫(yī)生培訓(xùn)模式
- 《摔跤吧爸爸》觀后感PPT
- 機(jī)構(gòu)編制重要事項的報告范文(5篇)
- DBJ51-T 188-2022 預(yù)拌流態(tài)固化土工程應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 《長津湖》電影賞析PPT
- 多維閱讀第10級 who is who 看看都是誰
- 滑雪運(yùn)動介紹
- 高二下學(xué)期英語閱讀限時訓(xùn)練(一)
- 半導(dǎo)體制造工藝-13薄膜沉積(下)綜述課件
評論
0/150
提交評論