第6章函數(shù)與預(yù)處理ppt課件_第1頁(yè)
第6章函數(shù)與預(yù)處理ppt課件_第2頁(yè)
第6章函數(shù)與預(yù)處理ppt課件_第3頁(yè)
第6章函數(shù)與預(yù)處理ppt課件_第4頁(yè)
第6章函數(shù)與預(yù)處理ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、n教學(xué)目的教學(xué)目的n經(jīng)過(guò)本章的學(xué)習(xí),要求能熟經(jīng)過(guò)本章的學(xué)習(xí),要求能熟練掌握函數(shù)的定義和調(diào)用方法,掌練掌握函數(shù)的定義和調(diào)用方法,掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用,了握函數(shù)的嵌套調(diào)用和遞歸調(diào)用,了解變量的作用域和存儲(chǔ)類(lèi)別,掌握解變量的作用域和存儲(chǔ)類(lèi)別,掌握內(nèi)部函數(shù)和外部函數(shù),并可以在不內(nèi)部函數(shù)和外部函數(shù),并可以在不同情況下靈敏選擇函數(shù)來(lái)處理實(shí)踐同情況下靈敏選擇函數(shù)來(lái)處理實(shí)踐問(wèn)題。掌握編譯預(yù)處置命令的運(yùn)用問(wèn)題。掌握編譯預(yù)處置命令的運(yùn)用方法。函數(shù)和預(yù)處置命令是編寫(xiě)模方法。函數(shù)和預(yù)處置命令是編寫(xiě)模塊化程序的重要方法,這將為編寫(xiě)塊化程序的重要方法,這將為編寫(xiě)比較復(fù)雜的程序設(shè)計(jì)的學(xué)習(xí)打下根比較復(fù)雜的程序設(shè)計(jì)的學(xué)

2、習(xí)打下根底。底。n教學(xué)內(nèi)容教學(xué)內(nèi)容 函數(shù)編譯預(yù)處置文件包含命令宏定義條件編譯函數(shù)調(diào)用變量的作用域和存儲(chǔ)類(lèi)別內(nèi)部函數(shù)和外部函數(shù)函數(shù)的定義n重點(diǎn)難點(diǎn)重點(diǎn)難點(diǎn)n 重點(diǎn):重點(diǎn):n (1)函數(shù)的定義和函數(shù)調(diào)用函數(shù)的定義和函數(shù)調(diào)用n (2)函數(shù)的參數(shù)傳送函數(shù)的參數(shù)傳送 n 難點(diǎn)難點(diǎn)n (1)函數(shù)的參數(shù)傳送函數(shù)的參數(shù)傳送n (2)遞歸調(diào)用遞歸調(diào)用 n (3)變量的作用域和存儲(chǔ)特變量的作用域和存儲(chǔ)特性性 程序員在設(shè)計(jì)一個(gè)復(fù)雜的運(yùn)用程序時(shí),往往將整個(gè)程序員在設(shè)計(jì)一個(gè)復(fù)雜的運(yùn)用程序時(shí),往往將整個(gè)程序劃分為假設(shè)干個(gè)功能較為單一的程序模塊,然后分程序劃分為假設(shè)干個(gè)功能較為單一的程序模塊,然后分別予以實(shí)現(xiàn),最后將一切的

3、程序模塊像積木一樣裝配起別予以實(shí)現(xiàn),最后將一切的程序模塊像積木一樣裝配起來(lái),這種在程序設(shè)計(jì)中逐漸分解、分而治之的的方法,來(lái),這種在程序設(shè)計(jì)中逐漸分解、分而治之的的方法,稱(chēng)之為模塊化程序設(shè)計(jì)。稱(chēng)之為模塊化程序設(shè)計(jì)。 在在C言語(yǔ)中,一個(gè)函數(shù)實(shí)現(xiàn)一個(gè)特定的功能。一個(gè)言語(yǔ)中,一個(gè)函數(shù)實(shí)現(xiàn)一個(gè)特定的功能。一個(gè)C言語(yǔ)程序可以由一個(gè)主函數(shù)和假設(shè)干個(gè)其它函數(shù)構(gòu)成,言語(yǔ)程序可以由一個(gè)主函數(shù)和假設(shè)干個(gè)其它函數(shù)構(gòu)成,由主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可以相互調(diào)用。同由主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可以相互調(diào)用。同一個(gè)函數(shù)可以被一個(gè)函數(shù)或多個(gè)函數(shù)調(diào)用恣意多次。因一個(gè)函數(shù)可以被一個(gè)函數(shù)或多個(gè)函數(shù)調(diào)用恣意多次。因此,在設(shè)計(jì)

4、時(shí),往往將一些常用的功能模塊編寫(xiě)成為函此,在設(shè)計(jì)時(shí),往往將一些常用的功能模塊編寫(xiě)成為函數(shù),放在函數(shù)庫(kù)中,供大家選用或多次調(diào)用,以減少反數(shù),放在函數(shù)庫(kù)中,供大家選用或多次調(diào)用,以減少反復(fù)性的編寫(xiě)程序。程序員可以方便地利用函數(shù)作為程序復(fù)性的編寫(xiě)程序。程序員可以方便地利用函數(shù)作為程序模塊,來(lái)實(shí)現(xiàn)模塊,來(lái)實(shí)現(xiàn) C言語(yǔ)程序設(shè)計(jì)的模塊化。言語(yǔ)程序設(shè)計(jì)的模塊化。 在第在第1章中曾經(jīng)引見(jiàn)過(guò),源程序是由函數(shù)組成的。章中曾經(jīng)引見(jiàn)過(guò),源程序是由函數(shù)組成的。 雖雖然在前面各章的程序中都只需一個(gè)主函數(shù)然在前面各章的程序中都只需一個(gè)主函數(shù)main(), 但適但適用程序往往由多個(gè)函數(shù)組成。函數(shù)是源程序的根本模用程序往往由多

5、個(gè)函數(shù)組成。函數(shù)是源程序的根本模塊,塊, 經(jīng)過(guò)對(duì)函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能。言語(yǔ)中經(jīng)過(guò)對(duì)函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能。言語(yǔ)中的函數(shù)相當(dāng)于其它高級(jí)言語(yǔ)的子程序。的函數(shù)相當(dāng)于其它高級(jí)言語(yǔ)的子程序。 言語(yǔ)不僅提供言語(yǔ)不僅提供了極為豐富的庫(kù)函數(shù)了極為豐富的庫(kù)函數(shù)(如如Turbo C,MS C 都提供了三百多都提供了三百多個(gè)庫(kù)函數(shù)個(gè)庫(kù)函數(shù)),還允許用戶(hù)建立本人定義的函數(shù)。用戶(hù)可把,還允許用戶(hù)建立本人定義的函數(shù)。用戶(hù)可把本人的算法編成一個(gè)個(gè)相對(duì)獨(dú)立的函數(shù)模塊,然后用調(diào)本人的算法編成一個(gè)個(gè)相對(duì)獨(dú)立的函數(shù)模塊,然后用調(diào)用的方法來(lái)運(yùn)用函數(shù)。用的方法來(lái)運(yùn)用函數(shù)。 可以說(shuō)程序的全部任務(wù)都是由各式各樣的函數(shù)完成可以

6、說(shuō)程序的全部任務(wù)都是由各式各樣的函數(shù)完成的,的, 所以也把言語(yǔ)稱(chēng)為函數(shù)式言語(yǔ)。所以也把言語(yǔ)稱(chēng)為函數(shù)式言語(yǔ)。 由于采用了函數(shù)由于采用了函數(shù)模塊式的構(gòu)造,模塊式的構(gòu)造, 言語(yǔ)易于實(shí)現(xiàn)構(gòu)造化程序設(shè)計(jì)。使程言語(yǔ)易于實(shí)現(xiàn)構(gòu)造化程序設(shè)計(jì)。使程序的層次構(gòu)造明晰,便于程序的編寫(xiě)、閱讀、調(diào)試。序的層次構(gòu)造明晰,便于程序的編寫(xiě)、閱讀、調(diào)試。先舉兩個(gè)函數(shù)調(diào)用的簡(jiǎn)單例子。該例子引自書(shū)本配套案例先舉兩個(gè)函數(shù)調(diào)用的簡(jiǎn)單例子。該例子引自書(shū)本配套案例“學(xué)生成果管理學(xué)生成果管理系統(tǒng)系統(tǒng)【例【例6.1】函數(shù)調(diào)用的簡(jiǎn)單例子】函數(shù)調(diào)用的簡(jiǎn)單例子輸入如下代碼:輸入如下代碼:/*源文件名:源文件名:Li6_1.c功能:在屏幕輸出顯示一個(gè)

7、菜單功能:在屏幕輸出顯示一個(gè)菜單*/#include stdio.hvoid main()void printstart(); /*對(duì)對(duì)printstart()函數(shù)進(jìn)展聲明函數(shù)進(jìn)展聲明*/void menu(); /*對(duì)對(duì) menu()函數(shù)進(jìn)展聲明函數(shù)進(jìn)展聲明*/printstart(); /*調(diào)用調(diào)用printstart()函數(shù)函數(shù)*/menu(); /*調(diào)用調(diào)用 menu()函數(shù)函數(shù)*/printstart(); /*調(diào)用調(diào)用printstart()函數(shù)函數(shù)*/void menu() printf(*n); printf(t1登記學(xué)生成果登記學(xué)生成果t tt2刪除學(xué)生信息刪除學(xué)生信息n);

