C語(yǔ)言程序設(shè)計(jì)第七章_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)第七章_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)第七章_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)第七章_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)第七章_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部第七章第七章 函數(shù)函數(shù)概述概述函數(shù)的定義函數(shù)的定義函數(shù)的調(diào)用函數(shù)的調(diào)用函數(shù)參數(shù)及其傳遞方式函數(shù)參數(shù)及其傳遞方式函數(shù)的嵌套與遞歸調(diào)用函數(shù)的嵌套與遞歸調(diào)用變量的存儲(chǔ)屬性變量的存儲(chǔ)屬性數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù) C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部概述概述 模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì) 基本思想:將一個(gè)大的程序按功能分割成一些小模塊基本思想:將一個(gè)大的程序按功能分割成一些小模塊, 特點(diǎn):特點(diǎn): 各模塊相對(duì)獨(dú)立、功能單一、結(jié)構(gòu)清晰、接口簡(jiǎn)單各模塊相對(duì)獨(dú)立、功能單一

2、、結(jié)構(gòu)清晰、接口簡(jiǎn)單 控制了程序設(shè)計(jì)的復(fù)雜性控制了程序設(shè)計(jì)的復(fù)雜性 提高元件的可靠性提高元件的可靠性 縮短開(kāi)發(fā)周期縮短開(kāi)發(fā)周期 避免程序開(kāi)發(fā)的重復(fù)勞動(dòng)避免程序開(kāi)發(fā)的重復(fù)勞動(dòng) 易于維護(hù)和功能擴(kuò)充易于維護(hù)和功能擴(kuò)充 開(kāi)發(fā)方法開(kāi)發(fā)方法: 自上向下自上向下,逐步分解,分而治之逐步分解,分而治之 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部源程序文件1預(yù)編譯命令說(shuō)明部分執(zhí)行部分函數(shù)1函數(shù)n源程序文件i源程序文件nC程序C C程序結(jié)構(gòu)程序結(jié)構(gòu)&C C是是函數(shù)式函數(shù)式語(yǔ)言語(yǔ)言&必須有且只能有一個(gè)名為必須有且只能有一個(gè)名為mainmain的主函數(shù)的主函數(shù)&C程序的執(zhí)行總

3、是程序的執(zhí)行總是從從mainmain函數(shù)開(kāi)始,在函數(shù)開(kāi)始,在mainmain中結(jié)束中結(jié)束&函數(shù)函數(shù)不能嵌套定義不能嵌套定義, ,可以嵌套調(diào)用可以嵌套調(diào)用C是模塊化程序設(shè)計(jì)語(yǔ)言是模塊化程序設(shè)計(jì)語(yǔ)言 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 從用戶角度從用戶角度 標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù)):由系統(tǒng)提供標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù)):由系統(tǒng)提供 用戶自定義函數(shù)用戶自定義函數(shù) 從函數(shù)功能的角度從函數(shù)功能的角度 有返回值函數(shù)有返回值函數(shù) 無(wú)返回值函數(shù)無(wú)返回值函數(shù) 從函數(shù)形式從函數(shù)形式 無(wú)參函數(shù)無(wú)參函數(shù) 有參函數(shù)有參函數(shù)使用使用庫(kù)函數(shù)庫(kù)函數(shù)應(yīng)注意:應(yīng)注意:1、函數(shù)功能、函數(shù)功能2、

4、函數(shù)參數(shù)的數(shù)目和順序,及各參數(shù)意義和類型、函數(shù)參數(shù)的數(shù)目和順序,及各參數(shù)意義和類型3、函數(shù)返回值意義和類型、函數(shù)返回值意義和類型4、需要使用的包含文件、需要使用的包含文件函數(shù)分類函數(shù)分類 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 一般格式一般格式合法標(biāo)識(shí)符合法標(biāo)識(shí)符函數(shù)返回值類型函數(shù)返回值類型缺省缺省int型型無(wú)返回值無(wú)返回值void函數(shù)體函數(shù)體函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名(形參類型說(shuō)明表形參類型說(shuō)明表)說(shuō)明部分說(shuō)明部分語(yǔ)句部分語(yǔ)句部分現(xiàn)代風(fēng)格現(xiàn)代風(fēng)格: :例例 有參函數(shù)(現(xiàn)代風(fēng)格)有參函數(shù)(現(xiàn)代風(fēng)格) int max(int x,int y) i

