第8次課--函數(shù)的定義、聲明和調(diào)用.ppt_第1頁
第8次課--函數(shù)的定義、聲明和調(diào)用.ppt_第2頁
第8次課--函數(shù)的定義、聲明和調(diào)用.ppt_第3頁
第8次課--函數(shù)的定義、聲明和調(diào)用.ppt_第4頁
第8次課--函數(shù)的定義、聲明和調(diào)用.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,又開始學(xué)習(xí)新的一章了,本章又有哪些魔術(shù)?,教案,主要內(nèi)容,函數(shù)的全面認(rèn)識(shí) 函數(shù)的定義 函數(shù)的調(diào)用 函數(shù)的聲明 函數(shù)的形參和實(shí)參 函數(shù)的返回值,本章任務(wù),編寫(簡易)成績管理系統(tǒng)的主菜單框架,有輸入成績、計(jì)算總成績、計(jì)算平均成績、輸出成績等菜單項(xiàng)。,函數(shù)的全面認(rèn)識(shí),什么是函數(shù)? 函數(shù)是一個(gè)完成特定功能的程序段。 用戶可以把程序編寫成一個(gè)個(gè)相對獨(dú)立的函數(shù)模塊,然后用調(diào)用的方法來實(shí)現(xiàn)所要求的功能。 采用函數(shù)結(jié)構(gòu)的好處? 使程序?qū)哟谓Y(jié)構(gòu)清晰。 便于程序的編寫、閱讀和調(diào)試。,函數(shù)的全面認(rèn)識(shí),一個(gè)C程序由一個(gè)主函數(shù)和若干個(gè)其它函數(shù)構(gòu)成。 所有函數(shù)都是平行的,即在定義時(shí)相互獨(dú)立的,函數(shù)不能嵌套定義。 由主

2、函數(shù)調(diào)用其它函數(shù),其它函數(shù)之間可以相互調(diào)用。同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次。 C程序總是從main函數(shù)開始執(zhí)行,main函數(shù)執(zhí)行完,整個(gè)C程序也就結(jié)束。,函數(shù)的全面認(rèn)識(shí),在C語言中,函數(shù)有兩種:標(biāo)準(zhǔn)庫函數(shù)、用戶自定義函數(shù)。 C語言中的標(biāo)準(zhǔn)庫函數(shù)是系統(tǒng)提供的,主要提供一些基本的功能。比如前面提到的輸入輸出函數(shù)、數(shù)學(xué)函數(shù)等。 在使用這些庫函數(shù)的時(shí)候,必須包含該函數(shù)聲明所在的頭文件。 例如,使用scanf和printf時(shí),要在程序開始處加下面一行。 #include “stdio.h”,返回,函數(shù)的定義,定義的位置 在語言中,所有的函數(shù)定義(包括主函數(shù)main在內(nèi))都是平行的。也就是說,

3、在一個(gè)函數(shù)的函數(shù)體內(nèi),不能再定義另一個(gè)函數(shù),即函數(shù)不能嵌套定義。,函數(shù)的定義,函數(shù)定義的一般形式:有兩種。,格式2: 類型標(biāo)識(shí)符 函數(shù)名(類型 形參1,類型 形參n) 函數(shù)體 ,格式1: 類型標(biāo)識(shí)符 函數(shù)名(形參表) 形參類型說明; 函數(shù)體 ,說明函數(shù)的返回值類型,可以是任何一種有效類型,當(dāng)返回值是int或char時(shí)可以省略,不需要返回值時(shí)寫成void。,必須是一個(gè)合法的標(biāo)識(shí)符。,TC中兩種格式都可以用, VC環(huán)境中用格式2。,函數(shù)定義舉例,【問題1】編寫函數(shù)max(),求整型a、b的較大數(shù),并作為函數(shù)值返回。 用格式1編碼如下: int max( a, b ) int a, b; int c

