函數(shù)復(fù)習(xí)省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件_第1頁
函數(shù)復(fù)習(xí)省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件_第2頁
函數(shù)復(fù)習(xí)省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件_第3頁
函數(shù)復(fù)習(xí)省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件_第4頁
函數(shù)復(fù)習(xí)省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

函數(shù)復(fù)習(xí)第1頁完整函數(shù)申明與定義語法://函數(shù)原型返回值類型函數(shù)名(參數(shù)列表);//函數(shù)定義語法:返回值類型函數(shù)名(參數(shù)列表)//函數(shù)頭部

{

申明變量

語句

}函數(shù)體第2頁把程序控制權(quán)從函數(shù)返回到主調(diào)函數(shù)函數(shù)調(diào)用點(diǎn)有三種方法用于帶返回值函數(shù)設(shè)計(jì)

return表示式;

把表示式返回給調(diào)用者,并交回控制權(quán),用于不帶返回值函數(shù)設(shè)計(jì)

return;

函數(shù)結(jié)束右花括號(hào):}

碰到上述兩項(xiàng)中任何一項(xiàng),函數(shù)執(zhí)行結(jié)束,交回控制權(quán)第3頁程序控制權(quán)問題(一)以下例帶返回值函數(shù)控制過程#include"stdio.h"intsquare(intx);//自定義函數(shù)原型申明

main(){intx;for(x=1;x<=10;x++)printf("%d",square(x));printf("\n");return0;}

//函數(shù)定義intsquare(inty){intr;r=y*y;returnr;}調(diào)用函數(shù),控制轉(zhuǎn)移,傳遞參數(shù)值,y=x函數(shù)執(zhí)行完,返回主調(diào)函數(shù),交回控制權(quán),如有返回值,則返回結(jié)果第4頁帶返回值函數(shù)設(shè)計(jì)是最常見函數(shù)形式,普通用來得到一個(gè)結(jié)果如:

intsquare(intx);//原型intsquare(intx)//定義

{

intr;

r=x*x;returnr;

}其中,函數(shù)返回值是由return語句實(shí)現(xiàn),該語句作用是,結(jié)束程序并返回結(jié)果(假如后面跟了表示式),交回控制權(quán)第5頁帶返回值函數(shù)設(shè)計(jì)例5.2:設(shè)計(jì)一max函數(shù),計(jì)算返回三個(gè)整數(shù)中最大值,三個(gè)整數(shù)用scanf函數(shù)輸入1.分析

三個(gè)數(shù)求最大值,能夠兩兩比較,第一個(gè)和第二個(gè)比較求得最大值,最大值載和第三個(gè)數(shù)比較,求得最大值即為三個(gè)數(shù)最大值,其中包含兩次兩個(gè)數(shù)比較求最大值問題,所以能夠?qū)蓚€(gè)數(shù)求最大值設(shè)計(jì)為函數(shù)實(shí)現(xiàn),重復(fù)調(diào)用第6頁帶返回值函數(shù)設(shè)計(jì)例5.3:求6~100中全部素?cái)?shù),要求設(shè)計(jì)一個(gè)判斷是否是素?cái)?shù)函數(shù)例5.4:求1~1000中全部水仙花數(shù),要求設(shè)計(jì)一個(gè)判斷是否是水仙花數(shù)函數(shù)。153=13+53+33,153就是水仙花數(shù)第7頁不帶返回值函數(shù)設(shè)計(jì)例5.5要求設(shè)計(jì)一個(gè)能夠輸出n個(gè)連續(xù)星號(hào)函數(shù)第8頁以下例不帶返回值函數(shù)控制過程程序控制權(quán)問題(二)

第9頁不帶返回值函數(shù)設(shè)計(jì)普通用來描述做一件事情,無返回結(jié)果

如:

voidstar(intn);//原型申明

voidstar(intn)//定義{ inti; for(i=1;i<=n;i++) printf("*");}

用函數(shù)最終右花括號(hào)結(jié)束程序,并交回控制器第10頁不帶返回值函數(shù)設(shè)計(jì)例:屏幕上輸出以下列圖形要求設(shè)計(jì)一個(gè)能夠輸出n個(gè)連續(xù)星號(hào)函數(shù)設(shè)計(jì)一個(gè)能夠輸出n個(gè)連續(xù)空格函數(shù)第11頁總結(jié):自定義函數(shù)基本過程函數(shù)原型申明定義函數(shù)(實(shí)現(xiàn)函數(shù)功效,函數(shù)首部中參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參)調(diào)用函數(shù)(調(diào)用中出現(xiàn)參數(shù)叫做實(shí)際參數(shù),省略類型)調(diào)用函數(shù)三個(gè)步驟:參數(shù)類型匹配為形參開辟空間實(shí)參向形參傳值:自左向右、按位置傳值、賦值操作:形參=實(shí)參;第12頁怎樣確定函數(shù)需不需要返回值帶返回值函數(shù)通常表示在完成某個(gè)功效同時(shí),要得到一個(gè)詳細(xì)結(jié)果,其作用等價(jià)于一個(gè)數(shù)據(jù)函數(shù)調(diào)用通慣用在賦值語句或者看成其它函數(shù)參數(shù),如sqrt函數(shù),a=sqrt(4);a=sin(sqrt(4));

不帶返回值函數(shù)通常表示只需要完成某個(gè)事情(功效)即可,不需要得到任何反饋信息函數(shù)調(diào)用通常單獨(dú)使用調(diào)用語句,如printf函數(shù)第13頁5.5函數(shù)參數(shù)形式參數(shù),簡(jiǎn)稱形參