5、nt z; z=xy?x:y; return(z); 例例 有參函數(shù)(現(xiàn)代風(fēng)格)有參函數(shù)(現(xiàn)代風(fēng)格) int max(int x, y) int z; z=xy?x:y; return(z); 例例 空函數(shù)空函數(shù) dummy( ) 函數(shù)體為空函數(shù)體為空例例 無(wú)參函數(shù)無(wú)參函數(shù) printstar( ) printf(“*n”); 或或 printstar(void ) printf(“*n”); 函數(shù)的定義函數(shù)的定義 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部函數(shù)類型函數(shù)類型 函數(shù)名(形參表)函數(shù)名(形參表)形參類型說(shuō)明形參類型說(shuō)明說(shuō)明部分說(shuō)明部分語(yǔ)句部

6、分語(yǔ)句部分傳統(tǒng)風(fēng)格傳統(tǒng)風(fēng)格: :例例 有參函數(shù)(傳統(tǒng)風(fēng)格)有參函數(shù)(傳統(tǒng)風(fēng)格) int max(x,y) int x,y; int z; z=xy?x:y; return(z); 函數(shù)傳統(tǒng)風(fēng)格和例子函數(shù)傳統(tǒng)風(fēng)格和例子 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部調(diào)用形式調(diào)用形式 函數(shù)名函數(shù)名(實(shí)參表實(shí)參表);說(shuō)明:說(shuō)明:實(shí)參與形參實(shí)參與形參個(gè)數(shù)相等,類型一致,按順序一一對(duì)應(yīng)個(gè)數(shù)相等,類型一致,按順序一一對(duì)應(yīng)實(shí)參表求值順序,因系統(tǒng)而定(實(shí)參表求值順序,因系統(tǒng)而定(Turbo C 自右向左自右向左)函數(shù)調(diào)用函數(shù)調(diào)用 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章

7、函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部函數(shù)語(yǔ)句:函數(shù)語(yǔ)句: 例例 printstar(); printf(“Hello,World!n”);函數(shù)表達(dá)式:函數(shù)表達(dá)式: 例例 m=max(a,b)*2;函數(shù)參數(shù):函數(shù)參數(shù): 例例 printf(“%d”,max(a,b); m=max(a,max(b,c);函數(shù)的調(diào)用方式函數(shù)的調(diào)用方式 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 形參與實(shí)參形參與實(shí)參 形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名 實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式實(shí)際參數(shù):調(diào)用函數(shù)時(shí)

8、函數(shù)名后面括號(hào)中的表達(dá)式c=max(a,b);(main 函數(shù))函數(shù))(max 函數(shù))函數(shù))max(int x, int y) int z; z=xy?x:y; return(z); 例例 比較兩個(gè)數(shù)并輸出大者比較兩個(gè)數(shù)并輸出大者main() int a,b,c; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c);max(int x, int y) int z; z=xy?x:y; return(z);形參形參實(shí)參實(shí)參函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部說(shuō)

9、明:說(shuō)明:實(shí)參必須有確定的值實(shí)參必須有確定的值形參必須指定類型形參必須指定類型形參與實(shí)參形參與實(shí)參類型一致,個(gè)數(shù)相同類型一致,個(gè)數(shù)相同若形參與實(shí)參類型不一致,自動(dòng)按形參類型轉(zhuǎn)換若形參與實(shí)參類型不一致,自動(dòng)按形參類型轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換形參在函數(shù)被調(diào)用前不占內(nèi)存形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時(shí)為形參分函數(shù)調(diào)用時(shí)為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放形參與實(shí)參形參與實(shí)參形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式函數(shù)參數(shù)及其傳遞方式

10、函數(shù)參數(shù)及其傳遞方式 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 返回語(yǔ)句返回語(yǔ)句 形式:形式: return(表達(dá)式表達(dá)式); 或或 return 表達(dá)式表達(dá)式; 或或 return; 功能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,功能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時(shí)把返值帶給調(diào)用函數(shù)同時(shí)把返值帶給調(diào)用函數(shù) 說(shuō)明:說(shuō)明: 函數(shù)中可有多個(gè)函數(shù)中可有多個(gè)return語(yǔ)句語(yǔ)句 若無(wú)若無(wú)return語(yǔ)句,遇語(yǔ)句,遇時(shí),自動(dòng)返回調(diào)用函數(shù)時(shí),自動(dòng)返回調(diào)用函數(shù) 若函數(shù)類型與若函數(shù)類型與return語(yǔ)句中表達(dá)式值的類型不一致,按前語(yǔ)句中表達(dá)式值的類型不

