函數(shù)的定義聲明調(diào)用PPT課件_第1頁
函數(shù)的定義聲明調(diào)用PPT課件_第2頁
函數(shù)的定義聲明調(diào)用PPT課件_第3頁
函數(shù)的定義聲明調(diào)用PPT課件_第4頁
函數(shù)的定義聲明調(diào)用PPT課件_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、授課要點(diǎn) 函數(shù)的函數(shù)的定義定義、聲明聲明、調(diào)用調(diào)用、返回返回值值 無參無返回值無參無返回值的函數(shù)的函數(shù) 無參有返回值無參有返回值的函數(shù)的函數(shù) 有參無返回值有參無返回值的函數(shù)的函數(shù) 有參有返回值有參有返回值的函數(shù)的函數(shù)第1頁/共47頁#include #include void main() /主函數(shù) int iNo,b;printf(input a number:n); /輸出函數(shù)scanf(%d,&iNo); /輸入函數(shù)b=sqrt(iNo); /求平方根函數(shù)printf(%d,b); /輸出函數(shù)初識(shí)函數(shù)1第2頁/共47頁/*從鍵盤輸入3個(gè)數(shù),求和并輸出。*/#include int

2、 myAdd(int x,int y,int z) int s;s=x+y+z; return s;void main() /主函數(shù) int iNo1,iNo2,iNo3,sum;printf(input 3 numbers:n);/輸出函數(shù)scanf(%d%d%d,&iNo1,&iNo2,&iNo3); /輸入函數(shù)sum=myAdd(iNo1,iNo2,iNo3); /用戶自定義函數(shù)printf(sum=%d,sum); /輸出函數(shù)初識(shí)函數(shù)2第3頁/共47頁問題:?jiǎn)栴}:大規(guī)模的程序大規(guī)模的程序?qū)嶋H應(yīng)用程序中需要多次實(shí)現(xiàn)某一功實(shí)際應(yīng)用程序中需要多次實(shí)現(xiàn)某一功能能用循環(huán)實(shí)

3、現(xiàn)?用循環(huán)實(shí)現(xiàn)?所有代碼全寫在所有代碼全寫在main()中?中?第4頁/共47頁什么是函數(shù)什么是函數(shù)u函數(shù)是函數(shù)是一段一段完成特定功能完成特定功能的的程序程序 換句話說,換句話說,函數(shù)函數(shù)就就是是能夠完成能夠完成一定一定功能功能的的語句的集合語句的集合,是程序編譯運(yùn),是程序編譯運(yùn)行的基本單位。行的基本單位。 前面一直在用各種各樣的函數(shù),如前面一直在用各種各樣的函數(shù),如printf()printf()、scanf() scanf() 等等。等等。u將程序中將程序中反復(fù)使用的程序反復(fù)使用的程序定義為函數(shù)定義為函數(shù)的形式的形式第5頁/共47頁函數(shù)的分類函數(shù)的分類從用戶角度從用戶角度標(biāo)準(zhǔn)函數(shù)(庫函數(shù))

4、:由系統(tǒng)提標(biāo)準(zhǔn)函數(shù)(庫函數(shù)):由系統(tǒng)提供供用戶自定義函數(shù)用戶自定義函數(shù)從函數(shù)形式從函數(shù)形式無參函數(shù)無參函數(shù)有參函數(shù)有參函數(shù)無參無返回值無參無返回值無參有返回值無參有返回值有參無返回值有參無返回值有參有返回值有參有返回值第6頁/共47頁C C語言要求,在程序中用到的所有語言要求,在程序中用到的所有函數(shù),必須函數(shù),必須“先定義,后使用先定義,后使用”指定函數(shù)指定函數(shù)名字名字、函數(shù)、函數(shù)返回值類型返回值類型、函數(shù)函數(shù)參數(shù)的名字與類型、參數(shù)的名字與類型、函數(shù)實(shí)現(xiàn)函數(shù)實(shí)現(xiàn)的的功能功能,將這些信息通知編譯系統(tǒng)。,將這些信息通知編譯系統(tǒng)。第7頁/共47頁對(duì)于庫函數(shù),程序設(shè)計(jì)者只需用對(duì)于庫函數(shù),程序設(shè)計(jì)者只需