8、 printf(t3查詢(xún)學(xué)生信息查詢(xún)學(xué)生信息t tt4修正學(xué)生資料修正學(xué)生資料n); printf(t5保管學(xué)生信息保管學(xué)生信息t tt6學(xué)生成果排序?qū)W生成果排序n);printf(t7統(tǒng)計(jì)學(xué)生成果統(tǒng)計(jì)學(xué)生成果t tt8輸出學(xué)生信息輸出學(xué)生信息n);printf(t0退出系統(tǒng)退出系統(tǒng)n); printf(*n); void printstart() printf(-n); 編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示: printstart()和和menu()都是用戶(hù)定義的函數(shù),分別用來(lái)輸出一行下劃都是用戶(hù)定義的函數(shù),分別用來(lái)輸出一行下劃線(xiàn)和一個(gè)菜單信

9、息。在定義這兩個(gè)函數(shù)的函數(shù)時(shí),前面加上線(xiàn)和一個(gè)菜單信息。在定義這兩個(gè)函數(shù)的函數(shù)時(shí),前面加上void,表示該函數(shù)無(wú)類(lèi)型,也就是函數(shù)沒(méi)有前往值。而函數(shù)名后面的括號(hào)表示該函數(shù)無(wú)類(lèi)型,也就是函數(shù)沒(méi)有前往值。而函數(shù)名后面的括號(hào)里面是空的,闡明該函數(shù)沒(méi)有參數(shù)。里面是空的,闡明該函數(shù)沒(méi)有參數(shù)?!纠纠?.2】函數(shù)調(diào)用的簡(jiǎn)單例子】函數(shù)調(diào)用的簡(jiǎn)單例子/*源文件名:源文件名:Li6_2.c功能:求兩個(gè)整數(shù)的和功能:求兩個(gè)整數(shù)的和*/#include stdio.hvoid main()int sum(int x,int y); /*對(duì)對(duì)sum()函數(shù)進(jìn)展聲明函數(shù)進(jìn)展聲明*/int a,b,s;scanf(%d%d

10、,&a,&b);s=sum(a,b); /*對(duì)對(duì)sum()函數(shù)進(jìn)展調(diào)用函數(shù)進(jìn)展調(diào)用*/printf(the sum is %dn,s);int sum(int x,int y) /*對(duì)函數(shù)對(duì)函數(shù)sum()進(jìn)展定義進(jìn)展定義*/int z;/*函數(shù)體中的聲明部分函數(shù)體中的聲明部分*/z=x+y;return z;編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:程序中程序中sum(int x,int y) 函數(shù)帶有兩個(gè)整型參數(shù)函數(shù)帶有兩個(gè)整型參數(shù)x和和y,表示,表示sum是個(gè)有是個(gè)有參函數(shù),而在函數(shù)名前面加上參函數(shù),而在函數(shù)名前面加上int ,

11、表示該函數(shù)會(huì)前往一個(gè)整型的數(shù),表示該函數(shù)會(huì)前往一個(gè)整型的數(shù)值。值。 闡明:闡明: 1源程序是由函數(shù)組成的。函數(shù)是源程序的根本模塊,經(jīng)源程序是由函數(shù)組成的。函數(shù)是源程序的根本模塊,經(jīng)過(guò)對(duì)函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能。言語(yǔ)中的函數(shù)相當(dāng)于其它過(guò)對(duì)函數(shù)模塊的調(diào)用實(shí)現(xiàn)特定的功能。言語(yǔ)中的函數(shù)相當(dāng)于其它高級(jí)言語(yǔ)的子程序。言語(yǔ)不僅提供了極為豐富的庫(kù)函數(shù),還允許高級(jí)言語(yǔ)的子程序。言語(yǔ)不僅提供了極為豐富的庫(kù)函數(shù),還允許用戶(hù)建立本人定義的函數(shù)。用戶(hù)可把本人的算法編成一個(gè)個(gè)相對(duì)獨(dú)用戶(hù)建立本人定義的函數(shù)。用戶(hù)可把本人的算法編成一個(gè)個(gè)相對(duì)獨(dú)立的函數(shù)模塊,然后用調(diào)用的方法來(lái)運(yùn)用函數(shù)??梢哉f(shuō)程序的全立的函數(shù)模塊,然后用調(diào)用

12、的方法來(lái)運(yùn)用函數(shù)??梢哉f(shuō)程序的全部任務(wù)都是由各式各樣的函數(shù)完成的,所以也把言語(yǔ)稱(chēng)為函數(shù)式部任務(wù)都是由各式各樣的函數(shù)完成的,所以也把言語(yǔ)稱(chēng)為函數(shù)式言語(yǔ)。言語(yǔ)。 由于采用了函數(shù)模塊式的構(gòu)造,言語(yǔ)易于實(shí)現(xiàn)構(gòu)造化程序設(shè)計(jì)。由于采用了函數(shù)模塊式的構(gòu)造,言語(yǔ)易于實(shí)現(xiàn)構(gòu)造化程序設(shè)計(jì)。使程序的層次構(gòu)造明晰,便于程序的編寫(xiě)、閱讀、調(diào)試。使程序的層次構(gòu)造明晰,便于程序的編寫(xiě)、閱讀、調(diào)試。 2一個(gè)程序總是從一個(gè)程序總是從main()函數(shù)開(kāi)場(chǎng)執(zhí)行,調(diào)用其他函數(shù)后,流函數(shù)開(kāi)場(chǎng)執(zhí)行,調(diào)用其他函數(shù)后,流程回到程回到main主函數(shù)終了。主函數(shù)終了。main主函數(shù)是系統(tǒng)定義的,必需有且只能主函數(shù)是系統(tǒng)定義的,必需有且只能有一個(gè)

13、名為有一個(gè)名為main的主函數(shù)。的主函數(shù)。 3一切函數(shù)都是平行的,它們的定義都是相互獨(dú)立的。一個(gè)函一切函數(shù)都是平行的,它們的定義都是相互獨(dú)立的。一個(gè)函數(shù)并不從屬于另外一個(gè)函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以相數(shù)并不從屬于另外一個(gè)函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以相互調(diào)用,即函數(shù)可以嵌套調(diào)用。但不能調(diào)用互調(diào)用,即函數(shù)可以嵌套調(diào)用。但不能調(diào)用main函數(shù),函數(shù), main函數(shù)是函數(shù)是系統(tǒng)調(diào)用的。系統(tǒng)調(diào)用的。從函數(shù)運(yùn)用的角度看,函數(shù)可分為庫(kù)函數(shù)和用戶(hù)定義函數(shù)兩種。從函數(shù)運(yùn)用的角度看,函數(shù)可分為庫(kù)函數(shù)和用戶(hù)定義函數(shù)兩種。 1庫(kù)函數(shù):由編譯系統(tǒng)提供的已設(shè)計(jì)好的函數(shù),用戶(hù)只需調(diào)用庫(kù)函數(shù):由編譯系統(tǒng)提供的

14、已設(shè)計(jì)好的函數(shù),用戶(hù)只需調(diào)用而無(wú)須實(shí)現(xiàn)它,在編譯而無(wú)須實(shí)現(xiàn)它,在編譯 C程序時(shí),應(yīng)盡能夠的運(yùn)用庫(kù)函數(shù)。這樣可程序時(shí),應(yīng)盡能夠的運(yùn)用庫(kù)函數(shù)。這樣可以提高編程效率和編程的質(zhì)量。在前面各章的例題中反復(fù)用到的以提高編程效率和編程的質(zhì)量。在前面各章的例題中反復(fù)用到的printf、scanf、getchar、putchar、gets、puts、strcat等函數(shù)均屬于等函數(shù)均屬于庫(kù)函數(shù)。庫(kù)函數(shù)。 運(yùn)用庫(kù)函數(shù)時(shí)應(yīng)留意:運(yùn)用庫(kù)函數(shù)時(shí)應(yīng)留意: 1)函數(shù)的功能;函數(shù)的功能; 2)函數(shù)參數(shù)的數(shù)目、順序以及每個(gè)參數(shù)的意義和類(lèi)型;函數(shù)參數(shù)的數(shù)目、順序以及每個(gè)參數(shù)的意義和類(lèi)型; 3)函數(shù)前往值的意義和類(lèi)型;函數(shù)前往值的意