11、一致,按前者為準(zhǔn),自動(dòng)轉(zhuǎn)換者為準(zhǔn),自動(dòng)轉(zhuǎn)換-函數(shù)調(diào)用轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換 void型函數(shù)型函數(shù)函數(shù)的值函數(shù)的值例例 無(wú)返回值函數(shù)無(wú)返回值函數(shù) void swap(int x,int y ) int temp; temp=x; x=y; y=temp; #includemain()int a,b;scanf(“%d,%d”,&a,&b);swap(a,b);printf(“%d,%d”,a,b); C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部對(duì)被調(diào)用函數(shù)要求:對(duì)被調(diào)用函數(shù)要求:必須是必須是已存在已存在的函數(shù)的函數(shù)庫(kù)函數(shù)庫(kù)函數(shù): #include 用戶自定義函數(shù)

12、用戶自定義函數(shù): 函數(shù)類型說(shuō)明函數(shù)類型說(shuō)明函數(shù)說(shuō)明函數(shù)說(shuō)明一般形式:一般形式: 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名(形參類型形參類型 形參名形參名,. ); 或或 函數(shù)類型函數(shù)類型 函數(shù)名函數(shù)名();作用:告訴編譯系統(tǒng)函數(shù)類型、參數(shù)個(gè)數(shù)及類型,以便檢驗(yàn)作用:告訴編譯系統(tǒng)函數(shù)類型、參數(shù)個(gè)數(shù)及類型,以便檢驗(yàn)函數(shù)定義函數(shù)定義與與函數(shù)說(shuō)明函數(shù)說(shuō)明不同不同函數(shù)說(shuō)明位置:函數(shù)說(shuō)明位置:程序的數(shù)據(jù)說(shuō)明部分(函數(shù)內(nèi)或外)程序的數(shù)據(jù)說(shuō)明部分(函數(shù)內(nèi)或外)下列情況下,可不作函數(shù)說(shuō)明下列情況下,可不作函數(shù)說(shuō)明若函數(shù)返值是若函數(shù)返值是char或或int型型,系統(tǒng)自動(dòng)按,系統(tǒng)自動(dòng)按int型處理型處理被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)

13、函數(shù)之前被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前函數(shù)說(shuō)明函數(shù)說(shuō)明P170 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部值傳遞值傳遞方式方式方式:函數(shù)調(diào)用時(shí)方式:函數(shù)調(diào)用時(shí),為形參分配單元為形參分配單元,并將實(shí)參的值并將實(shí)參的值復(fù)制復(fù)制到形參中;到形參中;調(diào)用結(jié)束,形參單元被釋放,實(shí)參單元仍保留并維持原值調(diào)用結(jié)束,形參單元被釋放,實(shí)參單元仍保留并維持原值特點(diǎn):特點(diǎn):形參與實(shí)參占用形參與實(shí)參占用不同不同的內(nèi)存單元的內(nèi)存單元單向單向傳遞傳遞參數(shù)傳遞方式參數(shù)傳遞方式 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部711x:y:調(diào)用前

14、:調(diào)用前:調(diào)用結(jié)束:調(diào)用結(jié)束:711x:y:#include main() int x=7,y=11; printf(x=%d,ty=%dn,x,y); printf(swapped:n); swap(x,y); printf(x=%d,ty=%dn,x,y);swap(int a,int b) int temp; temp=a; a=b; b=temp;調(diào)用:調(diào)用:711a:b:711x:y:swap:711x:y:117a:b:temp例例 交換兩個(gè)數(shù)交換兩個(gè)數(shù) C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 方式:函數(shù)調(diào)用時(shí),將數(shù)據(jù)的方式:函數(shù)調(diào)用時(shí)

15、,將數(shù)據(jù)的存儲(chǔ)地址存儲(chǔ)地址作為參數(shù)傳遞給形參作為參數(shù)傳遞給形參 特點(diǎn):特點(diǎn): 形參與實(shí)參占用形參與實(shí)參占用同樣同樣的存儲(chǔ)單元的存儲(chǔ)單元 “雙向雙向”傳遞傳遞 實(shí)參和形參必須是實(shí)參和形參必須是地址地址常量或變量常量或變量函數(shù)的地址傳遞函數(shù)的地址傳遞 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部swap(p1,p2)int *p1,*p2; int p; p=*p1; *p1=*p2; *p2=p;main()int a,b; scanf(%d,%d,&a,&b); printf(“a=%d,b=%dn”,a,b); printf(“swapped:n”);