5、用#include指令把有關(guān)的頭文件包指令把有關(guān)的頭文件包含到本文件模塊中即可含到本文件模塊中即可程序設(shè)計(jì)者需要在程序中自己定程序設(shè)計(jì)者需要在程序中自己定義想用的而庫函數(shù)并沒有提供的義想用的而庫函數(shù)并沒有提供的函數(shù)函數(shù)第8頁/共47頁u函數(shù)的定義函數(shù)的定義函數(shù)定義的通用形式為:函數(shù)定義的通用形式為: 返回值類型返回值類型 函數(shù)名函數(shù)名 (參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 參數(shù)參數(shù)1 , 參數(shù)數(shù)據(jù)類型參數(shù)數(shù)據(jù)類型 參數(shù)參數(shù)2, ) 函數(shù)首部函數(shù)首部函數(shù)體函數(shù)體第9頁/共47頁函數(shù)定義示例函數(shù)定義示例(1)(1)一、無參數(shù)無返回值的函數(shù)一、無參數(shù)無返回值的函數(shù)如:定義printStar函數(shù),用以在屏幕上輸

6、出5個(gè)*符號(hào)。void printStar( ) int star; for(star=1; star=5; star+) printf(*); printf(n) ;函數(shù)無返回值時(shí)使用的數(shù)據(jù)類型函數(shù)無返回值時(shí)使用的數(shù)據(jù)類型第10頁/共47頁u函數(shù)的調(diào)用函數(shù)的調(diào)用(有參函數(shù)有參函數(shù))無參無返回值函數(shù)的調(diào)用形式:無參無返回值函數(shù)的調(diào)用形式:函數(shù)名函數(shù)名( );( );第11頁/共47頁無參數(shù)無返回值的函數(shù)的調(diào)用無參數(shù)無返回值的函數(shù)的調(diào)用#include void printStar( ); void main( ) printStar( ); /函數(shù)調(diào)用函數(shù)調(diào)用void printStar( )

7、 /函數(shù)定義函數(shù)定義 int star; for(star=1; star=5; star+) printf(*); printf(n) ;第12頁/共47頁u自定義函數(shù)的聲明自定義函數(shù)的聲明在程序的開頭加上對(duì)應(yīng)函數(shù)的聲明在程序的開頭加上對(duì)應(yīng)函數(shù)的聲明函數(shù)聲明的形式:函數(shù)聲明的形式: 返回值類型返回值類型 函數(shù)名稱函數(shù)名稱(參數(shù)類型參數(shù)類型 參數(shù)參數(shù)1, ) ; 其中前面的與函數(shù)定義時(shí)的首部完全一樣,其中前面的與函數(shù)定義時(shí)的首部完全一樣,但末尾必須加但末尾必須加“;”。如對(duì)如對(duì)printStar函數(shù)的聲明為:函數(shù)的聲明為: void printStar( );第13頁/共47頁無參數(shù)無返回值的

8、函數(shù)的示例無參數(shù)無返回值的函數(shù)的示例#include void printStar( ); /函數(shù)聲明函數(shù)聲明void main( ) printStar( ); /函數(shù)調(diào)用函數(shù)調(diào)用void printStar( ) /函數(shù)定義函數(shù)定義 int star; for(star=1; star=5; star+) printf(*); printf(n) ;第14頁/共47頁授課要點(diǎn) 函數(shù)的定義、聲明、調(diào)用函數(shù)的定義、聲明、調(diào)用 無參無返回值的函數(shù)無參無返回值的函數(shù) 無參有返回值的函數(shù)無參有返回值的函數(shù) 有參無返回值的函數(shù)有參無返回值的函數(shù) 有參有返回值的函數(shù)有參有返回值的函數(shù)第15頁/共47頁

