大學(xué)計算機(jī)C語言函數(shù)(1 函數(shù)的定義和使用)_第1頁
大學(xué)計算機(jī)C語言函數(shù)(1 函數(shù)的定義和使用)_第2頁
大學(xué)計算機(jī)C語言函數(shù)(1 函數(shù)的定義和使用)_第3頁
大學(xué)計算機(jī)C語言函數(shù)(1 函數(shù)的定義和使用)_第4頁
大學(xué)計算機(jī)C語言函數(shù)(1 函數(shù)的定義和使用)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論