




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 函數(shù) 課程內(nèi)容安排函數(shù)的概念、分類和組成。函數(shù)的定義、聲明和原型。函數(shù)的調(diào)用和遞歸調(diào)用。內(nèi)聯(lián)函數(shù)的應(yīng)用。函數(shù)的綜合應(yīng)用。函數(shù)的基本概念 簡(jiǎn)單的說(shuō),函數(shù)就是對(duì)復(fù)雜問(wèn)題的一種“自頂向下,逐步求精”思想的體現(xiàn)。用戶可以將一個(gè)大而復(fù)雜的程序分解為若干個(gè)相對(duì)獨(dú)立而且功能單一的小塊程序(函數(shù))進(jìn)行編寫,并通過(guò)在各個(gè)函數(shù)之間進(jìn)行調(diào)用來(lái)實(shí)現(xiàn)總體的功能 函數(shù)的組成 一般的說(shuō),函數(shù)由四部分構(gòu)成:返回類型、函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)名就是函數(shù)的名字,即函數(shù)的標(biāo)識(shí)符。既然是標(biāo)識(shí)符,就必須遵守標(biāo)識(shí)符的命名規(guī)則。同變量的標(biāo)識(shí)符相同,函數(shù)的標(biāo)識(shí)符也是只能由字母、數(shù)字以及下劃線組成,并且不能以數(shù)字開(kāi)頭。 聲明函數(shù)
2、 函數(shù)聲明的作用就是告訴調(diào)用者如何使用該函數(shù),即函數(shù)接受什么類型的參數(shù),參數(shù)的個(gè)數(shù),以及函數(shù)的返回類型。函數(shù)聲明只是函數(shù)定義的一部分,缺少函數(shù)體。在C+中,聲明函數(shù)的一般形式如下所示:類型說(shuō)明符 函數(shù)名(參數(shù)列表);其中,類型說(shuō)明符指明了本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。而函數(shù)名即一個(gè)符合C+語(yǔ)法要求的標(biāo)識(shí)符。 定義函數(shù) 一個(gè)函數(shù)的定義由返回類型、函數(shù)名、參數(shù)列表和函數(shù)體組成。前面的三個(gè)部分稱為函數(shù)的聲明,或函數(shù)原型。相對(duì)函數(shù)體來(lái)講,也稱作是函數(shù)頭。函數(shù)體是一個(gè)語(yǔ)句塊,由花括號(hào)“”和“”包圍起來(lái)。例如,下面語(yǔ)句根據(jù)上述格式定義了一個(gè)無(wú)參函數(shù)hello。void hello()c
3、out”Hello World”;形參和實(shí)參 一般來(lái)說(shuō),C+中函數(shù)的參數(shù)可以分為形式參數(shù)(形參)和實(shí)際參數(shù)(實(shí)參)兩種。所謂實(shí)參,是指函數(shù)定義時(shí)的參數(shù)。之所以稱作形參,是因?yàn)檫@些參數(shù)實(shí)際并不存在,只是在形式上代表運(yùn)行時(shí)實(shí)際出現(xiàn)的參數(shù)。相對(duì)應(yīng)的,所謂實(shí)參,是指函數(shù)調(diào)用時(shí)傳入的參數(shù),也是程序運(yùn)行時(shí)實(shí)際存在的參數(shù)。簡(jiǎn)單地說(shuō),被調(diào)用函數(shù)與主調(diào)用函數(shù)之間的通信可以通過(guò)參數(shù)的傳遞來(lái)實(shí)現(xiàn)。 在C+中實(shí)參傳遞給形參時(shí)有兩種方式:值傳遞和地址傳遞。其中,值傳遞是指實(shí)參傳遞給函數(shù)后,系統(tǒng)構(gòu)建一份實(shí)參的副本,其值與實(shí)參的值相同。此后函數(shù)將針對(duì)這份副本進(jìn)行操作,對(duì)原始的實(shí)參沒(méi)有任何影響。值傳遞過(guò)程中,被調(diào)函數(shù)的形式參
4、數(shù)作為被調(diào)函數(shù)的局部變量處理,即在堆棧中開(kāi)辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進(jìn)來(lái)的實(shí)參的值,從而成為了實(shí)參的一個(gè)副本。地址傳遞過(guò)程中,函數(shù)的形式參數(shù)雖然也作為局部變量在堆棧中開(kāi)辟了內(nèi)存空間,但是這時(shí)存放的是由主調(diào)函數(shù)放進(jìn)來(lái)的實(shí)參變量的地址。函數(shù)對(duì)形參的任何操作都被處理成間接尋址,即通過(guò)堆棧中存放的地址訪問(wèn)主調(diào)函數(shù)中的實(shí)參變量。正因?yàn)槿绱?,?duì)形參做的任何操作都影響了主調(diào)函數(shù)中的實(shí)參變量。 函數(shù)參數(shù)傳遞 在進(jìn)行函數(shù)的聲明或定義后,在其他程序中就可以對(duì)該函數(shù)進(jìn)行調(diào)用了。根據(jù)根據(jù)參數(shù)傳遞的方式不同,函數(shù)調(diào)用可分為傳值調(diào)用和傳址調(diào)用;根據(jù)函數(shù)是否有返回值,函數(shù)調(diào)用可分為無(wú)返回值的調(diào)用和有返回值的調(diào)用。 函數(shù)
5、的調(diào)用 如果一個(gè)函數(shù)在其定義中又調(diào)用自身,這個(gè)過(guò)程叫作遞歸調(diào)用,該函數(shù)則稱為遞歸函數(shù)。遞歸分為直接遞歸和間接遞歸。 在遞歸調(diào)用中,直接遞歸是指函數(shù)直接調(diào)用自身,對(duì)于一個(gè)函數(shù)func而言 間接遞歸也是遞歸的一種重要形式,其是指A函數(shù)調(diào)用了B函數(shù),而B(niǎo)函數(shù)又調(diào)用A函數(shù) 遞歸 main函數(shù) 讀者知道,每個(gè)C+程序都必須要有一個(gè)main()函數(shù),main()函數(shù)也稱為主函數(shù),是C+程序中最重要的函數(shù),所有完整可運(yùn)行的C+程序都必須有一個(gè)唯一的main()函數(shù)。 內(nèi)聯(lián)函數(shù) 在C+中,如果在函數(shù)的聲明前加上inline關(guān)鍵字,則稱為內(nèi)聯(lián)函數(shù)。對(duì)于內(nèi)聯(lián)函數(shù),編譯器不創(chuàng)建真實(shí)的函數(shù),而只是在函數(shù)調(diào)用處展開(kāi)(即
6、將函數(shù)的代碼直接復(fù)制到調(diào)用處)。這樣,在“調(diào)用”函數(shù)時(shí)就不用跳轉(zhuǎn)了,避免了使用真實(shí)函數(shù)的代價(jià)。例如,對(duì)于add函數(shù),如果其聲明為:inline int add ( int a, int b );則在函數(shù)調(diào)用處,例如:int x = add ( 1, 2 );編譯后,實(shí)際的代碼是:int x = 1 + 2;小結(jié) 本章詳細(xì)講解的內(nèi)容主要包括函數(shù)的定義、聲明和調(diào)用,這是在實(shí)際程序中使用較多的。通過(guò)函數(shù),可以將實(shí)現(xiàn)某種功能的一系列語(yǔ)句組織成一個(gè)整體,以后使用時(shí)只要使用函數(shù)名,并傳入相應(yīng)的參數(shù)即可。而不必重復(fù)實(shí)現(xiàn)該功能。因此,本章還重點(diǎn)講述函數(shù)的參數(shù)傳遞、嵌套調(diào)用和遞歸調(diào)用等。此外,本章還就內(nèi)聯(lián)函數(shù)做
7、了簡(jiǎn)要介紹。 習(xí)題 【題目103】下列程序的輸出結(jié)果是多少?#include using namespace std;int fun(int x,int y) return x*y;int main() int k=5; coutfun(k+, +k)endl; system(“pause”); return 0;【分析】該試題主要考查函數(shù)的調(diào)用。上述程序中的函數(shù)fun包含兩個(gè)參數(shù),在調(diào)用時(shí)將實(shí)參傳遞給形參。讀者需要注意實(shí)參分別為k+和+k,進(jìn)行參數(shù)傳遞后,k的值都將加1。因此,傳遞到函數(shù)fun后,x和y都變?yōu)?,運(yùn)行函數(shù)后,得到函數(shù)返回值36。因此,該程序的輸出為36【題目104】已知三角形
8、的三邊,求三角形面積,將其編寫成一個(gè)函數(shù),在main函數(shù)中調(diào)用該函數(shù)。例如,運(yùn)行該程序段后輸入三角形的三邊分別為3 4 5,輸出三角形面積如下圖8.29所示?!绢}目105】編寫函數(shù),重復(fù)打印給定字符n次。例如,在主函數(shù)中調(diào)用該函數(shù)后,給出打印字符和次數(shù),該函數(shù)將在屏幕上輸出指定字符?!痉治觥吭撛囶}主要考查字符串參數(shù)在函數(shù)調(diào)用過(guò)程中的傳遞。根據(jù)前面章節(jié)的學(xué)習(xí),讀者知道字符的輸出可以通過(guò)輸出流cout來(lái)實(shí)現(xiàn),但更好的辦法是通過(guò)putchar函數(shù)來(lái)實(shí)現(xiàn)。指定輸出字符的次數(shù)后,通過(guò)一個(gè)循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)即可。同時(shí),在主函數(shù)中要指定需打印的字符,也可以用函數(shù)getchar來(lái)實(shí)現(xiàn)接收。 【題目107】編寫一個(gè)
9、遞歸函數(shù),將輸入的整數(shù)按字符串形式正序輸出。例如:輸入12345,輸出:1 2 3 4 5。【題目106】下面程序段的運(yùn)行結(jié)果是多少?#include using namespace std;int func(int x) int p;if (x=0 | x=1) return (3);p=x- func(x-2);return p;int main( ) coutfunc(9); system(“pause”); return 0; 【題目108】編寫一個(gè)遞歸函數(shù),求出:(x/1!)+(x*x*x/3!)+(5個(gè)x相乘/5!)+(2n-1)個(gè)X相乘/(2*n-1)!)的值,到第n項(xiàng),n和x的
10、值由鍵盤輸入?!痉治觥吭撛囶}主要考查遞歸函數(shù)的編寫及實(shí)現(xiàn)。在該函數(shù)中,只有當(dāng)x為1時(shí)其階乘才為0,其他時(shí)候?yàn)?*n-1的階乘,其次n個(gè)x相乘即x的(2n-1)次方,可以通過(guò)冪函數(shù)pow來(lái)實(shí)現(xiàn)。該表達(dá)式好要求和,因此使用循環(huán)語(yǔ)句將這(2n-1)個(gè)表達(dá)式相加。因此,該程序可以編寫兩個(gè)函數(shù),一個(gè)用于實(shí)現(xiàn)遞歸,另一個(gè)求出表達(dá)式(2n-1)個(gè)X相乘/(2*n-1)!)的值,然后再主函數(shù)main中調(diào)用,并通過(guò)循環(huán)求出最終值。【題目109】下列是正確的遞歸函數(shù)的是?Aint fun(int n)Bint fun(int n) if (n1) return 1; if (abs(n)1) return 1;
11、if (n1) return 1; else return n*fun(n*2); else return n*fun(n-1); 【分析】該試題主要考查遞歸函數(shù)的定義。在上述4個(gè)選項(xiàng)中,選項(xiàng)A中遞歸調(diào)用fun(n+1)將導(dǎo)致參數(shù)越來(lái)越大,從而無(wú)法進(jìn)行回歸;選項(xiàng)C和選項(xiàng)D都不能執(zhí)行到遞歸,無(wú)法進(jìn)行遞推,都不符合遞歸函數(shù)的定義;只有選項(xiàng)B既能遞推也能回歸,因此選項(xiàng)B是正確的。【題目110】編寫一個(gè)函數(shù),用于檢驗(yàn)用戶輸入的一個(gè)字符是大寫字母還是小寫字母或不是26個(gè)英文字母?!绢}目111】編寫一個(gè)函數(shù),將華氏溫度轉(zhuǎn)換為攝氏溫度,公式為C=(F-32)*5/9;并在主函數(shù)中調(diào)用?!绢}目112】編寫一個(gè)函數(shù),利用非遞歸的方法求斐波那契數(shù)列第n項(xiàng)?!绢}目113】編寫一個(gè)函數(shù),利用遞歸的方法求斐波那契數(shù)列第n項(xiàng)?!绢}目114】編寫函數(shù)利用遞歸的方法計(jì)算x的n階勒讓德多項(xiàng)式的值。該公式如下:【題目115】設(shè)計(jì)兩個(gè)求面積的函數(shù): area(); /求圓面積,需傳遞一個(gè)參數(shù) area(); /求矩形面積,需傳遞兩個(gè)參數(shù)然后自行輸入數(shù)據(jù)進(jìn)行測(cè)試。=1)(n (x)/n P1)-(n-1(x)-Pnx1)-n(21)(n x
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 榆林能源科技職業(yè)學(xué)院《播音表達(dá)訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 洛陽(yáng)商業(yè)職業(yè)學(xué)院《基本統(tǒng)計(jì)分析軟件應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島遠(yuǎn)洋船員職業(yè)學(xué)院《建筑工程施工技術(shù)與組織》2023-2024學(xué)年第二學(xué)期期末試卷
- 中華女子學(xué)院《二維動(dòng)畫設(shè)計(jì)與制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 無(wú)錫太湖學(xué)院《土木工程測(cè)量》2023-2024學(xué)年第二學(xué)期期末試卷
- 民辦合肥財(cái)經(jīng)職業(yè)學(xué)院《橡膠工藝原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 紅河學(xué)院《建筑結(jié)構(gòu)抗震設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 玉溪職業(yè)技術(shù)學(xué)院《前端框架應(yīng)用開(kāi)發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州鐵路職業(yè)技術(shù)學(xué)院《工程識(shí)圖與制圖》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧地質(zhì)工程職業(yè)學(xué)院《民族文化專題實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 高大模板支架坍塌事故案例及控制要點(diǎn)
- 婚內(nèi)財(cái)產(chǎn)債務(wù)協(xié)議書(通用)
- 部編版四年級(jí)下冊(cè)道德與法治 第4課 買東西的學(xué)問(wèn)(第2課時(shí)) 教學(xué)課件
- 慢性活動(dòng)性EB病毒課件
- 葡萄胎全面版課件
- 《冷沖壓工藝與模具設(shè)計(jì)》完整版ppt課件全套教程
- 業(yè)務(wù)招待費(fèi)明細(xì)單
- 高效液相色譜法分析(三聚氰胺)原始記錄1
- 典雅中國(guó)風(fēng)詩(shī)詞大會(huì)古風(fēng)PPT模板
- Part 7 Formal and Informal Styles課件
- 文化差異及跨文化交際試題集
評(píng)論
0/150
提交評(píng)論