16、 swap(&a,&b); printf(”a=%d,b=%dn,a,b);例例 交換兩個(gè)數(shù)交換兩個(gè)數(shù)a59b調(diào)前:調(diào)前:a59b調(diào)調(diào)swap:p1&a&bp2a95b交換:交換:p1&a&bp2a95b返回:返回:例子圖解例子圖解 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部#include long sum(int a, int b); long factorial(int n);main() int n1,n2; long a; scanf(%d,%d,&n1,&n2); a=sum(n1,n2); printf(a=%1d,a); long su

17、m(int a,int b) long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); long factorial(int n) long rtn=1; int i; for(i=1;ibi, ai=bi,aibi, ai=bi,aibiaik,nk,認(rèn)為數(shù)組認(rèn)為數(shù)組abab 若若nk,nk,認(rèn)為數(shù)組認(rèn)為數(shù)組abab 若若n=k,n=k,認(rèn)為數(shù)組認(rèn)為數(shù)組a=ba=b#include main() int a10,b10,i,n=0,m=0,k=0; printf(Enter array a:n); for(i=0;i10;i+)

18、scanf(%d,&ai); printf(Enter array b:n); for(i=0;i10;i+)scanf(%d,&bi); for(i=0;iy) flag=1; else if(xy) flag=-1; else flag=0; return(flag); C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部地址傳遞地址傳遞在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組在主調(diào)函數(shù)與被調(diào)函數(shù)分別定義數(shù)組,且類型應(yīng)一致且類型應(yīng)一致形參數(shù)組大小形參數(shù)組大小(多維數(shù)組第一維多維數(shù)組第一維)可不指定可不指定形參數(shù)組名是形參數(shù)組名是地址變量地址變量數(shù)組名作函數(shù)參數(shù)數(shù)組名

19、作函數(shù)參數(shù) C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 #include float average(int stu10, int n); void main() int score10, i; float av; printf(Input 10 scores:n); for( i=0; i10; i+ ) scanf(%d, &scorei); av=average(score,10); printf(Average is:%.2f, av); float average(int stu10, int n) int i; float av,total

20、=0; for( i=0; in; i+ ) total += stui; av = total/n; return av; 實(shí)參用數(shù)組名實(shí)參用數(shù)組名形參用數(shù)組定義形參用數(shù)組定義, int stu .2109score562312.88stu例例 求學(xué)生的平均成績(jī)求學(xué)生的平均成績(jī) C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部12a調(diào)用前調(diào)用前12ax調(diào)用調(diào)用21ax交換交換21a返回返回#include void swap2(int x) int z; z=x0; x0=x1; x1=z;main() int a2=1,2; swap2(a); prin

21、tf(a0=%dna1=%dn,a0,a1);地址傳遞地址傳遞例例 數(shù)組元素與數(shù)組名數(shù)組元素與數(shù)組名 作函數(shù)參數(shù)比較作函數(shù)參數(shù)比較 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部void sort(int array,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(arrayjarrayi) t=arrayi; arrayi=arrayj; arrayj=t; main() int a10,i; for(i=0;i10;i+)scanf(%d,&ai); sort(a,10); for(i=0;

22、i10;i+) printf(%d ,ai); printf(n); C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 嵌套調(diào)用嵌套調(diào)用C規(guī)定:規(guī)定:函數(shù)定義不可嵌套函數(shù)定義不可嵌套,但,但可以嵌套調(diào)用可以嵌套調(diào)用函數(shù)函數(shù)main( )調(diào)用函數(shù)調(diào)用函數(shù)a結(jié)束結(jié)束a函數(shù)函數(shù)b函數(shù)函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)b函數(shù)的嵌套與遞歸調(diào)用函數(shù)的嵌套與遞歸調(diào)用 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部#include int dif(int x,int y,int z); int max(int x,int y,int z); int

23、min(int x,int y,int z);void main() int a,b,c,d; scanf(%d%d%d,&a,&b,&c); d=dif(a,b,c); printf(Max-Min=%dn,d); int dif(int x,int y,int z) return max(x,y,z)-min(x,y,z); int max(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); int min(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); main( )調(diào)用函數(shù)調(diào)用函

24、數(shù)dif輸出輸出結(jié)束結(jié)束dif函數(shù)函數(shù)max函數(shù)函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)max調(diào)用函數(shù)調(diào)用函數(shù)minmin函數(shù)函數(shù)例例 求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞歸調(diào)用f( )調(diào)f調(diào)f2調(diào)f1f1( )f2( )說(shuō)明說(shuō)明C編譯系統(tǒng)對(duì)遞歸函數(shù)的自調(diào)用次數(shù)沒(méi)有限制編譯系統(tǒng)對(duì)遞歸函數(shù)的自調(diào)用次數(shù)沒(méi)有限制每調(diào)用函數(shù)一次,在內(nèi)存堆棧區(qū)分配空間,用于存放函數(shù)變量、每調(diào)用函數(shù)一次,在內(nèi)存堆棧區(qū)分配空間,用于存放函數(shù)變量、返回