15、義和類(lèi)型; 4)需求運(yùn)用的包含文件。要調(diào)用某個(gè)庫(kù)函數(shù),那么需在程序的需求運(yùn)用的包含文件。要調(diào)用某個(gè)庫(kù)函數(shù),那么需在程序的頭部用包含命令頭部用包含命令#include將闡明該函數(shù)原型的頭文件包含進(jìn)本程將闡明該函數(shù)原型的頭文件包含進(jìn)本程序中。序中。 2用戶(hù)定義函數(shù):顧名思義,就是程序員自行定義和設(shè)計(jì)的函用戶(hù)定義函數(shù):顧名思義,就是程序員自行定義和設(shè)計(jì)的函數(shù)。庫(kù)函數(shù)普通只能提供一些低層效力的功能。而用戶(hù)自定義的函數(shù)。庫(kù)函數(shù)普通只能提供一些低層效力的功能。而用戶(hù)自定義的函數(shù)那么能針對(duì)詳細(xì)的運(yùn)用實(shí)現(xiàn)一些特殊的功能。用自定義函數(shù)需求數(shù)那么能針對(duì)詳細(xì)的運(yùn)用實(shí)現(xiàn)一些特殊的功能。用自定義函數(shù)需求程序員本人來(lái)編寫(xiě)

16、函數(shù)功能的實(shí)現(xiàn)代碼。用戶(hù)自定義函數(shù)是由用戶(hù)程序員本人來(lái)編寫(xiě)函數(shù)功能的實(shí)現(xiàn)代碼。用戶(hù)自定義函數(shù)是由用戶(hù)按需求寫(xiě)的函數(shù)。對(duì)于用戶(hù)自定義函數(shù),不僅要在程序中定義函數(shù)按需求寫(xiě)的函數(shù)。對(duì)于用戶(hù)自定義函數(shù),不僅要在程序中定義函數(shù)本身,而且在主調(diào)函數(shù)模塊中還必需對(duì)該被調(diào)函數(shù)進(jìn)展類(lèi)型闡明,本身,而且在主調(diào)函數(shù)模塊中還必需對(duì)該被調(diào)函數(shù)進(jìn)展類(lèi)型闡明,然后才干運(yùn)用。然后才干運(yùn)用。 言語(yǔ)的函數(shù)兼有其它言語(yǔ)中的函數(shù)和過(guò)程兩種功能,從這個(gè)角言語(yǔ)的函數(shù)兼有其它言語(yǔ)中的函數(shù)和過(guò)程兩種功能,從這個(gè)角度看,又可把函數(shù)分為有前往值函數(shù)和無(wú)前往值函數(shù)兩種。度看,又可把函數(shù)分為有前往值函數(shù)和無(wú)前往值函數(shù)兩種。 1 有前往值函數(shù):此類(lèi)函

17、數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者前往有前往值函數(shù):此類(lèi)函數(shù)被調(diào)用執(zhí)行完后將向調(diào)用者前往一個(gè)執(zhí)行結(jié)果,稱(chēng)為函數(shù)前往值。如數(shù)學(xué)函數(shù)即屬于此類(lèi)函數(shù)。由一個(gè)執(zhí)行結(jié)果,稱(chēng)為函數(shù)前往值。如數(shù)學(xué)函數(shù)即屬于此類(lèi)函數(shù)。由用戶(hù)定義的這種要前往函數(shù)值的函數(shù),必需在函數(shù)定義和函數(shù)闡明用戶(hù)定義的這種要前往函數(shù)值的函數(shù),必需在函數(shù)定義和函數(shù)闡明中明確前往值的類(lèi)型。中明確前往值的類(lèi)型。 2 無(wú)前往值函數(shù):此類(lèi)函數(shù)用于完成某項(xiàng)特定的處置義務(wù),無(wú)前往值函數(shù):此類(lèi)函數(shù)用于完成某項(xiàng)特定的處置義務(wù),執(zhí)行完成后不向調(diào)用者前往函數(shù)值。這類(lèi)函數(shù)類(lèi)似于其它言語(yǔ)的過(guò)執(zhí)行完成后不向調(diào)用者前往函數(shù)值。這類(lèi)函數(shù)類(lèi)似于其它言語(yǔ)的過(guò)程。由于函數(shù)無(wú)須前往值,用

18、戶(hù)在定義此類(lèi)函數(shù)時(shí)可指定它的前往程。由于函數(shù)無(wú)須前往值,用戶(hù)在定義此類(lèi)函數(shù)時(shí)可指定它的前往為為“空類(lèi)型,空類(lèi)型, 空類(lèi)型的闡明符為空類(lèi)型的闡明符為“void。 定義無(wú)參函數(shù)的普通方式為:定義無(wú)參函數(shù)的普通方式為:【函數(shù)類(lèi)型】【函數(shù)類(lèi)型】 函數(shù)名函數(shù)名( )聲明語(yǔ)句部分聲明語(yǔ)句部分可執(zhí)行語(yǔ)句部分可執(zhí)行語(yǔ)句部分 例例6.1中的中的printstart()和和menu()函數(shù)都是無(wú)參函數(shù)。函數(shù)都是無(wú)參函數(shù)。 在定義函數(shù)時(shí)要用類(lèi)型標(biāo)識(shí)符來(lái)指定函數(shù)類(lèi)型,即在定義函數(shù)時(shí)要用類(lèi)型標(biāo)識(shí)符來(lái)指定函數(shù)類(lèi)型,即函數(shù)前往值的類(lèi)型。如在例函數(shù)前往值的類(lèi)型。如在例6.1中的中的printstart()和和menu()函數(shù)

19、的函數(shù)類(lèi)型都為函數(shù)的函數(shù)類(lèi)型都為void,表示不需求帶回函數(shù)值。而,表示不需求帶回函數(shù)值。而例例6.2中的中的sum()函數(shù)的函數(shù)類(lèi)型為函數(shù)的函數(shù)類(lèi)型為int,表示該函數(shù)會(huì)前,表示該函數(shù)會(huì)前往一個(gè)整型數(shù)值。往一個(gè)整型數(shù)值。 留意:在函數(shù)類(lèi)型缺省的情況下,系一致概按留意:在函數(shù)類(lèi)型缺省的情況下,系一致概按int型型處置。處置。 定義有參函數(shù)的普通方式為:定義有參函數(shù)的普通方式為:【函數(shù)類(lèi)型】【函數(shù)類(lèi)型】 函數(shù)名函數(shù)名( 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 參數(shù)【,數(shù)據(jù)類(lèi)參數(shù)【,數(shù)據(jù)類(lèi)型型 參數(shù)參數(shù)2】)聲明語(yǔ)句部分聲明語(yǔ)句部分可執(zhí)行語(yǔ)句部分可執(zhí)行語(yǔ)句部分例例6.2中的中的sum(int x,int y)就是一個(gè)有

20、參函數(shù)。就是一個(gè)有參函數(shù)。詳細(xì)分析一下詳細(xì)分析一下sum函數(shù):函數(shù):int sum(int x,int y)/*對(duì)函數(shù)對(duì)函數(shù)sum()進(jìn)展定義進(jìn)展定義*/int z;/*函數(shù)體中的聲明部分函數(shù)體中的聲明部分*/z=x+y;return z; 這是一個(gè)求兩個(gè)整型數(shù)據(jù)之和的函數(shù)。第一行中的這是一個(gè)求兩個(gè)整型數(shù)據(jù)之和的函數(shù)。第一行中的int 表示函數(shù)前表示函數(shù)前往值是整型的,往值是整型的,sum為函數(shù)名,括號(hào)中的兩個(gè)方式參數(shù)為函數(shù)名,括號(hào)中的兩個(gè)方式參數(shù)x和和y都是整都是整型的。在調(diào)用該函數(shù)的時(shí)候,主調(diào)函數(shù)把實(shí)踐參數(shù)的值傳送給被調(diào)型的。在調(diào)用該函數(shù)的時(shí)候,主調(diào)函數(shù)把實(shí)踐參數(shù)的值傳送給被調(diào)用函數(shù)中的方