9、問題問題: : 過年回家,車票難買,到處托人。假如過年回家,車票難買,到處托人。假如你先把車票你先把車票錢錢給幫你買車票的朋友,給幫你買車票的朋友, 那么那么返回返回給你的應(yīng)該是一張給你的應(yīng)該是一張車票車票(當(dāng)然當(dāng)然是順利的情況是順利的情況)。 同理,在同理,在C C語言中,語言中,函數(shù)的調(diào)用函數(shù)的調(diào)用有時(shí)候有時(shí)候也是有也是有返回值返回值的,那么如何理解的,那么如何理解? ?第16頁/共47頁分析分析 對(duì)應(yīng)到函數(shù)上,你的朋友就是對(duì)應(yīng)到函數(shù)上,你的朋友就是函函數(shù)數(shù),車票就是函數(shù)的,車票就是函數(shù)的返回值返回值,而,而你就是調(diào)用函數(shù)的你就是調(diào)用函數(shù)的主程序主程序。第17頁/共47頁u函數(shù)的返回值函數(shù)

10、的返回值 函數(shù)的返回值函數(shù)的返回值 返回語句返回語句 形式:形式: return(表達(dá)式表達(dá)式); 或或 return 表達(dá)式表達(dá)式; 或或 return; 功功能:使程序控制從被調(diào)用函數(shù)返回到能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時(shí)把返回值帶給調(diào)用函調(diào)用函數(shù)中,同時(shí)把返回值帶給調(diào)用函數(shù)數(shù)第18頁/共47頁函數(shù)定義示例函數(shù)定義示例(2)(2)二、無參數(shù)有返回值的函數(shù)二、無參數(shù)有返回值的函數(shù)如定義函數(shù)如定義函數(shù)sum_100,用以求,用以求1+2+3+100的和,的和,并將結(jié)果返回給調(diào)用它的函數(shù)。并將結(jié)果返回給調(diào)用它的函數(shù)。 int sum_100( ) int s=0, i; for(

11、i=1; i=100; i+)s=s+i; return s ; /用用return返回一個(gè)值給主調(diào)返回一個(gè)值給主調(diào)函數(shù)函數(shù) ( )第19頁/共47頁無參數(shù)有返回值的函數(shù)示例無參數(shù)有返回值的函數(shù)示例 #include int sum_100( ); /函數(shù)聲明函數(shù)聲明 void main( ) int s1; s1 = sum_100( ); /函數(shù)調(diào)用函數(shù)調(diào)用 printf(和值為和值為:%dn, s1); int sum_100( ) /函數(shù)定義函數(shù)定義( (首部首部) ) int s=0, i; for(i=1; i=100; i+)s=s+i; return s; /返回值給主調(diào)函數(shù)返

12、回值給主調(diào)函數(shù) 第20頁/共47頁模仿練習(xí)無參無返回值函數(shù)編寫:無參無返回值函數(shù)編寫:1、自定義函數(shù)、自定義函數(shù)myPrint1( ),在屏幕上輸出如,在屏幕上輸出如下圖形下圖形(每行每行10個(gè)個(gè)$符號(hào)符號(hào)),并在主函數(shù)中調(diào)用,并在主函數(shù)中調(diào)用myPrint1()函數(shù)。函數(shù)。 $ $ $第21頁/共47頁模仿練習(xí)模仿練習(xí)無參無返回值函數(shù)編寫:無參無返回值函數(shù)編寫:2、自定義函數(shù)、自定義函數(shù)myPrint2( ),在屏幕上輸出,在屏幕上輸出如下圖形,并在主函數(shù)中調(diào)用如下圖形,并在主函數(shù)中調(diào)用myPrint2( )函數(shù)。函數(shù)。 第22頁/共47頁模仿練習(xí)無參有返回值函數(shù)編寫:3、自定義函數(shù)myFa