25、值等信息,所以遞歸次數(shù)過(guò)多,可能引起堆棧溢出返回值等信息,所以遞歸次數(shù)過(guò)多,可能引起堆棧溢出int f(int x) int y,z; z=f(y); . return(2*z);int f1(int x) int y,z; z=f2(y); . return(2*z);int f2(int t) int a,c; c=f1(a); . return(3+c);遞歸調(diào)用 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部) 1()!1() 1 , 0(1!nnnnn#include int fac(int n) int f; if(n0) printf(n外部

26、變量說(shuō)明:外部變量說(shuō)明: extern 數(shù)據(jù)類型數(shù)據(jù)類型 變量表;變量表;外部變量定義與外部變量說(shuō)明不同外部變量定義與外部變量說(shuō)明不同若外部變量與局部變量同名,則外部變量被屏蔽若外部變量與局部變量同名,則外部變量被屏蔽外部變量可用存儲(chǔ)類型外部變量可用存儲(chǔ)類型:缺省:缺省 或或 static全局變量 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部float max,min;float average(float array, int n) int i; float sum=array0; max=min=array0; for(i=1;imax) max=a

27、rrayi; else if(arrayiy?x:y; return(z);main() extern int a,b; printf(max=%d,max(a,b);int a=13,b=-8;運(yùn)行結(jié)果:運(yùn)行結(jié)果:max=13extern int a,b;int max() int z; z=ab?a:b; return(z);main() printf(max=%d,max();int a=13,b=-8;例例 外部變量定義與說(shuō)明外部變量定義與說(shuō)明 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部int a=3,b=5;max(int a, int b)

28、 int c; c=ab?a:b; return(c);main() int a=8; printf(max=%d,max(a,b);運(yùn)行結(jié)果:運(yùn)行結(jié)果:max=8例例 外部變量與局部變量外部變量與局部變量 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部 存儲(chǔ)方式存儲(chǔ)方式 靜態(tài)存儲(chǔ):程序運(yùn)行期間分配固定存儲(chǔ)空間靜態(tài)存儲(chǔ):程序運(yùn)行期間分配固定存儲(chǔ)空間 動(dòng)態(tài)存儲(chǔ):程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間動(dòng)態(tài)存儲(chǔ):程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間 內(nèi)存用戶區(qū)內(nèi)存用戶區(qū)程序區(qū)程序區(qū)靜態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)全局變量、局部靜態(tài)變量全局變量、局部靜態(tài)變量形參變量形參變量局部動(dòng)態(tài)變量(局部動(dòng)態(tài)變量(auto register)函數(shù)調(diào)用現(xiàn)場(chǎng)保護(hù)和返回地址等函數(shù)調(diào)用現(xiàn)場(chǎng)保護(hù)和返回地址等生存期生存期靜態(tài)變量靜態(tài)變量:從程序開(kāi)始執(zhí)行到程序結(jié)束從程序開(kāi)始執(zhí)行到程序結(jié)束動(dòng)態(tài)變量動(dòng)態(tài)變量:從包含該變量定義的函數(shù)開(kāi)始執(zhí)行至函數(shù)執(zhí)行結(jié)束從包含該變量定義的函數(shù)開(kāi)始執(zhí)行至函數(shù)執(zhí)行結(jié)束動(dòng)態(tài)變量與靜態(tài)變量動(dòng)態(tài)變量與靜態(tài)變量 C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì) 第七章第七章 函函 數(shù)數(shù)計(jì)算機(jī)公共教學(xué)部計(jì)算機(jī)公共教學(xué)部靜態(tài)動(dòng)態(tài)存儲(chǔ)方式程序整個(gè)運(yùn)行期間函數(shù)調(diào)用開(kāi)始至結(jié)束生存期編譯時(shí)賦初值,只

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論