21、式參數(shù)用函數(shù)中的方式參數(shù)x和和y。大括號(hào)內(nèi)是函數(shù)體,經(jīng)過(guò)函數(shù)體中語(yǔ)句。大括號(hào)內(nèi)是函數(shù)體,經(jīng)過(guò)函數(shù)體中語(yǔ)句的執(zhí)行求出的執(zhí)行求出x和和y的和,經(jīng)過(guò)的和,經(jīng)過(guò)return z;語(yǔ)句把;語(yǔ)句把z作為函數(shù)值前往到主作為函數(shù)值前往到主調(diào)函數(shù)中。調(diào)函數(shù)中。return后面的后面的z也稱(chēng)為函數(shù)前往值。也稱(chēng)為函數(shù)前往值。 留意:普通情況下,函數(shù)前往值的類(lèi)型和函數(shù)類(lèi)型是一致的。假留意:普通情況下,函數(shù)前往值的類(lèi)型和函數(shù)類(lèi)型是一致的。假設(shè)不一致,那么以函數(shù)類(lèi)型為準(zhǔn)。設(shè)不一致,那么以函數(shù)類(lèi)型為準(zhǔn)。 一個(gè)較大的程序普通應(yīng)分為假設(shè)干個(gè)程序模塊,每一個(gè)模塊用來(lái)一個(gè)較大的程序普通應(yīng)分為假設(shè)干個(gè)程序模塊,每一個(gè)模塊用來(lái)實(shí)現(xiàn)一個(gè)

22、特定的功能。而在第一個(gè)階段只設(shè)計(jì)最根本的模塊,功能實(shí)現(xiàn)一個(gè)特定的功能。而在第一個(gè)階段只設(shè)計(jì)最根本的模塊,功能可以在設(shè)計(jì)好框架以后漸漸補(bǔ)上。在編寫(xiě)程序的開(kāi)場(chǎng)階段,往往是可以在設(shè)計(jì)好框架以后漸漸補(bǔ)上。在編寫(xiě)程序的開(kāi)場(chǎng)階段,往往是先寫(xiě)上一個(gè)空函數(shù),占個(gè)位置,以后再用編寫(xiě)好的函數(shù)來(lái)交換它。先寫(xiě)上一個(gè)空函數(shù),占個(gè)位置,以后再用編寫(xiě)好的函數(shù)來(lái)交換它。這樣,程序的構(gòu)造比較清楚,可讀性比較好,以后擴(kuò)展新功能也比這樣,程序的構(gòu)造比較清楚,可讀性比較好,以后擴(kuò)展新功能也比較方便,對(duì)程序構(gòu)造影響不大。在程序設(shè)計(jì)中空函數(shù)經(jīng)常被運(yùn)用到,較方便,對(duì)程序構(gòu)造影響不大。在程序設(shè)計(jì)中空函數(shù)經(jīng)常被運(yùn)用到,它的定義方式為:它的定義

23、方式為:【函數(shù)類(lèi)型】【函數(shù)類(lèi)型】 函數(shù)名函數(shù)名()例如,在設(shè)計(jì)一個(gè)學(xué)生成果管理系統(tǒng)的開(kāi)場(chǎng)階段,可以運(yùn)用空函數(shù)例如,在設(shè)計(jì)一個(gè)學(xué)生成果管理系統(tǒng)的開(kāi)場(chǎng)階段,可以運(yùn)用空函數(shù)設(shè)計(jì)如下的程序框架設(shè)計(jì)如下的程序框架 void main()void addscore() /*addscore()函數(shù)實(shí)現(xiàn)成果的添加函數(shù)實(shí)現(xiàn)成果的添加*/ void alterscore() /*alterscore()函數(shù)實(shí)現(xiàn)成果的修正函數(shù)實(shí)現(xiàn)成果的修正*/ void deletescore() /*deletescore()函數(shù)實(shí)現(xiàn)成果的刪除函數(shù)實(shí)現(xiàn)成果的刪除*/ 之后編寫(xiě)程序的時(shí)候,在設(shè)計(jì)好的框架上完善就可以了。之后編寫(xiě)程

24、序的時(shí)候,在設(shè)計(jì)好的框架上完善就可以了。 函數(shù)的參數(shù)分為形參和實(shí)參兩種。形參出如今函數(shù)函數(shù)的參數(shù)分為形參和實(shí)參兩種。形參出如今函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以運(yùn)用,分開(kāi)該函數(shù)那么定義中,在整個(gè)函數(shù)體內(nèi)都可以運(yùn)用,分開(kāi)該函數(shù)那么不能運(yùn)用。實(shí)參出如今主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,不能運(yùn)用。實(shí)參出如今主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能運(yùn)用。形參和實(shí)參的功能是作數(shù)據(jù)傳送。實(shí)參變量也不能運(yùn)用。形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)

25、傳送。 函數(shù)的形參和實(shí)參具有以下特點(diǎn):函數(shù)的形參和實(shí)參具有以下特點(diǎn): 1.形參變量只需在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用終了時(shí),形參變量只需在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用終了時(shí),所分配的內(nèi)存單元也將被釋放。因此,形參只需在函數(shù)內(nèi)部有效。所分配的內(nèi)存單元也將被釋放。因此,形參只需在函數(shù)內(nèi)部有效。函數(shù)調(diào)用終了前往主調(diào)函數(shù)后那么不能再運(yùn)用該形參變量。函數(shù)調(diào)用終了前往主調(diào)函數(shù)后那么不能再運(yùn)用該形參變量。 2.實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無(wú)論實(shí)參是何種實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無(wú)論實(shí)參是何種類(lèi)型的量,在進(jìn)展函數(shù)調(diào)用時(shí),它們都必需具有確定的值,以便把類(lèi)型的量,在進(jìn)展函數(shù)調(diào)用時(shí),它們都

26、必需具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值、輸入等方法使實(shí)參獲得確這些值傳送給形參。因此應(yīng)預(yù)先用賦值、輸入等方法使實(shí)參獲得確定值。定值。 3.實(shí)參和形參在數(shù)量、類(lèi)型、順序上應(yīng)嚴(yán)厲一致,否那么會(huì)發(fā)實(shí)參和形參在數(shù)量、類(lèi)型、順序上應(yīng)嚴(yán)厲一致,否那么會(huì)發(fā)生類(lèi)型不匹配的錯(cuò)誤。生類(lèi)型不匹配的錯(cuò)誤。 4.函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。送給形參,而不能把形參的值反向地傳送給實(shí)參。 因此在函數(shù)調(diào)用因此在函數(shù)調(diào)用過(guò)程中,形參的值發(fā)生改動(dòng),而實(shí)參中的值不會(huì)變化。過(guò)程中,形參的值發(fā)生改

27、動(dòng),而實(shí)參中的值不會(huì)變化。 函數(shù)的前往值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所獲得的并經(jīng)函數(shù)的前往值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所獲得的并經(jīng)過(guò)過(guò)return語(yǔ)句前往給主調(diào)函數(shù)的值。如調(diào)用語(yǔ)句前往給主調(diào)函數(shù)的值。如調(diào)用sqrt()函數(shù)獲得開(kāi)根號(hào)的值,調(diào)函數(shù)獲得開(kāi)根號(hào)的值,調(diào)用例用例6.2的的sum函數(shù)獲得的兩數(shù)之和等。對(duì)函數(shù)的前往值函數(shù)獲得的兩數(shù)之和等。對(duì)函數(shù)的前往值 (或稱(chēng)函數(shù)的值或稱(chēng)函數(shù)的值)有以有以下一些闡明:下一些闡明: 1.函數(shù)的值只能經(jīng)過(guò)函數(shù)的值只能經(jīng)過(guò)return語(yǔ)句前往主調(diào)函數(shù)。語(yǔ)句前往主調(diào)函數(shù)。return 語(yǔ)句的普通方式為:語(yǔ)句的普通方式為:return 表達(dá)

28、式;表達(dá)式;或者為:或者為:return (表達(dá)式表達(dá)式); 該語(yǔ)句的功能是計(jì)算表達(dá)式的值,并前往給主調(diào)函數(shù)。在函數(shù)中允許有多該語(yǔ)句的功能是計(jì)算表達(dá)式的值,并前往給主調(diào)函數(shù)。在函數(shù)中允許有多個(gè)個(gè)return語(yǔ)句,但每次調(diào)用只能有一個(gè)語(yǔ)句,但每次調(diào)用只能有一個(gè)return 語(yǔ)句被執(zhí)行,因此一個(gè)函數(shù)最語(yǔ)句被執(zhí)行,因此一個(gè)函數(shù)最多只能前往一個(gè)函數(shù)值。多只能前往一個(gè)函數(shù)值。 例如:例如:signint x ifx0 return1; ifx=0 return0; ifx b) c=1;else if(a=b) c=0;else c=-1;return c; 編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:

