版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第八章 函數(shù) 課程內(nèi)容安排函數(shù)的概念、分類和組成。函數(shù)的定義、聲明和原型。函數(shù)的調(diào)用和遞歸調(diào)用。內(nèi)聯(lián)函數(shù)的應(yīng)用。函數(shù)的綜合應(yīng)用。函數(shù)的基本概念 簡單的說,函數(shù)就是對復(fù)雜問題的一種“自頂向下,逐步求精”思想的體現(xiàn)。用戶可以將一個大而復(fù)雜的程序分解為若干個相對獨立而且功能單一的小塊程序(函數(shù))進行編寫,并通過在各個函數(shù)之間進行調(diào)用來實現(xiàn)總體的功能 函數(shù)的組成 一般的說,函數(shù)由四部分構(gòu)成:返回類型、函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)名就是函數(shù)的名字,即函數(shù)的標(biāo)識符。既然是標(biāo)識符,就必須遵守標(biāo)識符的命名規(guī)則。同變量的標(biāo)識符相同,函數(shù)的標(biāo)識符也是只能由字母、數(shù)字以及下劃線組成,并且不能以數(shù)字開頭。 聲明函數(shù)
2、 函數(shù)聲明的作用就是告訴調(diào)用者如何使用該函數(shù),即函數(shù)接受什么類型的參數(shù),參數(shù)的個數(shù),以及函數(shù)的返回類型。函數(shù)聲明只是函數(shù)定義的一部分,缺少函數(shù)體。在C+中,聲明函數(shù)的一般形式如下所示:類型說明符 函數(shù)名(參數(shù)列表);其中,類型說明符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。而函數(shù)名即一個符合C+語法要求的標(biāo)識符。 定義函數(shù) 一個函數(shù)的定義由返回類型、函數(shù)名、參數(shù)列表和函數(shù)體組成。前面的三個部分稱為函數(shù)的聲明,或函數(shù)原型。相對函數(shù)體來講,也稱作是函數(shù)頭。函數(shù)體是一個語句塊,由花括號“”和“”包圍起來。例如,下面語句根據(jù)上述格式定義了一個無參函數(shù)hello。void hello()c
3、out”Hello World”;形參和實參 一般來說,C+中函數(shù)的參數(shù)可以分為形式參數(shù)(形參)和實際參數(shù)(實參)兩種。所謂實參,是指函數(shù)定義時的參數(shù)。之所以稱作形參,是因為這些參數(shù)實際并不存在,只是在形式上代表運行時實際出現(xiàn)的參數(shù)。相對應(yīng)的,所謂實參,是指函數(shù)調(diào)用時傳入的參數(shù),也是程序運行時實際存在的參數(shù)。簡單地說,被調(diào)用函數(shù)與主調(diào)用函數(shù)之間的通信可以通過參數(shù)的傳遞來實現(xiàn)。 在C+中實參傳遞給形參時有兩種方式:值傳遞和地址傳遞。其中,值傳遞是指實參傳遞給函數(shù)后,系統(tǒng)構(gòu)建一份實參的副本,其值與實參的值相同。此后函數(shù)將針對這份副本進行操作,對原始的實參沒有任何影響。值傳遞過程中,被調(diào)函數(shù)的形式參
4、數(shù)作為被調(diào)函數(shù)的局部變量處理,即在堆棧中開辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進來的實參的值,從而成為了實參的一個副本。地址傳遞過程中,函數(shù)的形式參數(shù)雖然也作為局部變量在堆棧中開辟了內(nèi)存空間,但是這時存放的是由主調(diào)函數(shù)放進來的實參變量的地址。函數(shù)對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調(diào)函數(shù)中的實參變量。正因為如此,對形參做的任何操作都影響了主調(diào)函數(shù)中的實參變量。 函數(shù)參數(shù)傳遞 在進行函數(shù)的聲明或定義后,在其他程序中就可以對該函數(shù)進行調(diào)用了。根據(jù)根據(jù)參數(shù)傳遞的方式不同,函數(shù)調(diào)用可分為傳值調(diào)用和傳址調(diào)用;根據(jù)函數(shù)是否有返回值,函數(shù)調(diào)用可分為無返回值的調(diào)用和有返回值的調(diào)用。 函數(shù)
5、的調(diào)用 如果一個函數(shù)在其定義中又調(diào)用自身,這個過程叫作遞歸調(diào)用,該函數(shù)則稱為遞歸函數(shù)。遞歸分為直接遞歸和間接遞歸。 在遞歸調(diào)用中,直接遞歸是指函數(shù)直接調(diào)用自身,對于一個函數(shù)func而言 間接遞歸也是遞歸的一種重要形式,其是指A函數(shù)調(diào)用了B函數(shù),而B函數(shù)又調(diào)用A函數(shù) 遞歸 main函數(shù) 讀者知道,每個C+程序都必須要有一個main()函數(shù),main()函數(shù)也稱為主函數(shù),是C+程序中最重要的函數(shù),所有完整可運行的C+程序都必須有一個唯一的main()函數(shù)。 內(nèi)聯(lián)函數(shù) 在C+中,如果在函數(shù)的聲明前加上inline關(guān)鍵字,則稱為內(nèi)聯(lián)函數(shù)。對于內(nèi)聯(lián)函數(shù),編譯器不創(chuàng)建真實的函數(shù),而只是在函數(shù)調(diào)用處展開(即
6、將函數(shù)的代碼直接復(fù)制到調(diào)用處)。這樣,在“調(diào)用”函數(shù)時就不用跳轉(zhuǎn)了,避免了使用真實函數(shù)的代價。例如,對于add函數(shù),如果其聲明為:inline int add ( int a, int b );則在函數(shù)調(diào)用處,例如:int x = add ( 1, 2 );編譯后,實際的代碼是:int x = 1 + 2;小結(jié) 本章詳細講解的內(nèi)容主要包括函數(shù)的定義、聲明和調(diào)用,這是在實際程序中使用較多的。通過函數(shù),可以將實現(xiàn)某種功能的一系列語句組織成一個整體,以后使用時只要使用函數(shù)名,并傳入相應(yīng)的參數(shù)即可。而不必重復(fù)實現(xiàn)該功能。因此,本章還重點講述函數(shù)的參數(shù)傳遞、嵌套調(diào)用和遞歸調(diào)用等。此外,本章還就內(nèi)聯(lián)函數(shù)做
7、了簡要介紹。 習(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包含兩個參數(shù),在調(diào)用時將實參傳遞給形參。讀者需要注意實參分別為k+和+k,進行參數(shù)傳遞后,k的值都將加1。因此,傳遞到函數(shù)fun后,x和y都變?yōu)?,運行函數(shù)后,得到函數(shù)返回值36。因此,該程序的輸出為36【題目104】已知三角形
8、的三邊,求三角形面積,將其編寫成一個函數(shù),在main函數(shù)中調(diào)用該函數(shù)。例如,運行該程序段后輸入三角形的三邊分別為3 4 5,輸出三角形面積如下圖8.29所示?!绢}目105】編寫函數(shù),重復(fù)打印給定字符n次。例如,在主函數(shù)中調(diào)用該函數(shù)后,給出打印字符和次數(shù),該函數(shù)將在屏幕上輸出指定字符。【分析】該試題主要考查字符串參數(shù)在函數(shù)調(diào)用過程中的傳遞。根據(jù)前面章節(jié)的學(xué)習(xí),讀者知道字符的輸出可以通過輸出流cout來實現(xiàn),但更好的辦法是通過putchar函數(shù)來實現(xiàn)。指定輸出字符的次數(shù)后,通過一個循環(huán)語句來實現(xiàn)即可。同時,在主函數(shù)中要指定需打印的字符,也可以用函數(shù)getchar來實現(xiàn)接收。 【題目107】編寫一個
9、遞歸函數(shù),將輸入的整數(shù)按字符串形式正序輸出。例如:輸入12345,輸出:1 2 3 4 5。【題目106】下面程序段的運行結(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】編寫一個遞歸函數(shù),求出:(x/1!)+(x*x*x/3!)+(5個x相乘/5!)+(2n-1)個X相乘/(2*n-1)!)的值,到第n項,n和x的
10、值由鍵盤輸入?!痉治觥吭撛囶}主要考查遞歸函數(shù)的編寫及實現(xiàn)。在該函數(shù)中,只有當(dāng)x為1時其階乘才為0,其他時候為2*n-1的階乘,其次n個x相乘即x的(2n-1)次方,可以通過冪函數(shù)pow來實現(xiàn)。該表達式好要求和,因此使用循環(huán)語句將這(2n-1)個表達式相加。因此,該程序可以編寫兩個函數(shù),一個用于實現(xiàn)遞歸,另一個求出表達式(2n-1)個X相乘/(2*n-1)!)的值,然后再主函數(shù)main中調(diào)用,并通過循環(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個選項中,選項A中遞歸調(diào)用fun(n+1)將導(dǎo)致參數(shù)越來越大,從而無法進行回歸;選項C和選項D都不能執(zhí)行到遞歸,無法進行遞推,都不符合遞歸函數(shù)的定義;只有選項B既能遞推也能回歸,因此選項B是正確的。【題目110】編寫一個函數(shù),用于檢驗用戶輸入的一個字符是大寫字母還是小寫字母或不是26個英文字母?!绢}目111】編寫一個函數(shù),將華氏溫度轉(zhuǎn)換為攝氏溫度,公式為C=(F-32)*5/9;并在主函數(shù)中調(diào)用?!绢}目112】編寫一個函數(shù),利用非遞歸的方法求斐波那契數(shù)列第n項?!绢}目113】編寫一個函數(shù),利用遞歸的方法求斐波那契數(shù)列第n項。【題目114】編寫函數(shù)利用遞歸的方法計算x的n階勒讓德多項式的值。該公式如下:【題目115】設(shè)計兩個求面積的函數(shù): area(); /求圓面積,需傳遞一個參數(shù) area(); /求矩形面積,需傳遞兩個參數(shù)然后自行輸入數(shù)據(jù)進行測試。=1)(n (x)/n P1)-(n-1(x)-Pnx1)-n(21)(n x
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課件獲取網(wǎng)站教學(xué)課件
- 籃球社團教案
- 極地安全課件教學(xué)課件
- 企業(yè)勞動合同管理要點解析
- 二手紡織機械買賣協(xié)議
- 倉儲物流消防安全管理辦法
- 個人與銀行貸款合同范本
- 人力資源專員勞務(wù)合同電子版
- 產(chǎn)品檢測認證委托協(xié)議
- 二手潤滑油轉(zhuǎn)讓協(xié)議
- GB/T 21633-2020摻混肥料(BB肥)
- GB/T 21435-2008相變加熱爐
- 河南省洛陽市《綜合能力測試》事業(yè)單位國考真題
- 智慧消防整體解決方案消防大數(shù)據(jù)一體化管理平臺解課件
- 《推窗風(fēng)來》中考語文作文優(yōu)秀6篇
- 腹部血管疾病的超聲診斷課件整理
- 《客源國概論》期末考試題
- 公司吸煙管理規(guī)定范文
- 《江蘇省建筑業(yè)10項新技術(shù)(2021)》
- 建立高效護理團隊課件
- DBJ51 014-2021 四川省建筑地基基礎(chǔ)檢測技術(shù)規(guī)程
評論
0/150
提交評論