版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)主講:?;劬觌娫挘?231236郵件:supernhj@QQ群號:245095908函數(shù)是什么5.1函數(shù)的工作原理5.2函數(shù)和結(jié)構(gòu)化編程5.3編寫函數(shù)5.4五使用函數(shù)封裝代碼調(diào)用函數(shù)5.6將參數(shù)傳遞給函數(shù)5.5函數(shù)的位置5.7內(nèi)聯(lián)函數(shù)5.8上課用的物品—--完成某功能所需的語句等。函數(shù)把物品封裝在特定手提袋中---函數(shù)函數(shù)各手提帶名字不同以區(qū)分---函數(shù)名唯一標(biāo)識函數(shù)。各手提帶中物品不同---函數(shù)體中不同語句使函數(shù)完成特定功能。什么時(shí)候用哪一個(gè)手提袋由主人決定---主函數(shù)調(diào)用特定功能的函數(shù)。主人可以有哪些手提袋可用?列目錄說明---一個(gè)程序都有哪些函數(shù)可以調(diào)用?被調(diào)用函數(shù)原型說明語句。程序中被調(diào)用函數(shù)主人+手提袋+目錄=任務(wù)---函數(shù)原型語句+主函數(shù)+其他自定義函數(shù)=程序。6SubTitle5.1.1函數(shù)的定義定義:是一個(gè)命名的、獨(dú)立的代碼段,執(zhí)行特定任務(wù),并可能給調(diào)用它的程序返回一個(gè)值。說明:
(1)函數(shù)是命名的。函數(shù)名是唯一的,程序其他部分使用該名稱,可執(zhí)行函數(shù)中的語句,稱為“函數(shù)調(diào)用”。
(2)函數(shù)是獨(dú)立的。
(3)函數(shù)執(zhí)行特定的任務(wù)。
(4)函數(shù)可以將一個(gè)值返回給調(diào)用它的程序(return語句)。5.1.2函數(shù)的用法程序清單5.1cube.c7SubTitle僅當(dāng)函數(shù)被程序其他部分調(diào)用后,函數(shù)中的語句才會(huì)被執(zhí)行;調(diào)用時(shí)程序可以給函數(shù)傳遞參數(shù),函數(shù)用這些參數(shù)進(jìn)行運(yùn)算完成任務(wù);函數(shù)中語句執(zhí)行完后,將一個(gè)返回值返回給程序中調(diào)用函數(shù)的地方。main(){callfunc1……callfunc2……callfunc3}func1(){}func2(){}func3(){}函數(shù)原型格式
return_typefunction_name(arg_typename_1,…,arg_typename_n);函數(shù)定義格式
return_typefunction_name(arg_typename_1,…,arg_typename_n)
{
/*statements;*/
}eg.函數(shù)原型語句
doublesquared(doublenumber);
voidprint_report(intreport_number);
intget_menu_choice(void);
eg.函數(shù)定義
doublesquared(doublenumber)
{
return(number*number);
}
voidprint_report(intreport_number)
{
if(report_number==1)
puts(“PrintingReport1”);
else
puts(“NotprintingReport1”);
}10SubTitle通過在程序中使用函數(shù),可進(jìn)行結(jié)構(gòu)化編程。5.3.1結(jié)構(gòu)化編程的優(yōu)點(diǎn)結(jié)構(gòu)化程序更易編寫;結(jié)構(gòu)化程序更易調(diào)試;結(jié)構(gòu)化編程可以節(jié)省時(shí)間。
5.3.2規(guī)劃結(jié)構(gòu)化化程序eg.編寫聯(lián)系地地址的程序序(姓名和和地址列表表)(1)輸入新的姓姓名和地址址(2)修改已有的的條目(3)按姓對條目目進(jìn)行排序序(4)打印郵寄地地址標(biāo)簽從磁盤中讀讀取已有的的地址列表表;提示用戶輸輸入一個(gè)或或多個(gè)條目目;將新數(shù)據(jù)添添加到列表表中;將更新后的的列表存盤盤。從磁盤中讀讀取已有的的地址列表表;修改一個(gè)或或多個(gè)條目目;將更新后的的列表存盤盤。main()EnterEditSortPrintReadModifySave圖5.2以層次方式組織的結(jié)構(gòu)化程序5.3.3從頂向下的的方法C程序員可選選用從頂向向下的方法法,如圖5.2.多數(shù)情況下下,程序的的大多數(shù)實(shí)實(shí)際工作是由位位于樹枝末末梢的函數(shù)數(shù)完成的,位位于“主干干”附近的的函數(shù)主要用用于引導(dǎo)程程序執(zhí)行這些函函數(shù)。main()EnterEditSortPrintReadModifySave圖5.2以層次方式組織的結(jié)構(gòu)化程序函數(shù)頭每個(gè)函數(shù)的的第一行都都是函數(shù)頭頭,函數(shù)頭頭由三部分分組成,每每部分完成成特定的功功能。(參考教材材5.4.1,5.4.2,5.4.3)可以是任何何數(shù)據(jù)類型型,用void表示函數(shù)不不返回任何何值。遵循變量名名規(guī)則要傳遞給函函數(shù)的每個(gè)個(gè)參數(shù)都要要在參數(shù)列列表中包含含對應(yīng)條目目,指定數(shù)數(shù)據(jù)類型和和名稱。定義時(shí),函函數(shù)頭最后后不加分號號參數(shù)列表::可以給函函數(shù)傳遞任任何數(shù)據(jù)類類型。eg.longcube(longx)voidfunc1(intx,floaty,charz)intfunc2(void)注意:形參參VS實(shí)參:(1)形參位于函函數(shù)頭())中,是實(shí)參的占占位符。(2)實(shí)參是調(diào)用用程序傳遞遞給函數(shù)的實(shí)際值。。(3)C語言中,每每次調(diào)用函函數(shù)傳遞的實(shí)參個(gè)數(shù)數(shù)和類型必必須與對應(yīng)形參相同同,但值可可以不同。。(參考教材材5.4.4)程序清單5.2list0502.c函數(shù)體位置:位于于函數(shù)頭后后,{}括起的部分分功能:函數(shù)數(shù)被調(diào)用按按照流程執(zhí)執(zhí)行其中語語句,完成成實(shí)際的工工作后返回到到被調(diào)用之之處并帶回回1或0個(gè)值。結(jié)束:執(zhí)行行到return語句或最外外面的花括括號后結(jié)束束。1、局部變量量在函數(shù)體中中聲明的變變量,成為為“局部變變量”,是是特定函數(shù)數(shù)私有的。。func1(inty){inta,b=10;floatrate;doublecost=12.55;……}(參考教材材5.4.5)a,b,rate,cost,y都是專屬func1的局部變量量。程序清單5.3var.c注意:變量的“作作用域”說明:(1)變量必須““先定義,,后使用””;(2)不同位置定義義變量的“作作用域”不同同;全局變量,局局部變量(3)函數(shù)中的局部部變量獨(dú)立于于程序,使函函數(shù)更加獨(dú)立立。2、函數(shù)的語句句函數(shù)幾乎可以以包含任何語語句,在函數(shù)數(shù)中唯一不能能做的事就是是定義另一個(gè)個(gè)函數(shù)。建議函數(shù)中語語句盡量少。。3、返回值要從函數(shù)返回回一個(gè)值,可可以使用關(guān)鍵鍵字return,并在后面加加上一個(gè)表達(dá)達(dá)式。func1(intvar){intx;returnx;}一個(gè)函數(shù)中有有多條return語句時(shí),只能有一條被被執(zhí)行。程序清單5.4return.c函數(shù)原型形式:函數(shù)原原型和函數(shù)頭頭相同,只是是后面加“;;”。位置:放在程程序中第一個(gè)個(gè)函數(shù)之前。。功能:將有關(guān)關(guān)函數(shù)的信息息告知編譯器器。編譯器知知道有關(guān)函數(shù)數(shù)的返回值類類型、名稱和和參數(shù)后,每每次調(diào)用函數(shù)數(shù)時(shí)檢查這些些信息,確保保傳遞的參數(shù)數(shù)正確,并確確保正確使用用返回值。注意:嚴(yán)格地地講,函數(shù)原原型可以與函函數(shù)頭不完全全相同,只要要確保參數(shù)類類型、數(shù)目和和順序相同即即可,而參數(shù)數(shù)名不必一定定相同。舉例說明(參考教材5.4.6)19SubTitle給函數(shù)傳遞參參數(shù)時(shí),參數(shù)數(shù)的數(shù)目與類類型必須同函函數(shù)頭和函數(shù)數(shù)原型中的形形參匹配,并并且有一定順順序。每個(gè)參數(shù)可以以是任何合法法的表達(dá)式::常量、變量量、數(shù)學(xué)或邏邏輯表達(dá)式,,甚至是另一一個(gè)具有返回回值的參數(shù)。。eg.假設(shè)函數(shù)half()、square()、third()都有返回值,,則可有:x=half(third(square(half(y))));棧是RAM中的特殊區(qū)域域動(dòng)作:壓棧、、出棧規(guī)則:“后進(jìn)進(jìn)先出”5.6調(diào)用函數(shù)調(diào)用方式::函數(shù)名(實(shí)實(shí)參列表)位置:(1)單獨(dú)成句(2)用在表達(dá)式中中說明:(1)任何函數(shù)調(diào)用用可單獨(dú)成句句,但有返回值的函數(shù)返返回值將被丟丟棄;(2)用在表達(dá)式中中的函數(shù)調(diào)用用應(yīng)為有返回值的函數(shù)(非void)。eg.wait(12);printf(“Halfof%dis%d.””,x,half_of(x));y=half_of(x)+half_of(z);if(half_of(x)>10){………}if(do_a_process()!=OKAY){………}5.6.1遞歸調(diào)用一般情況是一一個(gè)函數(shù)調(diào)用用另一個(gè)函數(shù)數(shù),特殊的,,函數(shù)直接或或間接調(diào)用自自身,稱為“遞歸調(diào)用”。注意:遞歸將將使用大量資資源(相當(dāng)于于復(fù)制了多份份函數(shù)),慎慎用!2022/12/6程序清單5.5recurse.c22factorial(4)回歸遞推2factorial(1)4factorial(3)3factorial(2)return1n!=n*(n-1)!遞歸過程的兩兩個(gè)階段(如:求4!):遞推:4!=4×3!→3!=3×2!→2!=2×1!→1!=1×0!→0!=1未知已已知回歸:4!=4×3!=24←3!=3×2!=6←2!=2×1!=2←1!=1×0!=1←0!=1未知已已知23*可以用遞歸解解決的問題應(yīng)應(yīng)滿足以下條條件:1、要解決決的問題題可以被被減階2、要解決決的問題題有邊界24例:遞遞歸的執(zhí)執(zhí)行情況況分析voidprint(intw){inti;if(w!=0){print(w-1);for(i=1;i<=w;++i)printf("%d",w);printf("\n");}}w=3時(shí)的運(yùn)行行結(jié)果::1,2,2,3,3,3,25遞歸調(diào)用用執(zhí)行情情況如下下:main函數(shù)(1)print(w)
w=3;3print(2);(1)w=3topw2print(1);(2)w=2(1)w=3topw1print(0);(3)w=1(2)w=2(1)w=3topw0(4)w=0(3)w=1(2)w=2(1)w=3topw(3)輸出:2,2(2)2(1)3top(4)輸出:1(3)1(2)2(1)3top(2)輸出:3,3,3(1)3top返回(3)1(2)2(1)3top(4)0結(jié)束(1)voidprint(intw){inti;if(w!=0){print(w-1);for(i=1;i<=w;++i)printf("%d",w);printf("\n");}}w==0時(shí)直接返回回漢諾塔問問題:262022/12/62022/12/629SubTitle關(guān)鍵字字:inline格式::inline函數(shù)定定義編譯器器對內(nèi)內(nèi)聯(lián)函函數(shù)的的處理理:復(fù)復(fù)制代代碼到到調(diào)用用函數(shù)數(shù)。eg.inlineinttoInches(intFeet){return(Feet/12);}優(yōu)
溫馨提示
- 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)院液氧儲罐檢測合同
- 安全員A證考試模擬卷包及參考答案詳解
- 安全員A證考試試題(得分題)【考點(diǎn)提分】附答案詳解
- 宜春市社區(qū)工作者考試真題及答案2022
- 社區(qū)護(hù)士考編試題及答案
- 安全員A證考試綜合練習(xí)(培優(yōu)a卷)附答案詳解
- 押題寶典安全員A證考試??寄M試題含答案詳解(完整版)
- 安全員A證考試考試綜合練習(xí)帶答案詳解
- 成人自考醫(yī)學(xué)考試試題及答案解析
- 熱力系統(tǒng)參數(shù)監(jiān)控方案
- 村支書考試試題及答案
- 醫(yī)療綜合樓手術(shù)室、放射科、檢驗(yàn)科二次深化設(shè)計(jì)裝飾工程投標(biāo)方案投標(biāo)文件(技術(shù)方案)
- DBJ50-T-078-2016重慶市城市道路工程施工質(zhì)量驗(yàn)收規(guī)范
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級上學(xué)期期末質(zhì)量檢測道德與法治試題 (含答案)
- 2025年中國船舶集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 辦公樓物業(yè)服務(wù)的品質(zhì)提升策略
- 養(yǎng)殖場土地租賃合同
- JBT 8200-2024 煤礦防爆特殊型電源裝置用鉛酸蓄電池(正式版)
- (正式版)SHT 3078-2024 立式圓筒形料倉工程設(shè)計(jì)規(guī)范
- 計(jì)算機(jī)就業(yè)能力展示
- 設(shè)備維修團(tuán)隊(duì)的協(xié)作與溝通
評論
0/150
提交評論