【資格考試】全國計(jì)算機(jī)二級c語言_第七章函數(shù)ppt模版課件_第1頁
【資格考試】全國計(jì)算機(jī)二級c語言_第七章函數(shù)ppt模版課件_第2頁
【資格考試】全國計(jì)算機(jī)二級c語言_第七章函數(shù)ppt模版課件_第3頁
【資格考試】全國計(jì)算機(jī)二級c語言_第七章函數(shù)ppt模版課件_第4頁
【資格考試】全國計(jì)算機(jī)二級c語言_第七章函數(shù)ppt模版課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

洞庭軟件園培訓(xùn)學(xué)校( )第 7章 函 數(shù)C語言是通過函數(shù)來實(shí)現(xiàn)模塊化程序設(shè)計(jì)的。所以較大的 C語言應(yīng)用程序,往往是由多個函數(shù)組成的,每個函數(shù)分別對應(yīng)各自的功能模塊。7.1 函數(shù)的定義與調(diào)用7.2 函數(shù)的嵌套調(diào)用與遞歸調(diào)用7.3 數(shù)組作為函數(shù)參數(shù)7.4 內(nèi)部變量與外部變量7.5 內(nèi)部函數(shù)與外部函數(shù)7.6 變量的動態(tài)存儲與靜態(tài)存儲 Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1 函數(shù)的定義與調(diào)用7.1.1 函數(shù)的定義7.1.2 函數(shù)的返回值與函數(shù)類型7.1.3 對被調(diào)用函數(shù)的說明和函數(shù)原型7.1.4 函數(shù)的調(diào)用7.1.5 函數(shù)的形參與實(shí)參 Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1 .1 函數(shù)的定義1任何函數(shù)(包括主函數(shù) main()) 都是由函數(shù)說明和函數(shù)體兩部分組成。根據(jù)函數(shù)是否需要參數(shù),可將函數(shù)分為無參函數(shù)和有參函數(shù)兩種。( 1)無參函數(shù)的一般形式函數(shù)類型 函數(shù)名 ( void ) 說明語句部分;可執(zhí)行語句部分;注意 :在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。但在新標(biāo)準(zhǔn)中,函數(shù)不可缺省參數(shù)表;如果不需要參數(shù),則用“void”表示,主函數(shù) main()例外。號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )( 2)有參函數(shù)的一般形式函數(shù)類型 函數(shù)名 ( 數(shù)據(jù)類型 參數(shù) ,數(shù)據(jù)類型 參數(shù) 2 ) 說明語句部分;可執(zhí)行語句部分;有參函數(shù)比無參函數(shù)多了一個參數(shù)表。調(diào)用有參函數(shù)時,調(diào)用函數(shù)將賦予這些參數(shù)實(shí)際的值。為了與調(diào)用函數(shù)提供的實(shí)際參數(shù)區(qū)別開,將函數(shù)定義中的參數(shù)表稱為形式參數(shù)表,簡稱形參表。號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )案例 7.1 定義一個函數(shù),用于求兩個數(shù)中的大數(shù)。/*案例代碼文件名: AL7_1.C*/*功能:定義一個求較大數(shù)的函數(shù)并在主函數(shù)中調(diào)用 */int max(int n1, int n2) /*定義一個函數(shù) max()*/ return (n1n2?n1:n2);main() int max(int n1, int n2); /*函數(shù)說明 */int num1,num2;printf(“input two numbers:n“);scanf(“%d%d“, /*使程序暫停,按任一鍵繼續(xù) */程序演示 號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )2說明( 1) 函數(shù)定義不允許嵌套 。在語言中,所有函數(shù)(包括主函數(shù) main()) 都是平行的。一個函數(shù)的定義,可以放在程序中的任意位置,主函數(shù) main()之前或之后。但在一個函數(shù)的函數(shù)體內(nèi),不能再定義另一個函數(shù),即不能嵌套定義。( 2)空函數(shù) 既無參數(shù)、函數(shù)體又為空的函數(shù)。其一般形式為:函數(shù)類型 函數(shù)名 (void) ( 3)在老版本 C語言中,參數(shù)類型說明允許放在函數(shù)說明部分的第 2行單獨(dú)指定。 Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1.2 函數(shù)的返回值與函數(shù)類型語言的函數(shù)兼有其它語言中的函數(shù)和過程兩種功能,從這個角度看,又可把函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩種。1函數(shù)返回值與 return語句有參函數(shù)的返回值,是通過函數(shù)中的 return語句來獲得的。( 1) return語句的一般格式: return ( 返回值表達(dá)式 ); ( 2) return語句的功能:返回調(diào)用函數(shù),并將 “返回值表達(dá)式 ”的值帶給調(diào)用函數(shù)。注意 :調(diào)用函數(shù)中無 return語句,并不是不返回一個值,而是一個不確定的值。為了明確表示不返回值,可以用 “void”定義成 “無(空)類型 ”。號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )2函數(shù)類型在定義函數(shù)時,對函數(shù)類型的說明,應(yīng)與 return語句中、返回值表達(dá)式的類型一致。如果不一致,則以函數(shù)類型為準(zhǔn)。如果缺省函數(shù)類型,則系統(tǒng)一律按整型處理。良好的程序設(shè)計(jì)習(xí)慣 :為了使程序具有良好的可讀性并減少出錯,凡不要求返回值的函數(shù)都應(yīng)定義為空類型;即使函數(shù)類型為整型,也不使用系統(tǒng)的缺省處理。Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1.3 對被調(diào)用函數(shù)的說明和函數(shù)原型在 ANSI C新標(biāo)準(zhǔn)中,采用函數(shù)原型方式,對被調(diào)用函數(shù)進(jìn)行說明,其一般格式如下:函數(shù)類型 函數(shù)名 (數(shù)據(jù)類型 參數(shù)名 , 數(shù)據(jù)類型 參數(shù)名 2) ;語言同時又規(guī)定,在以下 2種情況下,可以省去對被調(diào)用函數(shù)的說明:( 1)當(dāng)被調(diào)用函數(shù)的函數(shù)定義出現(xiàn)在調(diào)用函數(shù)之前時。因?yàn)樵谡{(diào)用之前,編譯系統(tǒng)已經(jīng)知道了被調(diào)用函數(shù)的函數(shù)類型、參數(shù)個數(shù)、類型和順序。( 2)如果在所有函數(shù)定義之前,在函數(shù)外部(例如文件開始處)預(yù)先對各個函數(shù)進(jìn)行了說明,則在調(diào)用函數(shù)中可缺省對被調(diào)用函數(shù)的說明。Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1.4 函數(shù)的調(diào)用 在程序中,是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。語言中,函數(shù)調(diào)用的一般形式為: 函數(shù)名 (實(shí)際參數(shù)表 ) 切記 :實(shí)參的個數(shù)、類型和順序,應(yīng)該與被調(diào)用函數(shù)所要求的參數(shù)個數(shù)、類型和順序一致,才能正確地進(jìn)行數(shù)據(jù)傳遞。在語言中,可以用以下幾種方式調(diào)用函數(shù):( 1) 函數(shù)表達(dá)式 。函數(shù)作為表達(dá)式的一項(xiàng),出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。( 2)函數(shù)語句 。 C語言中的函數(shù)可以只進(jìn)行某些操作而不返回函數(shù)值,這時的函數(shù)調(diào)用可作為一條獨(dú)立的語句。( 3) 函數(shù)實(shí)參 。函數(shù)作為另一個函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )說明 :( 1)調(diào)用函數(shù)時,函數(shù)名稱必須與具有該功能的自定義函數(shù)名稱完全一致。( 2)實(shí)參在類型上按順序與形參,必須一一對應(yīng)和匹配。如果類型不匹配, C編譯程序?qū)促x值兼容的規(guī)則進(jìn)行轉(zhuǎn)換。如果實(shí)參和形參的類型不賦值兼容,通常并不給出出錯信息,且程序仍然繼續(xù)執(zhí)行,只是得不到正確的結(jié)果。( 3)如果實(shí)參表中包括多個參數(shù),對實(shí)參的求值順序隨系統(tǒng)而異。有的系統(tǒng)按自左向右順序求實(shí)參的值,有的系統(tǒng)則相反。 Turbo C和 MS C是按自右向左的順序進(jìn)行的 。Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.1.5 函數(shù)的形參與實(shí)參函數(shù)的參數(shù)分為 形參 和 實(shí)參 兩種,作用是實(shí)現(xiàn)數(shù)據(jù)傳送。形參出現(xiàn)在函數(shù)定義中,只能在該函數(shù)體內(nèi)使用。發(fā)生函數(shù)調(diào)用時,調(diào)用函數(shù)把實(shí)參的值復(fù)制 1份,傳送給被調(diào)用函數(shù)的形參,從而實(shí)現(xiàn)調(diào)用函數(shù)向被調(diào)用函數(shù)的數(shù)據(jù)傳送。 案例 7.3 實(shí)參對形參的數(shù)據(jù)傳遞。/*實(shí)參對形參的數(shù)據(jù)傳遞。 */*案例代碼文件名: AL7_3.C*/號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )void main() void s(int n); /*說明函數(shù) */int n=100; /*定義實(shí)參 n, 并初始化 */s(n); /*調(diào)用函數(shù) */printf(“n_s=%dn“,n); /*輸出調(diào)用后實(shí)參的值,便于進(jìn)行比較 */getch();/* */void s(int n) int i;printf(“n_x=%dn“,n); /*輸出改變前形參的值 */for(i=n-1; i=1; i-) n=n+i; /*改變形參的值 */printf(“n_x=%dn“,n); /*輸出改變后形參的值 */程序演示 號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )說明:( 1)實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等。無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此,應(yīng)預(yù)先用賦值、輸入等辦法,使實(shí)參獲得確定的值。( 2)形參變量只有在被調(diào)用時,才分配內(nèi)存單元;調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。因此,形參只有在該函數(shù)內(nèi)有效。調(diào)用結(jié)束,返回調(diào)用函數(shù)后,則不能再使用該形參變量。( 3)實(shí)參對形參的數(shù)據(jù)傳送是單向的,即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。( 4)實(shí)參和形參占用不同的內(nèi)存單元,即使同名也互不影響。Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.2 函數(shù)的嵌套調(diào)用和遞歸調(diào)用7.2.1 函數(shù)的嵌套調(diào)用 函數(shù)的嵌套調(diào)用是指,在執(zhí)行被調(diào)用函數(shù)時,被調(diào)用函數(shù)又調(diào)用了其它函數(shù)。這與其它語言的子程序嵌套調(diào)用的情形是類似的,其關(guān)系可表示如圖 7-1。號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )案例 7.4 計(jì)算 s=1k+2k+3k+N k /*案例代碼文件名: AL7_4.C*/*功能:函數(shù)的嵌套調(diào)用 */#define K 4#define N 5long f1(int n,int k) /*計(jì)算 n的 k次方 */ long power=n;int i;for(i=1;i1) f=power(n-1)*n;else f=1;return(f);號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )main() int n;long y;printf(“input a inteager number:n“);scanf(“%d“,y=power(n);printf(“%d!=%ldn“,n,y);getch(); 程序演示Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.3 數(shù)組作為函數(shù)參數(shù)數(shù)組用作函數(shù)參數(shù)有兩種形式:一種是把數(shù)組元素(又稱下標(biāo)變量)作為實(shí)參使用;另一種是把數(shù)組名作為函數(shù)的形參和實(shí)參使用。 7.3.1 數(shù)組元素作為函數(shù)參數(shù) 7.3.2 數(shù)組名作為函數(shù)的形參和實(shí)參 Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.3.1 數(shù)組元素作為函數(shù)參數(shù)數(shù)組元素就是下標(biāo)變量,它與普通變量并無區(qū)別。數(shù)組元素只能用作函數(shù)實(shí)參,其用法與普通變量完全相同:在發(fā)生函數(shù)調(diào)用時,把數(shù)組元素的值傳送給形參,實(shí)現(xiàn)單向值傳送。案例 7.6 寫一函數(shù),統(tǒng)計(jì)字符串中字母的個數(shù)。/*案例代碼文件名: AL7_6.C*/*功能:數(shù)組元素作為函數(shù)實(shí)參 */int isalp(char c) if (c=aelse return(0);號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )main() int i,num=0;char str255;printf(“Input a string: “);gets(str);for(i=0;stri!=0;i+)if (isalp(stri) num+;puts(str);printf(“num=%dn“,num);getch(); 程序演示 號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )說明:( 1)用數(shù)組元素作實(shí)參時,只要數(shù)組類型和函數(shù)的形參類型一致即可,并不要求函數(shù)的形參也是下標(biāo)變量。換句話說,對數(shù)組元素的處理是按普通變量對待的。( 2)在普通變量或下標(biāo)變量作函數(shù)參數(shù)時,形參變量和實(shí)參變量是由編譯系統(tǒng)分配的兩個不同的內(nèi)存單元。在函數(shù)調(diào)用時發(fā)生的值傳送,是把實(shí)參變量的值賦予形參變量。Return號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )7.3.2 數(shù)組名作為函數(shù)的形參和實(shí)參數(shù)組名作函數(shù)參數(shù)時,既可以作形參,也可以作實(shí)參。數(shù)組名作函數(shù)參數(shù)時,要求形參和相對應(yīng)的實(shí)參都必須是類型相同的數(shù)組(或指向數(shù)組的指針變量),都必須有明確的數(shù)組說明案例 7.7 已知某個學(xué)生 5門課程的成績,求平均成績。/*案例代碼文件名: AL7_7.C*/float aver(float a ) /*求平均值函數(shù) */ int i;float av,s=a0; for(i=1; i5; i+) s += ai;av=s/5;return av;號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )void main() float sco5,av;int i;printf(“ninput 5 scores:n“);for(i=0; i5; i+) scanf(“%f“, 程序演示 號: 1774056811(成老師 ) 123007933(姚老師 ) Tel網(wǎng)址: 洞庭軟件園培訓(xùn)學(xué)校( )說明 :( 1)用數(shù)組名作函數(shù)參數(shù),應(yīng)該在調(diào)用函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組,且數(shù)據(jù)類型必須一致,否則結(jié)果將出錯。例如,在本案例中,形參數(shù)組為 a, 實(shí)參數(shù)組為 sco, 它們的數(shù)據(jù)類型相同。( 2) C編譯系統(tǒng)對形參數(shù)組大小不作檢查,所以形參數(shù)組可以不指定大小。例如,本案例中的形參數(shù)組 a。如果指定形參數(shù)組的大小,則實(shí)參數(shù)組的大小必須大于等于形參數(shù)組,否則因形參數(shù)組的部分

溫馨提示

  • 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

提交評論