13、c(),計(jì)算10!,將計(jì)算結(jié)果返回給調(diào)用者。然后在主函數(shù)中調(diào)用myFac()函數(shù),輸出該結(jié)果。4、自定義函數(shù)myMax(),實(shí)現(xiàn)功能:從鍵盤輸入3個(gè)數(shù),求最大數(shù)并將最大數(shù)返回給調(diào)用者。然后在主函數(shù)中調(diào)用myMax()函數(shù),輸出該結(jié)果。第23頁/共47頁討論并總結(jié)1、為什么使用函數(shù)?2、如何理解函數(shù)調(diào)用與函數(shù)定義的不同?3、空函數(shù)在程序結(jié)構(gòu)設(shè)計(jì)中有什么作用?(P174)第24頁/共47頁授課要點(diǎn) 函數(shù)的定義、聲明、調(diào)用函數(shù)的定義、聲明、調(diào)用 無參無返回值的函數(shù)無參無返回值的函數(shù) 無參有返回值的函數(shù)無參有返回值的函數(shù) 有參無返回值的函數(shù)有參無返回值的函數(shù) 有參有返回值的函數(shù)有參有返回值的函數(shù)第25

14、頁/共47頁 問題問題: :試編程實(shí)現(xiàn)計(jì)算并輸出3!、4!、5!。 第26頁/共47頁問題解決問題解決函數(shù)定義示例函數(shù)定義示例(3)三、有參數(shù)無返回值的函數(shù)三、有參數(shù)無返回值的函數(shù)如定義如定義fanc_n()函數(shù),用以計(jì)算函數(shù),用以計(jì)算n!。其中!。其中n的的值是由調(diào)用該函數(shù)的函數(shù)傳遞過來的。值是由調(diào)用該函數(shù)的函數(shù)傳遞過來的。 void fanc_n( int n) int i,s=1; for(i=1; i=n; i+)s*=i; printf(%dn,s); 函數(shù)參數(shù)函數(shù)參數(shù)(稱為稱為形參形參)第27頁/共47頁 函數(shù)調(diào)用函數(shù)調(diào)用有參有參無返回值無返回值函數(shù)的調(diào)用形式:函數(shù)的調(diào)用形式:函數(shù)

15、名函數(shù)名(實(shí)參實(shí)參);實(shí)參與形參:實(shí)參與形參:個(gè)數(shù)相等個(gè)數(shù)相等類型一致類型一致按順序一一對(duì)應(yīng)按順序一一對(duì)應(yīng)第28頁/共47頁有參數(shù)無返回值的函數(shù)調(diào)用有參數(shù)無返回值的函數(shù)調(diào)用 #include void fanc_n(int n); /函數(shù)聲明函數(shù)聲明 void main( ) int num; scanf(%d, &num); fanc_n(num); /函數(shù)調(diào)用函數(shù)調(diào)用 void fanc_n( int n) /函數(shù)定義函數(shù)定義( (首部首部) ) int i,s=1; for(i=1; i=n; i+) s*=i; printf(%dn,s); 函數(shù)參數(shù)函數(shù)參數(shù)(稱為稱為形參形參)

16、調(diào)用時(shí)傳遞的參調(diào)用時(shí)傳遞的參數(shù)數(shù)(稱為稱為實(shí)參實(shí)參)第29頁/共47頁授課要點(diǎn) 函數(shù)的定義、聲明、調(diào)用函數(shù)的定義、聲明、調(diào)用 無參無返回值的函數(shù)無參無返回值的函數(shù) 無參有返回值的函數(shù)無參有返回值的函數(shù) 有參無返回值的函數(shù)有參無返回值的函數(shù) 有參有返回值的函數(shù)有參有返回值的函數(shù)第30頁/共47頁問題: 在主函數(shù)中輸入n,自定義函數(shù),計(jì)算1+2+3+4+n-1+n,將結(jié)果在主函數(shù)中輸出。第31頁/共47頁問題解決問題解決函數(shù)定義示例函數(shù)定義示例(4)四、有參數(shù)有返回值的函數(shù)四、有參數(shù)有返回值的函數(shù)如定義函數(shù)如定義函數(shù)sum_n(),用以求,用以求1+2+3+n的和,并將結(jié)果返回給調(diào)用它的函數(shù)。的和

17、,并將結(jié)果返回給調(diào)用它的函數(shù)。 int sum_n( int m ) int s=0, i; for(i=1; i=m; i+)s=s+i;return s; /通過通過return返回一個(gè)值返回一個(gè)值 函數(shù)參數(shù)函數(shù)參數(shù)(稱為稱為形參形參)第32頁/共47頁 #include int sum_n( int m ); /函數(shù)聲明 void main( ) int s1, n; scanf(%d, &n); s1 = sum_n( n ); /函數(shù)調(diào)用 printf(和值為:%dn, s1); int sum_n( int m ) /函數(shù)定義 (首部) int s=0, i; for(i=