29、編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示: 假設(shè)按自左向右順序務(wù)虛參的值,那么函數(shù)調(diào)用相當(dāng)于假設(shè)按自左向右順序務(wù)虛參的值,那么函數(shù)調(diào)用相當(dāng)于compare(2,3),程序運(yùn)轉(zhuǎn)的結(jié)果應(yīng)為程序運(yùn)轉(zhuǎn)的結(jié)果應(yīng)為-1。假設(shè)按自右向左順序務(wù)虛。假設(shè)按自右向左順序務(wù)虛參的值,那么相當(dāng)于參的值,那么相當(dāng)于compare(3,3),程序運(yùn)轉(zhuǎn)結(jié)果為程序運(yùn)轉(zhuǎn)結(jié)果為0。假設(shè)不清。假設(shè)不清楚本人所用的編譯器對(duì)實(shí)參的求值順序,用上述代碼上機(jī)一試就清楚本人所用的編譯器對(duì)實(shí)參的求值順序,用上述代碼上機(jī)一試就清楚了。楚了。 留意:由于不同的編譯器對(duì)實(shí)參的求值順序不一樣,為了使程留意:由于不同的編譯器對(duì)實(shí)參的求值順序不一樣,為

30、了使程序的通用性不受影響以及防止大家對(duì)同一段代碼產(chǎn)生不同的了解,序的通用性不受影響以及防止大家對(duì)同一段代碼產(chǎn)生不同的了解,應(yīng)盡量防止運(yùn)用這種容易混淆的用法。應(yīng)盡量防止運(yùn)用這種容易混淆的用法。按函數(shù)在程序中出現(xiàn)的位置來(lái)分,可以有一下三種函數(shù)調(diào)用的方式。按函數(shù)在程序中出現(xiàn)的位置來(lái)分,可以有一下三種函數(shù)調(diào)用的方式。1.函數(shù)語(yǔ)句函數(shù)語(yǔ)句把函數(shù)調(diào)用作為一個(gè)語(yǔ)句。如例把函數(shù)調(diào)用作為一個(gè)語(yǔ)句。如例6.1中的中的printstart();這時(shí)不要求函數(shù)帶前往這時(shí)不要求函數(shù)帶前往值,只需求函數(shù)完成一些操作。值,只需求函數(shù)完成一些操作。2.函數(shù)表達(dá)式函數(shù)表達(dá)式函數(shù)出如今一個(gè)表達(dá)式中,這種表達(dá)式稱(chēng)為函數(shù)表達(dá)式。這時(shí)

31、要求函數(shù)帶回函數(shù)出如今一個(gè)表達(dá)式中,這種表達(dá)式稱(chēng)為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參與表達(dá)式的運(yùn)算。例如:一個(gè)確定的值以參與表達(dá)式的運(yùn)算。例如:s=sum(a,b)+sum(x,y);函數(shù)函數(shù)sum是表達(dá)式的一部分,將是表達(dá)式的一部分,將sum(a,b)的值加上的值加上sum(x,y)的和賦值給的和賦值給s。3.函數(shù)參數(shù)函數(shù)參數(shù)函數(shù)調(diào)用作為一個(gè)函數(shù)的參數(shù),例如:函數(shù)調(diào)用作為一個(gè)函數(shù)的參數(shù),例如:s=sum(a,sum(b,c);其中,其中,sum(b,c)是一次函數(shù)調(diào)用,它的值作為是一次函數(shù)調(diào)用,它的值作為sum另一次調(diào)用的參數(shù)。另一次調(diào)用的參數(shù)。s的值的值為為a,b,c三數(shù)的總和。

32、三數(shù)的總和。其實(shí),函數(shù)調(diào)用作為函數(shù)的參數(shù),也是函數(shù)表達(dá)式調(diào)用的一種方式,由于函其實(shí),函數(shù)調(diào)用作為函數(shù)的參數(shù),也是函數(shù)表達(dá)式調(diào)用的一種方式,由于函數(shù)參數(shù)本身就是一個(gè)表達(dá)式的方式。數(shù)參數(shù)本身就是一個(gè)表達(dá)式的方式。假設(shè)一個(gè)函數(shù)要調(diào)用另外一個(gè)函數(shù),首先是被調(diào)用的函數(shù)必需存在。假設(shè)一個(gè)函數(shù)要調(diào)用另外一個(gè)函數(shù),首先是被調(diào)用的函數(shù)必需存在。其次還應(yīng)在主調(diào)函數(shù)中對(duì)一切被調(diào)函數(shù)加以闡明,否那么,在銜接其次還應(yīng)在主調(diào)函數(shù)中對(duì)一切被調(diào)函數(shù)加以闡明,否那么,在銜接時(shí)會(huì)出現(xiàn)找不到所調(diào)用函數(shù)的錯(cuò)誤信息。同變量一樣,函數(shù)的調(diào)用時(shí)會(huì)出現(xiàn)找不到所調(diào)用函數(shù)的錯(cuò)誤信息。同變量一樣,函數(shù)的調(diào)用也應(yīng)遵照也應(yīng)遵照“先定義后運(yùn)用的原那么。

33、先定義后運(yùn)用的原那么。 對(duì)被調(diào)函數(shù)的聲明分為兩種情況:對(duì)被調(diào)函數(shù)的聲明分為兩種情況:1假設(shè)被調(diào)函數(shù)是假設(shè)被調(diào)函數(shù)是C言語(yǔ)系統(tǒng)提供的規(guī)范庫(kù)函數(shù),那么在源程序言語(yǔ)系統(tǒng)提供的規(guī)范庫(kù)函數(shù),那么在源程序文件的開(kāi)頭處,運(yùn)用文件的開(kāi)頭處,運(yùn)用#include命令,將存放所調(diào)用庫(kù)函數(shù)的有關(guān)命令,將存放所調(diào)用庫(kù)函數(shù)的有關(guān)“頭頭文件包含到該程序文件中來(lái)。文件包含到該程序文件中來(lái)。 #include命令的普通方式為:命令的普通方式為: #include或或#include stdio.h2假設(shè)被調(diào)用函數(shù)為用戶(hù)本人定義的函數(shù),普通情況下,應(yīng)在主假設(shè)被調(diào)用函數(shù)為用戶(hù)本人定義的函數(shù),普通情況下,應(yīng)在主調(diào)函數(shù)中對(duì)被調(diào)用函數(shù)

34、前往值的類(lèi)型進(jìn)展闡明。函數(shù)的闡明方調(diào)函數(shù)中對(duì)被調(diào)用函數(shù)前往值的類(lèi)型進(jìn)展闡明。函數(shù)的闡明方法是:在主調(diào)函數(shù)的聲明部分對(duì)被調(diào)函數(shù)進(jìn)展聲明。在主調(diào)函數(shù)中法是:在主調(diào)函數(shù)的聲明部分對(duì)被調(diào)函數(shù)進(jìn)展聲明。在主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)作闡明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)前往值的類(lèi)型,對(duì)被調(diào)函數(shù)作闡明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)前往值的類(lèi)型,以便在主調(diào)函數(shù)中按此種類(lèi)型對(duì)前往值作相應(yīng)的處置。以便在主調(diào)函數(shù)中按此種類(lèi)型對(duì)前往值作相應(yīng)的處置。其普通方式為:其普通方式為: 類(lèi)型闡明符類(lèi)型闡明符 被調(diào)函數(shù)名被調(diào)函數(shù)名(類(lèi)型類(lèi)型 形參,類(lèi)型形參,類(lèi)型 形參形參); 或者:或者: 類(lèi)型闡明符類(lèi)型闡明符 被調(diào)函數(shù)名被調(diào)函數(shù)名(類(lèi)

35、型,類(lèi)型類(lèi)型,類(lèi)型); 括號(hào)內(nèi)給出了形參的類(lèi)型和形參名,或只給出形參類(lèi)型。這便于編括號(hào)內(nèi)給出了形參的類(lèi)型和形參名,或只給出形參類(lèi)型。這便于編譯系統(tǒng)進(jìn)展檢錯(cuò),以防止能夠出現(xiàn)的錯(cuò)誤。譯系統(tǒng)進(jìn)展檢錯(cuò),以防止能夠出現(xiàn)的錯(cuò)誤。例例6.1 main函數(shù)對(duì)函數(shù)對(duì)printstart()函數(shù)的闡明為:函數(shù)的闡明為:void printstart();例例6.2 main函數(shù)對(duì)函數(shù)對(duì)sum()函數(shù)的闡明為:函數(shù)的闡明為:int sum(int x,int y);也可以寫(xiě)成:也可以寫(xiě)成:int sum(int ,int);言語(yǔ)中規(guī)定在以下幾種情況時(shí)可以省去在主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)言語(yǔ)中規(guī)定在以下幾種情況時(shí)可以省去在