是定義函數(shù)時(shí),在參數(shù)列表中給出變量,該參數(shù)名稱能夠使用任何有效標(biāo)識(shí)符形式參數(shù)作用,定義函數(shù)從外界取得必要信息信息類型、數(shù)量、次序形參有兩種傳遞參數(shù)方式:值傳遞(傳值)地址傳遞(傳地址,包括指針,到下學(xué)期介紹)實(shí)際參數(shù),簡(jiǎn)稱實(shí)參

是函數(shù)調(diào)用時(shí),依據(jù)函數(shù)定義所提供與形參對(duì)應(yīng)實(shí)際值實(shí)際參數(shù)作用,提供調(diào)用函數(shù)所需要實(shí)際信息值第14頁怎樣設(shè)計(jì)參數(shù)函數(shù)定義時(shí),怎樣確定參數(shù)?通常情況下,把處理問題中碰到不確定信息,或者需要外界提供信息,能夠設(shè)置為形式參數(shù),由調(diào)用者在調(diào)用函數(shù)時(shí)詳細(xì)給出第15頁如上例中問題例:屏幕上輸出以下列圖形要求設(shè)計(jì)一個(gè)能夠輸出n個(gè)連續(xù)星號(hào)函數(shù)設(shè)計(jì)一個(gè)能夠輸出n個(gè)連續(xù)空格函數(shù)第16頁5.6數(shù)組作為函數(shù)參數(shù)函數(shù)參數(shù)傳遞方式值傳遞(單向,由實(shí)參傳遞到形參)地址傳遞(雙向,相互傳遞)數(shù)組作為參數(shù)是以地址方式傳遞語法:申明原型intswap(int[]);定義intswap(inta[])第17頁值傳遞方式:#include"stdio.h"voidswap(inta,intb);main(){intx=2,y=4;printf("beforeswap:x=%d,y=%d\n",x,y);swap(x,y);printf("afterswap:x=%d,y=%d\n",x,y);}voidswap(inta,intb){ intt;t=a;a=b;b=t;}第18頁地址傳遞#include"stdio.h"voidswap(inta[]);main(){intx[2]={2,4};printf("beforeswap:x=%d,y=%d\n",x[0],x[1]);swap(x);printf("beforeswap:x=%d,y=%d\n",x[0],x[1]);}voidswap(inta[]){ intt;t=a[0];a[0]=a[1];a[1]=t;}第19頁5.7變量作用域局部變量在函數(shù)內(nèi)部定義變量,包含main函數(shù)局部變量只在定義他函數(shù)內(nèi)部有效,不能被其它函數(shù)使用,函數(shù)執(zhí)行時(shí)候暫時(shí)產(chǎn)生,函數(shù)執(zhí)行完,自動(dòng)消失,存放數(shù)據(jù)也自動(dòng)消失,其生命周期是函數(shù)運(yùn)行整個(gè)過程全局變量在函數(shù)外部定義變量,普通放在#include之后全局變量能被全部函數(shù)使用,含有共享性,能夠用于函數(shù)之間信息傳遞,在程序運(yùn)行時(shí)產(chǎn)生,程序結(jié)束運(yùn)行時(shí)消失,保持?jǐn)?shù)據(jù)在整個(gè)程序運(yùn)行中全程有效,其生命周期是程序運(yùn)行整個(gè)過程第20頁局部變量、全局變量簡(jiǎn)單使用方法#include”stdio.h”intfun1(int);main(){intm,j=1;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=2;r=y+k;returnr;}#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr;r=y+k;returnr;}第21頁形參和實(shí)參同名情況

形參可當(dāng)局部變量#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=5;m=fun1(j);printf(“%d\n”,m)}intfun1(intj){intr;r=j+k;returnr;}#include”stdio.h”intfun1(int);main(){intm,j=1;m=fun1(j);

printf(“%d\n”,m)}intfun1(inty){intr,k=2;r=y+k;returnr;}第22頁全局變量與局部變量同名情況#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr;r=y+k;returnr;}#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=10;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=5;r=y+k;returnr;}第23頁利用全局變量共享或者傳遞數(shù)據(jù)#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=10;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=5;r=y+k;returnr;}#include”stdio.h”viodfun1(int);intj=1,k=2,m;main(){intj=10;fun1(j);printf(“%d\n”,m)}voidfun1(inty){intr,k=5;m=y+k;}第24頁靜態(tài)變量一個(gè)特殊局部變量語法:staticinti;與普通局部變量區(qū)分:普通局部變量在程序運(yùn)行結(jié)束后消失,靜態(tài)變量則存在于整個(gè)程序運(yùn)行過程,生命周期同全局變量與全局變量區(qū)分:全局變量能被全部函數(shù)訪問,而靜態(tài)變量只能在定義他函數(shù)中使用,作用域有限第25頁普通局部變量、靜態(tài)變量、全局變量區(qū)分#include”stdio.h”intfun1(void);main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){

inti=0;

i++;returni;}#include”stdio.h”intfun1(void);main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){

statici=0;i++;returni;}#include”stdio.h”intfun1(void);inti=0;main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){i++;returni;}普通局部變量靜態(tài)變量全局變量第26頁練習(xí)題19/oj/sproblem.php?cid=1691&pid=119/oj/sproblem.php?cid=1691&pid=219/oj/sproblem.php?cid=1691&pid=3第27頁5.8遞歸函數(shù)遞歸概念

函數(shù)直接或者間接調(diào)用自己本身,叫做遞歸遞歸是對(duì)本身重復(fù)調(diào)用,含有循環(huán)類似功效比如n!定義

n!=1(n=0或者n=1)

n!=n*(n-1)!(n>1)第28頁遞歸程序舉例

#include”stdio.h”intfact(int);main(){intj=3;m=fact(j);pr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論