版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、函數(shù)語言第1頁,共41頁,2022年,5月20日,9點43分,星期一9.1 為什么要有函數(shù)與函數(shù)的分類9.2 函數(shù)的定義形式9.3 局部變量與全局變量 9.4 函數(shù)的參數(shù)與函數(shù)的值9.5 函數(shù)的調用9.6 函數(shù)的嵌套調用9.7 函數(shù)的遞歸調用9.8 數(shù)組作為函數(shù)的參數(shù)9.9 變量的存儲9.10 內部函數(shù)與外部函數(shù)9.11 函數(shù)應用舉例9.12 本章小結 第9章 函數(shù)第2頁,共41頁,2022年,5月20日,9點43分,星期一9.1 為什么要有函數(shù)與函數(shù)的分類9.1.1 為什么要有函數(shù)void print1()/*print1()函數(shù)*/*輸出一系列*字符*/printf(“*n”);void
2、print2()/*print2()函數(shù)*/*輸出Welcome to you!*/printf(“Welcome to you!n”);void main()print1();/*調用print1()函數(shù)*/print2();/*調用print2()函數(shù)*/第3頁,共41頁,2022年,5月20日,9點43分,星期一9.1 為什么要有函數(shù)與函數(shù)的分類9.1.2 函數(shù)有哪些庫函數(shù)與用戶函數(shù)1從用戶角度看,函數(shù)可以分為庫函數(shù)和用戶函數(shù)2從函數(shù)的形式上看,函數(shù)可以分為帶參數(shù)的函數(shù)和不帶參數(shù)的函數(shù)第4頁,共41頁,2022年,5月20日,9點43分,星期一9.2 函數(shù)的定義形式9.2.1 不帶參數(shù)的
3、函數(shù)定義形式 不帶參數(shù)的函數(shù)的定義形式如下: 類型說明符 函數(shù)名() 聲明部分 語句部分 void printX()/*類型說明符和函數(shù)名*/ char c=A; /*聲明部分*/ c=c+32; /*語句部分*/ printf(“%cn”,c); /*語句部分*/ 第5頁,共41頁,2022年,5月20日,9點43分,星期一9.2 函數(shù)的定義形式9.2.2 帶參數(shù)的函數(shù)定義形式有參數(shù)列表 帶參數(shù)的函數(shù)的定義形式如下: 類型說明符 函數(shù)名(形式參數(shù)表列) 聲明部分 語句部分 int max(int a,int b) /*int是類型說明符、max是函數(shù)名、a和b都是形式參數(shù)*/int c; /
4、*定義變量c*/if(ab) /*如果a大于b*/c=a; /*將a賦值給c*/else/*如果a小于等于b*/c=b; /*將b賦值給c*/return c; /*將c返回給調用函數(shù)*/第6頁,共41頁,2022年,5月20日,9點43分,星期一9.2 函數(shù)的定義形式9.2.3 帶參數(shù)的函數(shù)定義形式形參定義的傳統(tǒng)方式 類型說明符 函數(shù)名(形式參數(shù)名) 說明形式參數(shù)類型 聲明部分 語句部分 int max(a,b)/*圓括號內包括形式參數(shù)名*/int a,b; /*說明形式參數(shù)a和b的類型*/int c; /*定義變量c*/if(ab) /*如果a大于b*/c=a; /*將a賦值給c*/els
5、e/*如果a小于等于bc=b; /*將b賦值給c*/return c; /*將c返回給調用函數(shù)*/第7頁,共41頁,2022年,5月20日,9點43分,星期一9.3 局部變量與全局變量9.3.1 局部變量 1為什么要有局部變量 2什么是局部變量 【例9_1】下面的代碼是一個測試局部變量有效性的程序。第8頁,共41頁,2022年,5月20日,9點43分,星期一9.3 局部變量與全局變量9.3.2 全局變量1為什么要有全局變量2全局變量的使用第9頁,共41頁,2022年,5月20日,9點43分,星期一9.3 局部變量與全局變量【例9_2】下面的程序是測試全局變量的作用范圍。第10頁,共41頁,20
6、22年,5月20日,9點43分,星期一9.3 局部變量與全局變量3全局變量與某個函數(shù)中的局部變量變量名相同在該函數(shù)中,局部函數(shù)有效 第11頁,共41頁,2022年,5月20日,9點43分,星期一9.4 函數(shù)的參數(shù)與函數(shù)的值9.4.1 形式參數(shù)與實際參數(shù)void main()int x,y,z; scanf(“%d,%d”,&x,&y); z=max(x,y); printf(“max=%dn”,&z); int max(int a,int b)int c; if(ab) c=a;elsec=b;return c; 第12頁,共41頁,2022年,5月20日,9點43分,星期一9.4 函數(shù)的參數(shù)
7、與函數(shù)的值1在函數(shù)調用時,需要為形式參數(shù)分配內存單元2實際參數(shù)可以是變量、常量、常數(shù)、表達式3在用戶定義的函數(shù)中,必須逐個說明形參的類型 int max(int a,int b)/*分別說明a和b的類型都是int型*/4實際參數(shù)與形式參數(shù)的類型應當相同或者兼容5實際參數(shù)與形式參數(shù)的傳遞方式值傳遞第13頁,共41頁,2022年,5月20日,9點43分,星期一9.4 函數(shù)的參數(shù)與函數(shù)的值9.4.2 函數(shù)的返回值int max(int a,int b)/*函數(shù)定義*/return (ab?a:b); /*return是一個條件表達式*/第14頁,共41頁,2022年,5月20日,9點43分,星期一9
8、.4 函數(shù)的參數(shù)與函數(shù)的值【例9_4】在主函數(shù)中,輸入兩個float型數(shù)據(jù)a和b,調用min函數(shù),得到a和b中的較小者。如果min函數(shù)中的return后的表達式類型與min的函數(shù)類型不一致,輸出結果是什么?第15頁,共41頁,2022年,5月20日,9點43分,星期一9.5 函數(shù)的調用9.5.1 函數(shù)調用的一般形式 函數(shù)調用就是在主調函數(shù)中使用被調用函數(shù)。函數(shù)調用的一般形式如下: 函數(shù)名(實際參數(shù)表列);#includevoid main()int s,a,b;/*定義變量s、a、b*/scanf(%d,%d,&a,&b); /*輸入a和b的值*/s=sum(a,b); /*調用求和函數(shù)sum
9、*/printf(sum=%dn,s); /*輸出a和b的和s*/int sum(int x,int y) /*求和函數(shù)的定義*/int s;s=x+y; /*求x和y的值s*/return s; /*返回s的值*/第16頁,共41頁,2022年,5月20日,9點43分,星期一9.5 函數(shù)的調用【例9_5】如果實際參數(shù)有多個,對實際參數(shù)的求值順序并不是確定的,有的系統(tǒng)從左到右進行求值,有的系統(tǒng)從右到左進行求值。為了說明這一點,下面是一個程序的代碼。第17頁,共41頁,2022年,5月20日,9點43分,星期一9.5 函數(shù)的調用9.5.2 函數(shù)調用的方式1一個函數(shù)作為一個語句 printf(“H
10、ello are you!n”);2函數(shù)作為表達式的一部分 z=max(a,b)+max(c,d);/*函數(shù)作為表達式的一部分*/ z=3+max(a,b); /*函數(shù)作為表達式一部分*/3函數(shù)可以作為函數(shù)參數(shù) s=min(min(a,b),c);第18頁,共41頁,2022年,5月20日,9點43分,星期一9.5 函數(shù)的調用9.5.3 對被調用函數(shù)的聲明1為什么要對被調用函數(shù)進行聲明2對被調用函數(shù)進行聲明【例9_6】輸入兩個整數(shù)a和b,編寫一個用戶函數(shù)求a和b的乘積。3對被調用函數(shù)進行聲明需要注意的問題(1)函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)類型2,);(2)函數(shù)類型 函數(shù)名(參數(shù)類型1 參
11、數(shù)名,參數(shù)類型2 參數(shù)名,);第19頁,共41頁,2022年,5月20日,9點43分,星期一9.6 函數(shù)的嵌套調用9.6.1 函數(shù)的嵌套調用過程第20頁,共41頁,2022年,5月20日,9點43分,星期一9.6 函數(shù)的嵌套調用9.6.2 函數(shù)的嵌套應用舉例求1n自然數(shù)k次方之和【例9_7】求1n整數(shù)的k次方之和。第21頁,共41頁,2022年,5月20日,9點43分,星期一9.7 函數(shù)的遞歸調用9.7.1 什么是遞歸自己調用自己 int f(int n) f(n-1);/*調用自己*/ 第22頁,共41頁,2022年,5月20日,9點43分,星期一9.7 函數(shù)的遞歸調用9.7.2 遞歸函數(shù)應
12、用舉例求n!第23頁,共41頁,2022年,5月20日,9點43分,星期一9.7 函數(shù)的遞歸調用【例9_8】請編寫一個求n!的遞歸程序。第24頁,共41頁,2022年,5月20日,9點43分,星期一9.7 函數(shù)的遞歸調用9.7.3 遞歸函數(shù)調用應用舉例Fibonacci數(shù)列【例9_9】求Fibonacci數(shù)列的第i項。Fibonacci數(shù)列每一項如下:0,1,1,2,3,5,8,13,21,第25頁,共41頁,2022年,5月20日,9點43分,星期一9.8 數(shù)組作為函數(shù)的參數(shù)9.8.1 數(shù)組元素作為函數(shù)的參數(shù)只能傳遞一個數(shù)組元素【例9_10】請輸入10個正整數(shù)并保存到數(shù)組中,編寫一個函數(shù)判斷
13、數(shù)組中的元素是否是質數(shù)。第26頁,共41頁,2022年,5月20日,9點43分,星期一9.8 數(shù)組作為函數(shù)的參數(shù)9.8.2 數(shù)組名作為函數(shù)的參數(shù)可以傳遞整個數(shù)組【例9_11】已知一個一維數(shù)組a存了10個整數(shù),求這個數(shù)組中元素的最大值。第27頁,共41頁,2022年,5月20日,9點43分,星期一9.8 數(shù)組作為函數(shù)的參數(shù)【例9_12】利用選擇法對數(shù)組中的元素從小到大排序。1為什么傳遞數(shù)組名就能傳遞整個數(shù)組元素數(shù)組存儲的連續(xù)性2數(shù)組名作為參數(shù)傳遞傳遞的是數(shù)組首地址3什么是選擇排序每次選擇最小的元素存放9.8.3 數(shù)組名作為參數(shù)傳遞實際上傳遞的是數(shù)組的首地址第28頁,共41頁,2022年,5月20
14、日,9點43分,星期一9.8 數(shù)組作為函數(shù)的參數(shù)第29頁,共41頁,2022年,5月20日,9點43分,星期一9.8 數(shù)組作為函數(shù)的參數(shù)9.8.4 多維數(shù)組名作為函數(shù)的參數(shù)傳遞整個數(shù)組【例9_13】求二維數(shù)組a中主對角線上的元素之和。第30頁,共41頁,2022年,5月20日,9點43分,星期一9.9 變量的存儲9.9.1 什么是動態(tài)存儲與靜態(tài)存儲生存期不同9.9.2 auto變量自動類型變量 auto int a,b;/*沒有省略auto的情況*/ int a,b; /*省略了auto的情況*/9.9.3 static變量靜態(tài)變量 static int a=0;/*使用static說明變量a
15、是靜態(tài)的*/第31頁,共41頁,2022年,5月20日,9點43分,星期一9.9 變量的存儲【例9_15】下面的程序是使用static求n的階乘。 【例9_14】以下程序是為了說明auto變量與static變量的區(qū)別。第32頁,共41頁,2022年,5月20日,9點43分,星期一9.9 變量的存儲9.9.4 register變量使運行速度更快的變量【例9_16】使用register變量求n的階乘。第33頁,共41頁,2022年,5月20日,9點43分,星期一9.9 變量的存儲9.9.5 extern變量聲明外部變量【例9_17】在單文件中使用extern聲明外部變量。第34頁,共41頁,202
16、2年,5月20日,9點43分,星期一9.9 變量的存儲2在多文件中使用extern聲明外部變量擴展到多個文件初始化賦值的一般形式為:【例9_18】在多文件中使用extern聲明外部變量。第35頁,共41頁,2022年,5月20日,9點43分,星期一9.10 內部函數(shù)與外部函數(shù)9.10.1 內部函數(shù)使用static1為什么要有內部函數(shù)2如何定義內部函數(shù) 定義內部函數(shù)的形式如下: static 類型說明符 函數(shù)名(形式參數(shù)列表)【例9_19】內部函數(shù)的使用。第36頁,共41頁,2022年,5月20日,9點43分,星期一9.10 內部函數(shù)與外部函數(shù)9.10.2 外部函數(shù)使用extern1為什么要有外
17、部函數(shù)2如何定義外部函數(shù) 外部函數(shù)的定義形式如下: extern 類型說明符 函數(shù)名(形式參數(shù)列表)【例9_20】外部函數(shù)的使用。第37頁,共41頁,2022年,5月20日,9點43分,星期一9.11 函數(shù)應用舉例9.11.1 函數(shù)應用舉例遞歸求解n個數(shù)的最大值【例9_21】編寫一個遞歸函數(shù)findmax(int a,int n),求數(shù)組a中的最大的一個元素。第38頁,共41頁,2022年,5月20日,9點43分,星期一9.11 函數(shù)應用舉例9.11.2 函數(shù)應用舉例遞歸求解a與b的最大公約數(shù)【例9_22】任意輸入兩個正整數(shù)a和b,編寫一個遞歸函數(shù)求a與b的最大公約數(shù)。 a與b的最大公約數(shù)的遞歸定義如下:第39頁,共41頁,2022年,5月20日,9點43分,星期一9.11 函數(shù)應用舉例9.11.3 函數(shù)應用舉例字符數(shù)組元素逆序存放【例9_23】編寫一個函數(shù)inverse,將字符數(shù)組中的字符逆序存放,并在主函數(shù)中輸出逆序后的數(shù)組中的元素。第40
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度租賃房產維修責任轉租三方協(xié)議
- 懸索橋的施工方案
- 木制容器智能化生產-深度研究
- 木材產業(yè)綠色轉型-深度研究
- 拆除橋梁施工方案
- 校園文化施工方案
- 脫硫設備安裝施工方案
- 機器學習可解釋性-深度研究
- 圖神經網絡推理-深度研究
- 2025年廣西生態(tài)工程職業(yè)技術學院高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2024企業(yè)答謝晚宴會務合同3篇
- 《客艙安全管理與應急處置》課件-第14講 應急撤離
- 中華人民共和國文物保護法
- 節(jié)前物業(yè)安全培訓
- 高甘油三酯血癥相關的器官損傷
- 手術室護士考試題及答案
- 牙膏項目創(chuàng)業(yè)計劃書
- 單位食堂供餐方案
- DB42-T 2204-2024 湖沼濕地溫室氣體通量監(jiān)測技術規(guī)范
- 急性會厭炎的護理
- 七年級下冊《Reading 1 A brave young man》優(yōu)質課教案牛津譯林版-七年級英語教案
評論
0/150
提交評論