36、主調(diào)函數(shù)中對(duì)被調(diào)函數(shù)的函數(shù)闡明。的函數(shù)闡明。1)當(dāng)被調(diào)函數(shù)的前往值是整型或字符型時(shí),可以不對(duì)被調(diào)函數(shù)當(dāng)被調(diào)函數(shù)的前往值是整型或字符型時(shí),可以不對(duì)被調(diào)函數(shù)作闡明。這時(shí)系統(tǒng)會(huì)自動(dòng)對(duì)被調(diào)函數(shù)前往值按整型處置。例作闡明。這時(shí)系統(tǒng)會(huì)自動(dòng)對(duì)被調(diào)函數(shù)前往值按整型處置。例6.3的主的主函數(shù)中把函數(shù)聲明語(yǔ)句函數(shù)中把函數(shù)聲明語(yǔ)句int compare(int a,int b);注釋掉而直接調(diào)用就注釋掉而直接調(diào)用就屬于這種情況。屬于這種情況。2)當(dāng)被調(diào)函數(shù)的函數(shù)定義出如今主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)當(dāng)被調(diào)函數(shù)的函數(shù)定義出如今主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)中也可以不對(duì)被調(diào)函數(shù)再作闡明而直接調(diào)用。例如例中也可以不對(duì)被調(diào)函數(shù)再

37、作闡明而直接調(diào)用。例如例6.1中,函數(shù)中,函數(shù)printstart()的定義放在的定義放在 menu() 函數(shù)之前,因此可在函數(shù)之前,因此可在 menu()函數(shù)中省函數(shù)中省去對(duì)去對(duì)printstart()函數(shù)的函數(shù)闡明函數(shù)的函數(shù)闡明void printstart();3)如在一切函數(shù)定義之前,在函數(shù)外預(yù)先闡明了各個(gè)函數(shù)的類(lèi)如在一切函數(shù)定義之前,在函數(shù)外預(yù)先闡明了各個(gè)函數(shù)的類(lèi)型,那么在以后的各主調(diào)函數(shù)中,可以不再對(duì)被調(diào)函數(shù)作闡明。型,那么在以后的各主調(diào)函數(shù)中,可以不再對(duì)被調(diào)函數(shù)作闡明。例如:例如: long factor (int a); long sum(int b); void main()

38、 long factor (int a) long sum(int b) 其中第一、二行對(duì)其中第一、二行對(duì)factor函數(shù)和函數(shù)和sum函數(shù)預(yù)先作了闡明。因此在以后各函數(shù)函數(shù)預(yù)先作了闡明。因此在以后各函數(shù)中無(wú)須對(duì)中無(wú)須對(duì)factor和和sum函數(shù)再作闡明就可直接調(diào)用。函數(shù)再作闡明就可直接調(diào)用?!纠纠?.4】計(jì)算】計(jì)算 = 1!+2!+ + n!(n1,20的整數(shù),從鍵盤(pán)輸入的整數(shù),從鍵盤(pán)輸入)。算法設(shè)計(jì)要點(diǎn):算法設(shè)計(jì)要點(diǎn):本案例可以設(shè)計(jì)本案例可以設(shè)計(jì)2個(gè)函數(shù):個(gè)函數(shù):factor( )用于求用于求n!;!;sum( )經(jīng)過(guò)調(diào)用經(jīng)過(guò)調(diào)用factor( )來(lái)實(shí)現(xiàn)求來(lái)實(shí)現(xiàn)求。輸入如下代碼:輸入如下

39、代碼:/*源文件名:源文件名:Li6_4.c功能:求階乘和功能:求階乘和 */#include stdio.hlong factor(int n)/*定義求階乘函數(shù)定義求階乘函數(shù)factor()*/int i;long f=1;for(i=1;i=n;i+)f=f*i;return f;long sum(int m)/*定義求和函數(shù)定義求和函數(shù)sum()*/int i;long s=0;for(i=1;i1)f=n*factor(n-1);else f=1;return f;void main()int n;long s;printf(please input a number:);scanf

40、(%d,&n);s=factor(n);/*調(diào)用調(diào)用factor()函數(shù)函數(shù)*/printf(%d!=%ldn,n,s);編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:其中,其中,factor函數(shù)在定義的過(guò)程中調(diào)用了本身,這種情況叫做函數(shù)的函數(shù)在定義的過(guò)程中調(diào)用了本身,這種情況叫做函數(shù)的遞歸調(diào)用。遞歸調(diào)用。 一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它本身稱(chēng)為遞歸調(diào)用。這種函數(shù)稱(chēng)為遞歸函一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它本身稱(chēng)為遞歸調(diào)用。這種函數(shù)稱(chēng)為遞歸函數(shù)。言語(yǔ)允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函數(shù)又是被調(diào)函數(shù)。數(shù)。言語(yǔ)允許函數(shù)的遞歸調(diào)用。在遞歸調(diào)用中,主調(diào)函

41、數(shù)又是被調(diào)函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其本身,每調(diào)用一次就進(jìn)入新的一層。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其本身,每調(diào)用一次就進(jìn)入新的一層。 下面以例下面以例6.5闡明一下遞歸的執(zhí)行過(guò)程。闡明一下遞歸的執(zhí)行過(guò)程。 設(shè)執(zhí)行本程序時(shí)輸入為設(shè)執(zhí)行本程序時(shí)輸入為5,即求,即求5!。在主函數(shù)中的調(diào)用語(yǔ)句即為。在主函數(shù)中的調(diào)用語(yǔ)句即為s=factor(5);,進(jìn)入,進(jìn)入factor函數(shù)后,由于函數(shù)后,由于n=5,大于大于1,故應(yīng)執(zhí)行,故應(yīng)執(zhí)行f=n*factor(n*1),即即f=factor(5-1)*5。該語(yǔ)句對(duì)。該語(yǔ)句對(duì)factor函數(shù)作遞歸調(diào)用即函數(shù)作遞歸調(diào)用即factor(4)。 進(jìn)展四次遞歸調(diào)用后,進(jìn)展四

42、次遞歸調(diào)用后,factor函數(shù)形參獲得的值變?yōu)楹瘮?shù)形參獲得的值變?yōu)?,故不再繼續(xù)遞歸調(diào),故不再繼續(xù)遞歸調(diào)用而開(kāi)場(chǎng)逐層前往主調(diào)函數(shù)。用而開(kāi)場(chǎng)逐層前往主調(diào)函數(shù)。factor(1)的函數(shù)前往值為的函數(shù)前往值為1,factor(2)的前往值的前往值為為2*1=2,factor(3)的前往值為的前往值為3*2=6,factor(4)的前往值為的前往值為4*6=24,最后前,最后前往值往值factor(5)為為5*24=120。 留意:為了防止遞歸調(diào)用無(wú)終止地進(jìn)展,必需在函數(shù)內(nèi)有終止遞歸調(diào)用的留意:為了防止遞歸調(diào)用無(wú)終止地進(jìn)展,必需在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。常用的方法是加條件對(duì)遞歸能否繼續(xù)進(jìn)展判別,滿(mǎn)

43、足某種條件后就不手段。常用的方法是加條件對(duì)遞歸能否繼續(xù)進(jìn)展判別,滿(mǎn)足某種條件后就不再作遞歸調(diào)用,而是逐層前往。如例再作遞歸調(diào)用,而是逐層前往。如例6.5中的條件中的條件if(n1)就是控制遞歸繼續(xù)就是控制遞歸繼續(xù)的條件,當(dāng)?shù)臈l件,當(dāng)n不小于不小于1的時(shí)候遞歸就終止,開(kāi)場(chǎng)回朔的過(guò)程。的時(shí)候遞歸就終止,開(kāi)場(chǎng)回朔的過(guò)程。 一個(gè)函數(shù)假設(shè)只能被本文件中其它函數(shù)所調(diào)用,稱(chēng)一個(gè)函數(shù)假設(shè)只能被本文件中其它函數(shù)所調(diào)用,稱(chēng)為內(nèi)部函數(shù),內(nèi)部函數(shù)又稱(chēng)靜態(tài)函數(shù)。在定義內(nèi)部函數(shù)為內(nèi)部函數(shù),內(nèi)部函數(shù)又稱(chēng)靜態(tài)函數(shù)。在定義內(nèi)部函數(shù)時(shí)在函數(shù)名和函數(shù)類(lèi)型前面加時(shí)在函數(shù)名和函數(shù)類(lèi)型前面加static。即:。即: static 函數(shù)類(lèi)