4、; c = a=b?a:b; return c; ,函數(shù)頭部 函數(shù)名為max 函數(shù)返回值類型為int 有a、b兩個(gè)形參,類型為整型,函數(shù)體,將變量c的值作為函數(shù)值返回, 其類型為int,和上面一致。,函數(shù)定義舉例,【問題1】編寫函數(shù)max(),求整型a、b的較大數(shù),并作為函數(shù)值返回。 用格式2編碼如下: int max( int a, int b ) int c; c = a=b?a:b; return c; ,返回,提倡大家用格式2,函數(shù)的調(diào)用,在完成函數(shù)的定義以后,就可以調(diào)用函數(shù)了。 函數(shù)調(diào)用的一般形式 函數(shù)名(實(shí)參表列),如果調(diào)用的是無參函數(shù), 則“實(shí)參表列”可以沒有, 但括弧不能省略。

5、,函數(shù)的調(diào)用,函數(shù)調(diào)用的方式主要有三種情況: 函數(shù)語句:適合于無返回值的函數(shù),或者不需要使用返回值的函數(shù)。 例如: printf( “hello!” ); 函數(shù)表達(dá)式:出現(xiàn)在一個(gè)表達(dá)式中,此時(shí)使用函數(shù)的返回值,并將此返回值作為運(yùn)算對象參與表達(dá)式的運(yùn)算。 例如: c=3*max(a,b); 函數(shù)參數(shù):將函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參。 例如: d=max( c, max(a,b) );,函數(shù)調(diào)用舉例,【問題2】利用前面的max函數(shù),編寫main函數(shù),實(shí)現(xiàn)求三個(gè)整數(shù)的最大數(shù)。 源程序 void main() int a,b,c,d; scanf(%d,%d,%d, ,思考 有幾處函數(shù)調(diào)用? 分別是哪種

6、調(diào)用方式?,運(yùn)行程序(7_2),看源程序(7_2),函數(shù)調(diào)用舉例,【問題3】編寫程序,實(shí)現(xiàn)求三個(gè)實(shí)數(shù)的最大數(shù)。,運(yùn)行程序(7_3),看源程序(7_3),思考 將兩個(gè)函數(shù)的位置前后交換一下,結(jié)果如何?,調(diào)用集成開發(fā)環(huán)境演示!,返回,函數(shù)的聲明,被調(diào)函數(shù)應(yīng)具備的條件: 必須已存在(定義); 如是庫函數(shù),應(yīng)該在本文件的開頭用#include命令將有關(guān)的頭文件包含到本文件中。 如是用戶自定義函數(shù),并且定義在后調(diào)用在前,則必須在調(diào)用之前對被調(diào)函數(shù)作聲明。,函數(shù)的聲明,函數(shù)聲明的一般格式: 類型標(biāo)識(shí)符 函數(shù)名(類型 形參,類型 形參); 例如: double max(double a, double b

7、); 注意 函數(shù)聲明(函數(shù)首部加一個(gè)分號(hào))和函數(shù)定義(對函數(shù)功能的確立)的不同。 在函數(shù)聲明中可以不寫形參名,而只寫形參的類型。 例如: double max(double, double );,不可少,再看問題3,【問題3】編寫程序,實(shí)現(xiàn)求三個(gè)實(shí)數(shù)的最大數(shù)。,運(yùn)行程序(7_3_1),看源程序(7_3_1),思考 將兩個(gè)函數(shù)的位置前后交換一下,結(jié)果如何?,解決辦法:對函數(shù)進(jìn)行聲明。,函數(shù)定義、調(diào)用、聲明三者關(guān)系,函數(shù)定義、函數(shù)調(diào)用、函數(shù)聲明三者的區(qū)別: 函數(shù)定義是實(shí)現(xiàn)一定功能的程序段。 函數(shù)調(diào)用是對函數(shù)的使用。 函數(shù)聲明是說明語句,說明函數(shù)的返回值類型、函數(shù)參數(shù)的個(gè)數(shù)及類型。,double m