18、1; i=m; i+) s=s+i; return s; /返回一個(gè)值給主調(diào)函數(shù) 有參數(shù)有返回值的函數(shù)調(diào)用有參數(shù)有返回值的函數(shù)調(diào)用第33頁/共47頁u函數(shù)的調(diào)用函數(shù)的調(diào)用1、語句調(diào)用方式、語句調(diào)用方式2、函數(shù)表達(dá)式、函數(shù)表達(dá)式3、函數(shù)參數(shù)、函數(shù)參數(shù) 第34頁/共47頁 函數(shù)的調(diào)用函數(shù)的調(diào)用 調(diào)用方式 語句調(diào)用: 例 printmsg(); printf(打印成功!n); 函數(shù)表達(dá)式調(diào)用: 例 result=aver(totalscore, stuno); 函數(shù)參數(shù)調(diào)用: 例 printf(%f,aver(totalscore, stuno); 第35頁/共47頁 問題:?jiǎn)栴}: 用戶輸入兩個(gè)整數(shù)

19、a、b,通過下面的例子中傳遞方式能否實(shí)現(xiàn)a、b值的交換? 第36頁/共47頁函數(shù)的值傳遞方式函數(shù)的值傳遞方式#include void swap(int a,int b); /swap函數(shù)的聲明void main() int x=7,y=11; printf(x=%d,ty=%dn,x,y); printf(swapped:n); swap(x,y); /調(diào)用swap函數(shù) printf(x=%d,ty=%dn,x,y); void swap(int a,int b) /定義swap函數(shù) int temp; temp=a; a=b; b=temp; 輸出結(jié)果:x=7, y=11 swapped:

20、 x=7, y=11第37頁/共47頁 結(jié)論結(jié)論值值傳遞方式傳遞方式 值傳遞方式 方式:函數(shù)調(diào)用時(shí),為形參分配單元,并將實(shí)參的值復(fù)制到形參中;調(diào)用結(jié)束,形參單元被釋放,實(shí)參單元仍保留并維持原值 特點(diǎn): 形參與實(shí)參占用不同的內(nèi)存單元 單向傳遞,從實(shí)參到形參第38頁/共47頁隨堂實(shí)踐有參無返回值函數(shù)編寫:1、自定義函數(shù)myprint_n(),在屏幕的一行上輸出n個(gè)$符號(hào)。在主函數(shù)中調(diào)用myprint_n()函數(shù),輸出如下圖形(每行上的符號(hào)個(gè)數(shù)由調(diào)用它的函數(shù)傳遞過來) 。函數(shù)首部為:void myprint_n( int n) $(5個(gè)$) $(10個(gè)) $(15個(gè)) $(20個(gè))2、修改以上程序,

21、實(shí)現(xiàn)以下功能:打印個(gè)數(shù)由用戶輸入決定,支持用戶循環(huán)輸入,當(dāng)用戶輸入0時(shí)結(jié)束程序。第39頁/共47頁有參有返回值函數(shù)編寫:3、自定義函數(shù)myfac_n(),求n!,并在主函數(shù)中調(diào)用myfac_n()函數(shù),輸出結(jié)果。 函數(shù)首部為: int myfac_n( int n)4、自定義函數(shù)mypower(),求x的y次方,并在主函數(shù)中調(diào)用mypower()函數(shù),輸出結(jié)果。 函數(shù)首部為:double mypower( double x, int y)5、自定義函數(shù)circleArea(),用于計(jì)算圓的面積,其中半徑作為參數(shù)傳入。然后在主函數(shù)中調(diào)用它,并輸出結(jié)果。函數(shù)首部為: double circleArea(double radius) 隨堂實(shí)踐第40頁/共47頁討論并總結(jié)1、函數(shù)的功能應(yīng)該盡量保持相對(duì)獨(dú)立還是依賴函數(shù)外的

溫馨提示

  • 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)論