44、型函數(shù)類(lèi)型 函數(shù)名形參列表函數(shù)名形參列表 函數(shù)體函數(shù)體 例:例:static int fun(int a,int b) 特點(diǎn):只能被本文件中的函數(shù)所調(diào)用。特點(diǎn):只能被本文件中的函數(shù)所調(diào)用。 優(yōu)點(diǎn):不用擔(dān)憂(yōu)與其它源文件中的函數(shù)同名,由于優(yōu)點(diǎn):不用擔(dān)憂(yōu)與其它源文件中的函數(shù)同名,由于即使同名也沒(méi)關(guān)系。即使同名也沒(méi)關(guān)系。一個(gè)函數(shù)可以被其它文件中其它函數(shù)所調(diào)用,就稱(chēng)為外一個(gè)函數(shù)可以被其它文件中其它函數(shù)所調(diào)用,就稱(chēng)為外部函數(shù)。在定義函數(shù)時(shí)可冠以關(guān)鍵字部函數(shù)。在定義函數(shù)時(shí)可冠以關(guān)鍵字extern省略也可,省略也可,表示此函數(shù)是外部函數(shù)。即:表示此函數(shù)是外部函數(shù)。即:extern 函數(shù)類(lèi)型函數(shù)類(lèi)型 函數(shù)名形參

45、列表函數(shù)名形參列表函數(shù)體函數(shù)體如:如:extern int fun(int a,int b)特點(diǎn):允許被一切源文件中的函數(shù)所調(diào)用。特點(diǎn):允許被一切源文件中的函數(shù)所調(diào)用。留意:調(diào)用其它源文件中的外部函數(shù)時(shí),需求對(duì)其進(jìn)展留意:調(diào)用其它源文件中的外部函數(shù)時(shí),需求對(duì)其進(jìn)展闡明。闡明。 【例【例6.6】以多文件的方式實(shí)現(xiàn)加、減、乘、除和求余】以多文件的方式實(shí)現(xiàn)加、減、乘、除和求余數(shù)運(yùn)算程序數(shù)運(yùn)算程序 闡明:將實(shí)現(xiàn)加、減、乘、除和求余數(shù)運(yùn)算的程序段闡明:將實(shí)現(xiàn)加、減、乘、除和求余數(shù)運(yùn)算的程序段分別作為分別作為1個(gè)獨(dú)立的函數(shù)、存儲(chǔ)在個(gè)獨(dú)立的函數(shù)、存儲(chǔ)在1個(gè)獨(dú)立的源文件中。個(gè)獨(dú)立的源文件中。 程序框架如下程序

46、框架如下(完好程序詳見(jiàn)【例完好程序詳見(jiàn)【例6.6】源代碼】源代碼): 分別創(chuàng)建分別創(chuàng)建addition.c源文件、源文件、subtraction.c源文件、源文件、multiplication.c源文件、源文件、division.c源文件、源文件、remainder.c源源文件,分別在各源文件中實(shí)現(xiàn)相應(yīng)的加、減、乘、除和文件,分別在各源文件中實(shí)現(xiàn)相應(yīng)的加、減、乘、除和求余數(shù)函數(shù)的功能。求余數(shù)函數(shù)的功能。編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示: 在軟件工程工程中,采用構(gòu)造化方法進(jìn)展程序設(shè)計(jì)與編程,通常在軟件工程工程中,采用構(gòu)造化方法進(jìn)展程序設(shè)計(jì)與編

47、程,通常會(huì)產(chǎn)生多個(gè)源文件例如源程序文件、數(shù)據(jù)構(gòu)造定義文件等。會(huì)產(chǎn)生多個(gè)源文件例如源程序文件、數(shù)據(jù)構(gòu)造定義文件等。 那么,如何將這些源文件編譯、銜接成一個(gè)一致的可執(zhí)行文件呢?那么,如何將這些源文件編譯、銜接成一個(gè)一致的可執(zhí)行文件呢? 普通有兩種方法:普通有兩種方法: 1. 分別編譯、一并銜接分別編譯、一并銜接 C編譯程序是以源文件為編譯單位。編譯程序是以源文件為編譯單位。 當(dāng)一個(gè)程序中的函數(shù)和數(shù)據(jù)構(gòu)造分放在多個(gè)源文件中時(shí),先將各當(dāng)一個(gè)程序中的函數(shù)和數(shù)據(jù)構(gòu)造分放在多個(gè)源文件中時(shí),先將各文件分別編譯,再經(jīng)過(guò)文件分別編譯,再經(jīng)過(guò)link命令產(chǎn)生一個(gè)可執(zhí)行文件命令產(chǎn)生一個(gè)可執(zhí)行文件(.exe) 。 2.

48、 集中編譯、銜接集中編譯、銜接 利用編譯預(yù)處置命令利用編譯預(yù)處置命令#include,將其它源文件包含到主函數(shù),將其它源文件包含到主函數(shù)main( )所在的源文件的開(kāi)頭,然后直接編譯該文件即可。所在的源文件的開(kāi)頭,然后直接編譯該文件即可。 【例【例6.7】先經(jīng)過(guò)添加源文件的操作將】先經(jīng)過(guò)添加源文件的操作將addition.c源文件,源文件,subtraction.c源文件,源文件,multiplication.c源文件,源文件,division.c源文件,源文件,remainder.c源文件添加到本工程加減乘除求余來(lái),然后在其主源文件添加到本工程加減乘除求余來(lái),然后在其主函數(shù)函數(shù)main()里

49、添加如下幾行:里添加如下幾行:/*源文件名:源文件名:Li6_7.c功能:以多文件的方式實(shí)現(xiàn)加、減、乘、除和求余數(shù)運(yùn)算功能:以多文件的方式實(shí)現(xiàn)加、減、乘、除和求余數(shù)運(yùn)算*/*將其它各源文件包含進(jìn)來(lái)將其它各源文件包含進(jìn)來(lái)*/#include addition.c#include subtraction.c#include multiplication.c#include division.c#include remainder.c void main( ) 部分變量也稱(chēng)為內(nèi)部變量。部分變量是在函數(shù)內(nèi)包括函數(shù)闡部分變量也稱(chēng)為內(nèi)部變量。部分變量是在函數(shù)內(nèi)包括函數(shù)闡明和函數(shù)體作定義闡明的,其作用域僅限

50、于函數(shù)內(nèi),明和函數(shù)體作定義闡明的,其作用域僅限于函數(shù)內(nèi), 分開(kāi)該函數(shù)分開(kāi)該函數(shù)后再運(yùn)用這種變量是非法的。后再運(yùn)用這種變量是非法的。 【例【例6.8】部分變量的作用域】部分變量的作用域 輸入如下代碼:輸入如下代碼: /*源文件名:源文件名:Li6_8.c功能:測(cè)試部分變量的作用域功能:測(cè)試部分變量的作用域 */ #include stdio.h void test(int a) int b=20;printf(%dn,a+b); void main() int i=2,j=3,k; k=i+j; int k=8; printf(%dn,k); printf(%dn,k);test(k);編譯、銜

51、接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示: 在函數(shù)在函數(shù)test內(nèi)定義了三個(gè)變量,內(nèi)定義了三個(gè)變量,a為形參,為形參,b為普通變量。在為普通變量。在 test的范圍內(nèi)的范圍內(nèi)a、b有效,或者說(shuō)有效,或者說(shuō)a、b變量的作用域限于變量的作用域限于test內(nèi)。同理,內(nèi)。同理,i,j,k的作用域限于的作用域限于main內(nèi)。內(nèi)。 關(guān)于部分變量的作用域還要闡明以下幾點(diǎn):關(guān)于部分變量的作用域還要闡明以下幾點(diǎn): 1) 主函數(shù)中定義的變量只能在主函數(shù)中運(yùn)用,不主函數(shù)中定義的變量只能在主函數(shù)中運(yùn)用,不能在其它函數(shù)中運(yùn)用。同時(shí),主函數(shù)中也不能運(yùn)用其它能在其它函數(shù)中運(yùn)用。同時(shí),主

52、函數(shù)中也不能運(yùn)用其它函數(shù)中定義的變量。由于主函數(shù)也是一個(gè)函數(shù),它與其函數(shù)中定義的變量。由于主函數(shù)也是一個(gè)函數(shù),它與其它函數(shù)是平行關(guān)系。這一點(diǎn)是與其它言語(yǔ)不同的,應(yīng)予它函數(shù)是平行關(guān)系。這一點(diǎn)是與其它言語(yǔ)不同的,應(yīng)予以留意。以留意。 2) 形參變量是屬于被調(diào)函數(shù)的部分變量,實(shí)參變形參變量是屬于被調(diào)函數(shù)的部分變量,實(shí)參變量是屬于主調(diào)函數(shù)的部分變量。量是屬于主調(diào)函數(shù)的部分變量。 3) 允許在不同的函數(shù)中運(yùn)用一樣的變量名,它們?cè)试S在不同的函數(shù)中運(yùn)用一樣的變量名,它們代表不同的對(duì)象,分配不同的單元,互不干擾,也不會(huì)代表不同的對(duì)象,分配不同的單元,互不干擾,也不會(huì)發(fā)生混淆。發(fā)生混淆。 4) 在復(fù)合語(yǔ)句中也可

