




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、一、函數(shù)的概念一、函數(shù)的概念 函數(shù)是形式上獨立、功能上完整的程序段(塊)。在C程序設計中常將一些常用功能模塊編寫成函數(shù)。函數(shù)可以完成特定的計算或操作處理功能。 C程序由函數(shù)組成;函數(shù)在形式上是平行的,不允許嵌套定義;C程序只執(zhí)行主函數(shù),子函數(shù)必須通過主函數(shù)或其他子函數(shù)的調(diào)用才能被執(zhí)行;子函數(shù)不能調(diào)用主函數(shù)。實質(zhì)上,設計程序就是設計函數(shù)。二、函數(shù)的分類二、函數(shù)的分類(一)從用戶的角度分(一)從用戶的角度分1.1.標準函數(shù),即庫函數(shù)標準函數(shù),即庫函數(shù) ANSI CANSI C預先定義的用戶可直接使用的函數(shù);預先定義的用戶可直接使用的函數(shù);使用庫函數(shù)使用庫函數(shù)時,必須用時,必須用#include#i
2、nclude把該函數(shù)所在的頭文件包含進來。把該函數(shù)所在的頭文件包含進來。2.2.用戶自定義函數(shù)用戶自定義函數(shù) 是用戶為了解決各種應用問題而自行設計的函是用戶為了解決各種應用問題而自行設計的函數(shù)數(shù)。用戶自定義函數(shù)必須先定義后使用用戶自定義函數(shù)必須先定義后使用! !(二)從形式上分(二)從形式上分1.1.無參函數(shù):無參函數(shù): 即無形式參數(shù)的函數(shù)。即無形式參數(shù)的函數(shù)。 如:如:getchar()getchar()2.2.有參函數(shù)有參函數(shù) 即帶有形式參數(shù)的函數(shù)即帶有形式參數(shù)的函數(shù) 如:如:putchar(ch)putchar(ch)、sqrt(x)sqrt(x)三、函數(shù)的定義三、函數(shù)的定義1、 無參函
3、數(shù)的定義無參函數(shù)的定義 函數(shù)名函數(shù)名( void ) 函數(shù)體函數(shù)體其中:函數(shù)返回值類型表示函數(shù)的返回結(jié)果值類型,函數(shù)只能其中:函數(shù)返回值類型表示函數(shù)的返回結(jié)果值類型,函數(shù)只能有一個返回值,若函數(shù)無返回值即用有一個返回值,若函數(shù)無返回值即用void聲明;返回函數(shù)值需聲明;返回函數(shù)值需使用:使用:return 變量變量|表達式;表達式; 函數(shù)名由用戶按標識符的命名規(guī)則自行給定,但不能與函數(shù)名由用戶按標識符的命名規(guī)則自行給定,但不能與標準函數(shù)同名;標準函數(shù)同名; 圓括號中的關鍵字圓括號中的關鍵字void表示函數(shù)無形式參數(shù);表示函數(shù)無形式參數(shù); 函數(shù)體是由實現(xiàn)函數(shù)功能必需的語句組成。函數(shù)體是由實現(xiàn)函數(shù)
4、功能必需的語句組成。例例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;數(shù)據(jù)類型數(shù)據(jù)類型2 2、有參函數(shù)的定義、有參函數(shù)的定義函數(shù)首部函數(shù)首部例例2 2:定義有參函數(shù)計算兩個整數(shù)的平均。:定義有參函數(shù)計算兩個整數(shù)的平均。形參為整形變量形參為整形變量x x和和y y變量變量a1a1和和b1
5、b1為實際參數(shù)為實際參數(shù)四、函數(shù)的調(diào)用四、函數(shù)的調(diào)用有返回值時(有返回值時(即函數(shù)功能為某種計算功能即函數(shù)功能為某種計算功能)返回值返回值 = = 函數(shù)名函數(shù)名( (實參表列實參表列););無返回值時(無返回值時(即函數(shù)功能是完成某種操作或處理)即函數(shù)功能是完成某種操作或處理)函數(shù)名函數(shù)名( (實參表列實參表列););2 2、具體調(diào)用形式、具體調(diào)用形式 例例3:定義求:定義求n!函數(shù),然后調(diào)用該函數(shù)函數(shù),然后調(diào)用該函數(shù)求求sum=1!+2!+3!+m!的值。的值。#include int max ( int x, int y ) int z;if (x y) z = x;else z = y;
6、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;max1 = 78max2 = 78e = 21max3 = 99該程序的輸出是什么?#include #include int Prim(int x) int i, j, k; k
7、= (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 ; 1 1、為什么要聲明函數(shù)原型?、為什么要聲明函數(shù)原型? 函數(shù)應該先定義,然后才能調(diào)用。但是,如果函數(shù)的調(diào)用出現(xiàn)在函數(shù)的定義之前,就必須對被向前調(diào)用的函數(shù)進行函數(shù)原型聲明,否則就會出現(xiàn)函數(shù)調(diào)用錯誤。2 2、聲明格式:、聲明格式: 函數(shù)類型 函數(shù)名(類型名1 形參數(shù)1,);或 函數(shù)類型
8、 函數(shù)名(類型名1,類型名2,);注意:如果函數(shù)嚴格遵循先定義后調(diào)用原則就無需進行函數(shù)原型聲明。例例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ù)Fac的原型聲明先調(diào)用函數(shù)Fac函數(shù)Fac的定義出現(xiàn)在調(diào)用之后函數(shù)定義函數(shù)定義函數(shù)調(diào)用函數(shù)調(diào)用例例7:以下函數(shù)為先定義后調(diào)用,不用聲明原型:以下函數(shù)為先定義后調(diào)用,不用聲明原型int main()a();return 0;a 函數(shù)函數(shù)b();return;b函數(shù)函數(shù)retu
9、rn; 在調(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)用返回過程:printf (“c = %fn”, c); return 0;b函數(shù)函數(shù)main調(diào)用調(diào)用add函數(shù)函數(shù)調(diào)用調(diào)用b函數(shù)函數(shù)add函數(shù)函數(shù) 結(jié)束結(jié)束 在調(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ù)
10、f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù) 有有3個人坐在一起,問第個人坐在一起,問第3個人多少歲?他說比第個人多少歲?他說比第2個人大個人大2歲。問第歲。問第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)+2程序如下:程序如下:#include int age(int n) int c; if (n = 1) c =
11、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;153下面程序的輸出結(jié)果是(下面程序的輸出結(jié)果是( )。)。#include int f(int a, int b);int main(void) int i = 2, p; p = f( i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 注冊會計師合并報表結(jié)構(gòu)試題及答案
- 項目管理中的工作量評估與分配考題及答案
- 項目管理趨勢與方法的創(chuàng)新性試題及答案
- 特殊學校課題申報書
- 寧夏吳忠市本年度(2025)小學一年級數(shù)學統(tǒng)編版專題練習((上下)學期)試卷及答案
- 定期評估國際金融理財師考試的復習情況試題及答案
- 個人經(jīng)驗2025年特許金融分析師考試試題及答案
- 注冊會計師綜合能力考察試題及答案
- 2025年注冊會計師考試風險評估方法探討試題及答案
- 注冊會計師考生選校建議試題及答案
- 安全帶檢測報告(共8頁)
- 壁球館施工方案
- 公司erp項目激勵制度
- Excel函數(shù)和公式練習
- 申請英國簽證在職證明中英文版(共2頁)
- 國際石油合同講座1018
- 2018版公路工程標準施工招標文件(工程量清單計量規(guī)則部分)
- 某核電項目機械貫穿件安裝施工管理技術(shù)研究
- 基于單片機的接觸器控制器設計
- 50t汽車吊性能表
- 建筑幕墻設計說明(最新規(guī)范)
評論
0/150
提交評論