版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、12一、函數(shù)的概念一、函數(shù)的概念 函數(shù)是形式上獨(dú)立、功能上完整的程序段(塊)。在C程序設(shè)計中常將一些常用功能模塊編寫成函數(shù)。函數(shù)可以完成特定的計算或操作處理功能。 C程序由函數(shù)組成;函數(shù)在形式上是平行的,不允許嵌套定義;C程序只執(zhí)行主函數(shù),子函數(shù)必須通過主函數(shù)或其他子函數(shù)的調(diào)用才能被執(zhí)行;子函數(shù)不能調(diào)用主函數(shù)。實(shí)質(zhì)上,設(shè)計程序就是設(shè)計函數(shù)。3二、函數(shù)的分類二、函數(shù)的分類(一)從用戶的角度分(一)從用戶的角度分1.1.標(biāo)準(zhǔn)函數(shù),即庫函數(shù)標(biāo)準(zhǔn)函數(shù),即庫函數(shù) ANSI CANSI C預(yù)先定義的用戶可直接使用的函數(shù);預(yù)先定義的用戶可直接使用的函數(shù);使用庫函數(shù)使用庫函數(shù)時,必須用時,必須用#includ
2、e#include把該函數(shù)所在的頭文件包含進(jìn)來。把該函數(shù)所在的頭文件包含進(jìn)來。2.2.用戶自定義函數(shù)用戶自定義函數(shù) 是用戶為了解決各種應(yīng)用問題而自行設(shè)計的函是用戶為了解決各種應(yīng)用問題而自行設(shè)計的函數(shù)數(shù)。用戶自定義函數(shù)必須先定義后使用用戶自定義函數(shù)必須先定義后使用! !(二)從形式上分(二)從形式上分1.1.無參函數(shù):無參函數(shù): 即無形式參數(shù)的函數(shù)。即無形式參數(shù)的函數(shù)。 如:如:getchargetchar()()2.2.有參函數(shù)有參函數(shù) 即帶有形式參數(shù)的函數(shù)即帶有形式參數(shù)的函數(shù) 如:如:putcharputchar( (chch) )、sqrtsqrt(x)(x)4三、函數(shù)的定義三、函數(shù)的定義
3、1、 無參函數(shù)的定義無參函數(shù)的定義 函數(shù)名函數(shù)名( void ) 函數(shù)體函數(shù)體其中:函數(shù)返回值類型表示函數(shù)的返回結(jié)果值類型,函數(shù)只能其中:函數(shù)返回值類型表示函數(shù)的返回結(jié)果值類型,函數(shù)只能有一個返回值,若函數(shù)無返回值即用有一個返回值,若函數(shù)無返回值即用void聲明;返回函數(shù)值需聲明;返回函數(shù)值需使用:使用:return 變量變量|表達(dá)式;表達(dá)式; 函數(shù)名由用戶按標(biāo)識符的命名規(guī)則自行給定,但不能與函數(shù)名由用戶按標(biāo)識符的命名規(guī)則自行給定,但不能與標(biāo)準(zhǔn)函數(shù)同名;標(biāo)準(zhǔn)函數(shù)同名; 圓括號中的關(guān)鍵字圓括號中的關(guān)鍵字void表示函數(shù)無形式參數(shù);表示函數(shù)無形式參數(shù); 函數(shù)體是由實(shí)現(xiàn)函數(shù)功能必需的語句組成。函數(shù)體
4、是由實(shí)現(xiàn)函數(shù)功能必需的語句組成。5例例1:無參函數(shù)的定義。:無參函數(shù)的定義。#includevoid PrintMessage (void)printf(t*n);printf(t Programming is fun.n);printf(t*n);int main(void)PrintMessage ( );PrintMessage ( );PrintMessage ( );return 0;6數(shù)據(jù)類型數(shù)據(jù)類型2 2、有參函數(shù)的定義、有參函數(shù)的定義7函數(shù)首部函數(shù)首部例例2 2:定義有參函數(shù)計算兩個整數(shù)的平均。:定義有參函數(shù)計算兩個整數(shù)的平均。8形參為整形變量形參為整形變量x x和和y y變量
5、變量a1a1和和b1b1為實(shí)際參數(shù)為實(shí)際參數(shù)9四、函數(shù)的調(diào)用四、函數(shù)的調(diào)用10有返回值時(有返回值時(即函數(shù)功能為某種計算功能即函數(shù)功能為某種計算功能)返回值返回值 = = 函數(shù)名函數(shù)名( (實(shí)參表列實(shí)參表列););無返回值時(無返回值時(即函數(shù)功能是完成某種操作或處理)即函數(shù)功能是完成某種操作或處理)函數(shù)名函數(shù)名( (實(shí)參表列實(shí)參表列););2 2、具體調(diào)用形式、具體調(diào)用形式11 12例例3:定義求:定義求n!函數(shù),然后調(diào)用該函數(shù)求函數(shù),然后調(diào)用該函數(shù)求sum=1!+2!+3!+m!的值。的值。1314#include int max ( int x, int y ) int z;if (x
6、 y) z = x;else z = y;return (z);int main(void) int a = 45, b = 78, c = 99, d, e;d = max(a, b); printf(max1 = %dn, d);printf(max2 = %dn, max(a, b);e = c - max(a, b);printf(e = %dn, e);printf(max3 = %dn, max(max(a, b), c);return 0;例例4:函數(shù)定義與調(diào)用:函數(shù)定義與調(diào)用max1 = 78max2 = 78e = 21max3 = 99該程序的輸出是什么?15例例5:定義求
7、素數(shù)的函數(shù),然后調(diào)用該函數(shù)求定義求素數(shù)的函數(shù),然后調(diào)用該函數(shù)求100到到200之間的所有素數(shù)。之間的所有素數(shù)。#include #include int Prim(int x) int i, j, k; k = (int)sqrt(i); for ( j = 2; j = k + 1) return 1; else return 0; int main(void) int i; for (i = 100; i = 200; i+) if ( Prim(i) ) printf(“%d, ”, i); return 0 ; 17五、函數(shù)原型聲明(五、函數(shù)原型聲明(prototype)1 1、為什么
8、要聲明函數(shù)原型?、為什么要聲明函數(shù)原型? 函數(shù)應(yīng)該先定義,然后才能調(diào)用。但是,如果函數(shù)的調(diào)用出現(xiàn)在函數(shù)的定義之前,就必須對被向前調(diào)用的函數(shù)進(jìn)行函數(shù)原型聲明,否則就會出現(xiàn)函數(shù)調(diào)用錯誤。2 2、聲明格式:、聲明格式: 函數(shù)類型 函數(shù)名(類型名1 形參數(shù)1,);或 函數(shù)類型 函數(shù)名(類型名1,類型名2,);注意:如果函數(shù)嚴(yán)格遵循先定義后調(diào)用原則就無需進(jìn)行函數(shù)原型聲明。18例例6 6:函數(shù)原型聲明(先調(diào)用后定義函數(shù)):函數(shù)原型聲明(先調(diào)用后定義函數(shù))#include double Fac(int n);int main(void) f1 = Fac(m); double Fac(int n) .函數(shù)F
9、ac的原型聲明先調(diào)用函數(shù)Fac函數(shù)Fac的定義出現(xiàn)在調(diào)用之后19函數(shù)定義函數(shù)定義函數(shù)調(diào)用函數(shù)調(diào)用例例7:以下函數(shù)為先定義后調(diào)用,不用聲明原型:以下函數(shù)為先定義后調(diào)用,不用聲明原型20例例 8:函數(shù)的原型聲明函數(shù)的原型聲明(先調(diào)用后定義先調(diào)用后定義)21int main()a();return 0;a 函數(shù)函數(shù)b();return;b函數(shù)函數(shù)return;六、函數(shù)的嵌套調(diào)用六、函數(shù)的嵌套調(diào)用 在調(diào)用一個函數(shù)的過程中,又調(diào)用其他的函數(shù),稱為在調(diào)用一個函數(shù)的過程中,又調(diào)用其他的函數(shù),稱為函數(shù)的嵌套調(diào)用。函數(shù)的嵌套調(diào)用。 以下為函數(shù)調(diào)用與調(diào)用返回過程:以下為函數(shù)調(diào)用與調(diào)用返回過程:22例例9 9:函數(shù)
10、的嵌套調(diào)用:函數(shù)的嵌套調(diào)用b函數(shù)函數(shù)main調(diào)用調(diào)用add函數(shù)函數(shù)調(diào)用調(diào)用b函數(shù)函數(shù)add函數(shù)函數(shù) 結(jié)束結(jié)束23七、函數(shù)的遞歸調(diào)用七、函數(shù)的遞歸調(diào)用 在調(diào)用一個函數(shù)的過程中,出現(xiàn)直接或間接地調(diào)用該在調(diào)用一個函數(shù)的過程中,出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。int f(int x)int y, z;z = f(y);return (2 * z);f函數(shù)調(diào)用f函數(shù)f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù)24例例1010:函數(shù)的遞歸調(diào)用:函數(shù)的遞歸調(diào)用 有有3個人坐在一起,問第個人坐在一起,問第3個人多少歲?他說比第個人多少歲?他說比第2個人大個人大2歲
11、。問第歲。問第2個人多少歲?他說比第個人多少歲?他說比第1個人大個人大2歲。最后問第歲。最后問第1個人,個人,他說是他說是10歲。請問第歲。請問第3個人多大?個人多大?分析:分析:age(3)=age(2)+2;age(2)=age(1)+2;age(1)=10;歸納:歸納:n=1 age(n)=10 n1 age(n)=age(n-1)+225程序如下:程序如下:#include int age(int n) int c; if (n = 1) c = 10; else if (n 1) c = age(n - 1) + 2; return c; int main(void) printf(“%d”, age(3); return 0;程序執(zhí)行過程如下:程序執(zhí)行過程如下:int main(void) printf(“%d”, age(3);int age(3) int c; c = age(2) + 2; return c;int age(2) int c; c = age(1) + 2; return c;int age(1) int c; c = 10; return c;2627283下面程序的輸出結(jié)果是(下面程序的輸出結(jié)果是( )。)。#include int f(int a,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 燃?xì)忮仩t與煤鍋爐、燃油鍋爐、電鍋爐的經(jīng)濟(jì)技術(shù)分析比較
- 江西省萍鄉(xiāng)市(2024年-2025年小學(xué)四年級語文)統(tǒng)編版摸底考試((上下)學(xué)期)試卷及答案
- 浙江省嘉興市(2024年-2025年小學(xué)四年級語文)人教版階段練習(xí)(上學(xué)期)試卷及答案
- 八年級語文上冊單元寫作深度指導(dǎo)(統(tǒng)編版)專題08 單元作文導(dǎo)寫(教案)
- 土石方補(bǔ)充合同模板
- 藝術(shù)校外培訓(xùn)合同模板
- 2024人教版數(shù)學(xué)一年級上冊教案2.2.7 練一練
- 公路水泥合同模板
- 農(nóng)業(yè)策劃定位合同模板
- Module 3 Unit 3 教學(xué)設(shè)計2024-2025學(xué)年外研版英語八年級上冊
- 小班安全《安安全全玩滑梯》
- 《蒜葉的生長》教學(xué)設(shè)計(江蘇省縣級優(yōu)課)x-五年級數(shù)學(xué)教案
- 混凝土擋墻施工方案
- 小學(xué)科學(xué)四年級下冊《彈力》省名師優(yōu)質(zhì)課獲獎?wù)n件市賽課一等獎?wù)n件
- 文心一言的使用指南
- 金日光九宮九類特供中藥
- 娛樂場所防災(zāi)減災(zāi)應(yīng)急預(yù)案
- 成人癌性疼痛護(hù)理-中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)2019
- PLC課程設(shè)計全自動洗衣機(jī)控制系統(tǒng)設(shè)計
- 2020江蘇高中英語新教材第一冊詞匯表
- 社區(qū)醫(yī)院藥房藥品管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)(常用版)
評論
0/150
提交評論