8、ax( double a, double b ); void main() double a,b,c,d; printf( 請輸入3個(gè)實(shí)數(shù)(以逗號(hào)隔開): ); scanf(%lf,%lf,%lf, ,函數(shù)定義、調(diào)用、聲明三者關(guān)系,函數(shù)調(diào)用,函數(shù)聲明,函數(shù)定義,返回,函數(shù)的形參和實(shí)參,形參(形式參數(shù)的簡稱):在函數(shù)的定義和聲明語句中,函數(shù)名后面括號(hào)中的參數(shù)。 實(shí)參(實(shí)際參數(shù)的簡稱):在函數(shù)的調(diào)用語句中,函數(shù)名后面括號(hào)中的參數(shù)。 形參和實(shí)參是主調(diào)函數(shù)和被調(diào)函數(shù)進(jìn)行信息通信的接口。,傳遞給,實(shí)參 形參,參數(shù)傳遞規(guī)則,在實(shí)參向形參傳送參數(shù)的過程中,遵循如下的規(guī)則: 數(shù)目一致、類型兼容。 實(shí)參可以是常

9、量、變量或表達(dá)式,但它們應(yīng)有確定的值;形參只能是變量,而且形參隨著函數(shù)被調(diào)用而占有內(nèi)存單元,函數(shù)調(diào)用結(jié)束時(shí),其所占內(nèi)存單元也釋放。 如同時(shí)有多個(gè)實(shí)參,實(shí)參的求值順序有的系統(tǒng)是自左而右,有的系統(tǒng)是自右而左。Turbo c 和 MS c 是自右而左順序求值。 單向值傳遞,即:只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參(換言之,形參的值的變化不會(huì)影響實(shí)參)。,運(yùn)行程序(7_3_2),看源程序(7_3_2),參數(shù)傳遞舉例,【問題4】輸入兩個(gè)數(shù),并求和。要求用函數(shù)實(shí)現(xiàn)求和。,運(yùn)行程序(7_4),看源程序(7_4),思考 上述程序能實(shí)現(xiàn)求和嗎?為什么?,由于參數(shù)采用“單向值傳遞”, 所以變量c不能得到正確

10、的結(jié)果。,返回,函數(shù)的返回值,通常,函數(shù)運(yùn)算結(jié)果由函數(shù)返回值返回的。 函數(shù)的返回值是通過函數(shù)中的return語句獲得。 函數(shù)返回值的類型應(yīng)當(dāng)在定義函數(shù)時(shí)指定。 函數(shù)返回值的類型和return語句中表達(dá)式的類型不一致時(shí),則以函數(shù)返回值類型為準(zhǔn)。 如果不使用return語句,則帶回一個(gè)不確定的值。 為了明確表示“不帶回值”,可以使用“void”定義成“無類型”。,再看問題4,【問題4】輸入兩個(gè)數(shù),并求和。要求用函數(shù)實(shí)現(xiàn)求和。 正確的源程序,運(yùn)行程序(7_4_1),int sum(int x, int y) int z; z=x+y; return z; void main() int a,b,c=0; scanf(%d%d, ,通過return語句返回和值,函數(shù)返回值類型,函數(shù)調(diào)用方式,函數(shù)返回值說明,一般情況,一個(gè)函數(shù)只能返回一個(gè)值。 如果需要函數(shù)有兩個(gè)及以上返回值時(shí),可用傳遞指針、數(shù)組名等方式來實(shí)現(xiàn)。具體方法在以后章節(jié)中介紹。,函數(shù)舉例,【問題5】編程計(jì)算: 。 要求:用函數(shù)實(shí)現(xiàn)求階乘。,流程圖,看源程序(7_5),運(yùn)行程序(7_5),源

溫馨提示

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

評論

0/150

提交評論