53、定義變量,其作用域只在復(fù)在復(fù)合語(yǔ)句中也可定義變量,其作用域只在復(fù)合語(yǔ)句范圍內(nèi)。合語(yǔ)句范圍內(nèi)。 全局變量也稱(chēng)為外部變量,它是在函數(shù)外部定義的變?nèi)肿兞恳卜Q(chēng)為外部變量,它是在函數(shù)外部定義的變量。它不屬于哪一個(gè)函數(shù),它屬于整個(gè)源程序文件。其量。它不屬于哪一個(gè)函數(shù),它屬于整個(gè)源程序文件。其作用域是整個(gè)源程序。在函數(shù)中運(yùn)用全局變量,普通應(yīng)作用域是整個(gè)源程序。在函數(shù)中運(yùn)用全局變量,普通應(yīng)作全局變量闡明。作全局變量闡明。 只需在函數(shù)內(nèi)經(jīng)過(guò)闡明的全局變量才干運(yùn)用。全局變只需在函數(shù)內(nèi)經(jīng)過(guò)闡明的全局變量才干運(yùn)用。全局變量的闡明符為量的闡明符為extern。但在一個(gè)函數(shù)之前定義的全局變量,。但在一個(gè)函數(shù)之前定義的全

54、局變量,在該函數(shù)內(nèi)運(yùn)用可不再加以闡明。在該函數(shù)內(nèi)運(yùn)用可不再加以闡明?!纠纠?.9】要求設(shè)計(jì)一個(gè)函數(shù)】要求設(shè)計(jì)一個(gè)函數(shù)cuboiddouble length, double width, double height3個(gè)參數(shù)依次為長(zhǎng)方體的長(zhǎng)、寬、高,用于求長(zhǎng)個(gè)參數(shù)依次為長(zhǎng)方體的長(zhǎng)、寬、高,用于求長(zhǎng)方體的體積及正、側(cè)、頂三個(gè)面的面積。方體的體積及正、側(cè)、頂三個(gè)面的面積。算法設(shè)計(jì)要點(diǎn):算法設(shè)計(jì)要點(diǎn):函數(shù)函數(shù)cuboid (int length, int width, int height)本身只能前往本身只能前往1個(gè)值本個(gè)值本案例選定體積,正、側(cè)、頂三個(gè)面的面積就只能經(jīng)過(guò)外部變量來(lái)案例選定體積,正、

55、側(cè)、頂三個(gè)面的面積就只能經(jīng)過(guò)外部變量來(lái)進(jìn)展數(shù)據(jù)共享。進(jìn)展數(shù)據(jù)共享。 /*源文件名:源文件名:Li6_9.c功能:求長(zhǎng)方體的體積及正、側(cè)、頂三個(gè)面的面積功能:求長(zhǎng)方體的體積及正、側(cè)、頂三個(gè)面的面積 */#include stdio.hdouble area1, area2, area3;/*定義定義3個(gè)外部變量,用于數(shù)據(jù)共享個(gè)外部變量,用于數(shù)據(jù)共享*/double cuboid (double length, double width, double height);/*函數(shù)闡明函數(shù)闡明*/void main( )double volume,length,width,height; printf

56、(please input the cuboids length、width and height:);scanf(%lf%lf%lf,&length,&width,&height);volume = cuboid (length, width, height);printf(n volume = %.2lf, area1 = %.2lf, area2 = %.2lf, area3 = %.2lfn , volume, area1, area2, area3);double cuboid (double length, double width, double heig

57、ht)double volume;volume = length * width * height;/*計(jì)算體積計(jì)算體積*/area1= length * width; /*計(jì)算計(jì)算3個(gè)面的面積個(gè)面的面積*/area2= width * height; area3= length * height;return( volume);/*前往體積值前往體積值*/編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:編譯、銜接、運(yùn)轉(zhuǎn)程序。程序運(yùn)轉(zhuǎn)后,屏幕顯示:留意:留意:(1)外部變量的作用域:從定義點(diǎn)到本文件終了。外部變量的作用域:從定義點(diǎn)到本文件終了。為方便運(yùn)用,建議將外部變量的定義放在文件開(kāi)頭,如例為方

58、便運(yùn)用,建議將外部變量的定義放在文件開(kāi)頭,如例6.9所示。所示。(2)在同一源文件中,允許外部變量和內(nèi)部變量同名。在同一源文件中,允許外部變量和內(nèi)部變量同名。在內(nèi)部變量的作用域內(nèi),外部變量不起作用。在內(nèi)部變量的作用域內(nèi),外部變量不起作用。(3)外部變量可實(shí)現(xiàn)函數(shù)之間的數(shù)據(jù)共享,但又使這些函數(shù)依賴(lài)這些外部變量可實(shí)現(xiàn)函數(shù)之間的數(shù)據(jù)共享,但又使這些函數(shù)依賴(lài)這些外部變量,因此使得這些函數(shù)的獨(dú)立性降低。外部變量,因此使得這些函數(shù)的獨(dú)立性降低。從模塊化程序設(shè)計(jì)觀念來(lái)看,這是不利的。因此不是非用不可時(shí),從模塊化程序設(shè)計(jì)觀念來(lái)看,這是不利的。因此不是非用不可時(shí),不要運(yùn)用外部變量。不要運(yùn)用外部變量。 言語(yǔ)中的變

59、量,不僅有類(lèi)型特性,還有存儲(chǔ)特性,從變量值言語(yǔ)中的變量,不僅有類(lèi)型特性,還有存儲(chǔ)特性,從變量值存在的時(shí)間即生存期角度來(lái)分,可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存在的時(shí)間即生存期角度來(lái)分,可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。存儲(chǔ)方式。 1動(dòng)態(tài)存儲(chǔ)方式:是在程序運(yùn)轉(zhuǎn)期間根據(jù)需求進(jìn)展動(dòng)態(tài)的分配動(dòng)態(tài)存儲(chǔ)方式:是在程序運(yùn)轉(zhuǎn)期間根據(jù)需求進(jìn)展動(dòng)態(tài)的分配存儲(chǔ)空間的方式。存儲(chǔ)空間的方式。自動(dòng)內(nèi)部變量自動(dòng)內(nèi)部變量(auto)、存放器變量、存放器變量(register) 2靜態(tài)存儲(chǔ)方式:是指在程序運(yùn)轉(zhuǎn)期間分配固定的存儲(chǔ)空間的靜態(tài)存儲(chǔ)方式:是指在程序運(yùn)轉(zhuǎn)期間分配固定的存儲(chǔ)空間的方式。靜態(tài)內(nèi)部變量方式。靜態(tài)內(nèi)部變量(static

60、)、外部變量、外部變量(extern) 。用戶(hù)存儲(chǔ)空間可以分為三個(gè)部分:用戶(hù)存儲(chǔ)空間可以分為三個(gè)部分: (1) 程序區(qū);程序區(qū); (2) 靜態(tài)存儲(chǔ)區(qū);靜態(tài)存儲(chǔ)區(qū); (3) 動(dòng)態(tài)存儲(chǔ)區(qū);動(dòng)態(tài)存儲(chǔ)區(qū); 全局變量全部存放在靜態(tài)存儲(chǔ)區(qū),在程序開(kāi)場(chǎng)執(zhí)行時(shí)給全局變?nèi)肿兞咳看娣旁陟o態(tài)存儲(chǔ)區(qū),在程序開(kāi)場(chǎng)執(zhí)行時(shí)給全局變量分配存儲(chǔ)區(qū),程序運(yùn)轉(zhuǎn)終了就釋放。在程序執(zhí)行過(guò)程中它們占據(jù)量分配存儲(chǔ)區(qū),程序運(yùn)轉(zhuǎn)終了就釋放。在程序執(zhí)行過(guò)程中它們占據(jù)固定的存儲(chǔ)單元,而不動(dòng)態(tài)地進(jìn)展分配和釋放;固定的存儲(chǔ)單元,而不動(dòng)態(tài)地進(jìn)展分配和釋放;動(dòng)態(tài)存儲(chǔ)區(qū)存放以下數(shù)據(jù):動(dòng)態(tài)存儲(chǔ)區(qū)存放以下數(shù)據(jù): 1) 函數(shù)方式參數(shù);函數(shù)方式參數(shù); 2) 自動(dòng)變量未加自動(dòng)變量未加static聲明的部分

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論