函數(shù)的嵌套調(diào)用_第1頁(yè)
函數(shù)的嵌套調(diào)用_第2頁(yè)
函數(shù)的嵌套調(diào)用_第3頁(yè)
函數(shù)的嵌套調(diào)用_第4頁(yè)
函數(shù)的嵌套調(diào)用_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第1212講講 函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用一、一、概述概述 1 1、 C C程序的模塊化結(jié)構(gòu)程序的模塊化結(jié)構(gòu) 2 2、 函數(shù)定義的一般形式函數(shù)定義的一般形式二、二、函數(shù)間的數(shù)據(jù)傳送函數(shù)間的數(shù)據(jù)傳送 1、 形參與實(shí)參形參與實(shí)參 2、 函數(shù)的返回值函數(shù)的返回值 3、 Void函數(shù)函數(shù) 4、 函數(shù)原型函數(shù)原型 5、 數(shù)組作為函數(shù)的參數(shù)數(shù)組作為函數(shù)的參數(shù)三、三、函數(shù)的調(diào)用函數(shù)的調(diào)用 1、 函數(shù)調(diào)用的一般形式函數(shù)調(diào)用的一般形式 2、 函數(shù)嵌套調(diào)用函數(shù)嵌套調(diào)用1、 C程序的模塊化結(jié)構(gòu)程序的模塊化結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計(jì)方法:結(jié)構(gòu)化程序設(shè)計(jì)方法: 自頂向下,逐步細(xì)化;自頂向下,逐步細(xì)化; 模塊化設(shè)計(jì);模塊化

2、設(shè)計(jì); 結(jié)構(gòu)化編碼。結(jié)構(gòu)化編碼。 特點(diǎn):特點(diǎn):程序結(jié)構(gòu)清晰,易于維護(hù),增加了函數(shù)的可重用程序結(jié)構(gòu)清晰,易于維護(hù),增加了函數(shù)的可重用性和可擴(kuò)充性。性和可擴(kuò)充性。一、一、概述概述格式一格式一 : 類型符類型符 函數(shù)名稱(函數(shù)名稱( 形參表形參表 ) 形參說(shuō)明形參說(shuō)明 數(shù)據(jù)說(shuō)明語(yǔ)句數(shù)據(jù)說(shuō)明語(yǔ)句 可執(zhí)行語(yǔ)句可執(zhí)行語(yǔ)句 格式二格式二 : 類型符類型符 函數(shù)名稱(函數(shù)名稱( 類型類型 形參形參1 , ) 數(shù)據(jù)說(shuō)明語(yǔ)句數(shù)據(jù)說(shuō)明語(yǔ)句 可執(zhí)行語(yǔ)句可執(zhí)行語(yǔ)句 2、 函數(shù)定義的一般形式函數(shù)定義的一般形式函數(shù)頭函數(shù)頭函數(shù)體函數(shù)體函數(shù)頭函數(shù)頭函數(shù)體函數(shù)體函數(shù)定義的一般形式舉例:函數(shù)定義的一般形式舉例:(1)float

3、sum ( x , y )float x , y ; int z ; z = x + y ; return z ; (2)float sum (float x, float y ) int z ; z = x + y ; return z ; 函數(shù)定義的一般形式說(shuō)明函數(shù)定義的一般形式說(shuō)明:(1)float sum ( x , y )float x , y ; int z ; z = x + y ; return z ; 類型說(shuō)明符: 指明函數(shù)的類型,函數(shù)的指明函數(shù)的類型,函數(shù)的類型是指函數(shù)的返回值的類類型是指函數(shù)的返回值的類型,函數(shù)返回值所具有的數(shù)型,函數(shù)返回值所具有的數(shù)據(jù)類型的種類與變量相同

4、。據(jù)類型的種類與變量相同。省略時(shí)則默認(rèn)為省略時(shí)則默認(rèn)為intint型。若明型。若明確表示函數(shù)確表示函數(shù) 不帶回值不帶回值 ,可,可以用以用 void void 作類型符,稱作類型符,稱 無(wú)類型無(wú)類型 或稱或稱 空類型空類型 。 float sum ( x , y )float x , y ; int z ; z = x + y ; return z ; 函數(shù)名:函數(shù)名: 通常是一個(gè)標(biāo)識(shí)符,通常是一個(gè)標(biāo)識(shí)符,在一個(gè)程序中除了主函在一個(gè)程序中除了主函數(shù)外其余函數(shù)的名字可數(shù)外其余函數(shù)的名字可以任意取,但應(yīng)有意義。以任意取,但應(yīng)有意義。 ()() 函數(shù)標(biāo)志。函數(shù)標(biāo)志。float sum ( float

5、 x , float y ) float sum ( x , y )float x , y ; int z ; z = x + y ; return z ; 參數(shù)表(參數(shù)表( 形參表形參表 ):): 函數(shù)定義時(shí)的參數(shù)稱為函數(shù)定義時(shí)的參數(shù)稱為形式參數(shù),形式參數(shù)彼形式參數(shù),形式參數(shù)彼此間用逗號(hào)分隔。此間用逗號(hào)分隔。 形式參數(shù)省略時(shí)稱無(wú)參形式參數(shù)省略時(shí)稱無(wú)參函數(shù),但此時(shí)函數(shù)名后函數(shù),但此時(shí)函數(shù)名后的圓括號(hào)不能省。的圓括號(hào)不能省。 形參說(shuō)明是用來(lái)指明各形參說(shuō)明是用來(lái)指明各個(gè)形式參數(shù)的類型,它個(gè)形式參數(shù)的類型,它隨形參的存在而存在。隨形參的存在而存在。float sum ( x , y )float x

6、 , y ; int z ; z = x + y ; return z ; 函數(shù)體:函數(shù)體: 函數(shù)中最外層一對(duì)花括函數(shù)中最外層一對(duì)花括弧弧 括起來(lái)的內(nèi)容,括起來(lái)的內(nèi)容,它由若干個(gè)數(shù)據(jù)說(shuō)明語(yǔ)句和它由若干個(gè)數(shù)據(jù)說(shuō)明語(yǔ)句和可執(zhí)行語(yǔ)句組成,決定函數(shù)可執(zhí)行語(yǔ)句組成,決定函數(shù)要實(shí)現(xiàn)的功能、完成的任務(wù)。要實(shí)現(xiàn)的功能、完成的任務(wù)。 函數(shù)體內(nèi)若無(wú)任何語(yǔ)句時(shí),函數(shù)體內(nèi)若無(wú)任何語(yǔ)句時(shí),為空函數(shù)。為空函數(shù)。例例 編寫(xiě)自定義函數(shù)計(jì)算編寫(xiě)自定義函數(shù)計(jì)算: :分析:分析: 確定形參:求確定形參:求 c 必須知道必須知道 f 的大小,設(shè)形參為的大小,設(shè)形參為temp。 確定函數(shù):函數(shù)的返回值即為確定函數(shù):函數(shù)的返回值即為 c

7、 的值,設(shè)為實(shí)型。的值,設(shè)為實(shí)型。程序:程序:float ftoc( temp ) float temp ; float c ; c =(5./9.)*( temp 32 ); return c ; )32(95fc例例 編寫(xiě)一個(gè)自定義函數(shù)求編寫(xiě)一個(gè)自定義函數(shù)求 n n!分析:分析: 確定形參:確定形參: 求求 n!必須知道必須知道 n 的大小,設(shè)形參為的大小,設(shè)形參為 n。 確定函數(shù):確定函數(shù): 函數(shù)的返回值即為函數(shù)的返回值即為 n!的值,設(shè)為實(shí)型。的值,設(shè)為實(shí)型。程序:程序: float jiechen( int n ) float x, y ; for ( x=y=1.0; x=n; x

8、+ ) y *= x ; return y ; 實(shí)參實(shí)參(實(shí)際參數(shù))是函數(shù)調(diào)用時(shí)調(diào)用函數(shù)傳送(實(shí)際參數(shù))是函數(shù)調(diào)用時(shí)調(diào)用函數(shù)傳送給被調(diào)用函數(shù)參數(shù)的實(shí)際值。實(shí)參可以是常量、給被調(diào)用函數(shù)參數(shù)的實(shí)際值。實(shí)參可以是常量、變量和表達(dá)式,實(shí)參必須有確定的值。變量和表達(dá)式,實(shí)參必須有確定的值。 例如:例如: fabs( -2 ); putchar( c ); sqrt((x*x+2)*(y+z);二、二、函數(shù)間的數(shù)據(jù)傳送函數(shù)間的數(shù)據(jù)傳送1 1、 形參與實(shí)參形參與實(shí)參形參形參(形式參數(shù))是函數(shù)定義時(shí),參數(shù)表中的(形式參數(shù))是函數(shù)定義時(shí),參數(shù)表中的參數(shù)。形式參數(shù)只能是變量。在函數(shù)定義時(shí),參參數(shù)。形式參數(shù)只能是變

9、量。在函數(shù)定義時(shí),參數(shù)表中的形參并沒(méi)有具體的值,系統(tǒng)也不為其分?jǐn)?shù)表中的形參并沒(méi)有具體的值,系統(tǒng)也不為其分配存儲(chǔ)單元。配存儲(chǔ)單元。例如:例如:max( float x, float y ) float ftoc( float temp ) 例例 形參和實(shí)參的運(yùn)用形參和實(shí)參的運(yùn)用try( int x, int y, int z ) printf( 2) x=%d, y=%d, z=%dn, x, y, z); z = x + y ; x = x * x ; y = y * y ; printf( 3) x=%d, y=%d, z=%dn, x, y, z); main( ) int a=2, b

10、=3, c=4 ; printf( 1) a=%d, b=%d, c=%dn, a, b, c ); try( a, b, c ) ; printf( 4) a=%d, b=%d, c=%dn, a, b, c ); 說(shuō)明:說(shuō)明:2341000H實(shí)參實(shí)參 a ,b ,c1002H1004H傳遞傳遞234形參形參 x ,y ,z2000H2002H2004H495形參形參 x ,y ,z2000H2002H2004H函數(shù)的返回值:當(dāng)被調(diào)用函數(shù)在完成一定的功函數(shù)的返回值:當(dāng)被調(diào)用函數(shù)在完成一定的功能后,可以將處理的結(jié)果返回到調(diào)用函數(shù)。能后,可以將處理的結(jié)果返回到調(diào)用函數(shù)。方式:方式:return

11、語(yǔ)句語(yǔ)句 作用:將表達(dá)式的值傳給調(diào)用函數(shù),并把控作用:將表達(dá)式的值傳給調(diào)用函數(shù),并把控制權(quán)轉(zhuǎn)向調(diào)用函數(shù)實(shí)現(xiàn)函數(shù)的返回,即結(jié)束制權(quán)轉(zhuǎn)向調(diào)用函數(shù)實(shí)現(xiàn)函數(shù)的返回,即結(jié)束被調(diào)用函數(shù)的執(zhí)行,并將控制返回到調(diào)用它被調(diào)用函數(shù)的執(zhí)行,并將控制返回到調(diào)用它的函數(shù)。的函數(shù)。 格式:格式: return ( 表達(dá)式表達(dá)式 ) ;2 2、 函數(shù)的返回值函數(shù)的返回值 對(duì)于不需要提供返回值的函數(shù)可以直接用對(duì)于不需要提供返回值的函數(shù)可以直接用void作為函數(shù)類型定義,以表明此函數(shù)返回值為作為函數(shù)類型定義,以表明此函數(shù)返回值為”無(wú)類型無(wú)類型”或或”空類型空類型”。例:例:void psch( ) printf(Wuhan U

12、niversityn); main() psch( ); 3、 void函數(shù)函數(shù)函數(shù)原型:在定義或調(diào)用函數(shù)前,對(duì)該函數(shù)進(jìn)行聲明。函數(shù)原型:在定義或調(diào)用函數(shù)前,對(duì)該函數(shù)進(jìn)行聲明。作用:將函數(shù)名、函數(shù)類型及形參個(gè)數(shù)、類型、順序等作用:將函數(shù)名、函數(shù)類型及形參個(gè)數(shù)、類型、順序等通知編譯系統(tǒng),當(dāng)函數(shù)被調(diào)用時(shí),可對(duì)實(shí)參、形參的類通知編譯系統(tǒng),當(dāng)函數(shù)被調(diào)用時(shí),可對(duì)實(shí)參、形參的類型、個(gè)數(shù)匹配情況進(jìn)行檢查。型、個(gè)數(shù)匹配情況進(jìn)行檢查。格式:格式: 類型符類型符 函數(shù)名(參數(shù)類型函數(shù)名(參數(shù)類型1, );); 或:或: 類型符類型符 函數(shù)名(類型符函數(shù)名(類型符 形參形參1, ););4 4、 函數(shù)原型函數(shù)原型例

13、例 利用變量換數(shù)利用變量換數(shù) void huanshu1( int x, int y ); /* 函數(shù)原型聲明函數(shù)原型聲明*/main( ) /* 主函數(shù)主函數(shù) */ int a=5,b=10; printf( 1)a = %d,b = %dn,a ,b);); huanshu1( a , b ) ; printf( 4)a = %d,b = %dn,a ,b););void huanshu1( int x, int y ) /* 利用變量換數(shù)利用變量換數(shù) */ int t ; printf( 2)x = %d ,y = %dn,x ,y ); t = x ; x = y ; y = t ;

14、printf( 3)x = %d ,y = %dn,x ,y ); 例例 判定素?cái)?shù)。判定素?cái)?shù)。#include math.hint isprime( int ); /* 函數(shù)原型聲明函數(shù)原型聲明*/main( ) int x=35; if ( isprime(x) printf(%d 是素?cái)?shù)。是素?cái)?shù)。n, x ); else printf(%d 不是素?cái)?shù)。不是素?cái)?shù)。n, x ); isprime( int a ) int i; for ( i=2 ; i=sqrt(double)a); i+ ) if ( a%i = 0) return 0 ; return 1 ; 數(shù)組元素做函數(shù)實(shí)參,遵循數(shù)

15、組元素做函數(shù)實(shí)參,遵循”值傳送值傳送”特性,特性,此時(shí)形參為變量。此時(shí)形參為變量。數(shù)組名可做實(shí)參和形參,傳送的是整個(gè)數(shù)組。數(shù)組名可做實(shí)參和形參,傳送的是整個(gè)數(shù)組。 在用數(shù)組名做函數(shù)參數(shù)時(shí),實(shí)參和形參在用數(shù)組名做函數(shù)參數(shù)時(shí),實(shí)參和形參都應(yīng)該用數(shù)組(或指針變量)。都應(yīng)該用數(shù)組(或指針變量)。5 5、 數(shù)組作為函數(shù)的參數(shù)數(shù)組作為函數(shù)的參數(shù)數(shù)組元素作為函數(shù)參數(shù)舉例數(shù)組元素作為函數(shù)參數(shù)舉例:szdy1( int x,int y );szdy2( int x,int y );main( ) int a10, b45; szdy1( a7,b32); szdy2( b12,a4); szdy1( int x

16、,int y ) szdy2( int x,int y ) (1)szdy1( int x10 ) ;szdy2( int x45 ) ;main( ) int a10, b45 ; szdy1 ( a ); szdy2 ( b ); szdy1( int x10 ) szdy2( int x45 ) (2)數(shù)組名作函數(shù)參數(shù)時(shí)應(yīng)注意:數(shù)組名作函數(shù)參數(shù)時(shí)應(yīng)注意:1 1)數(shù)組名作函數(shù)參數(shù)時(shí),應(yīng)在主調(diào)函數(shù)和被調(diào))數(shù)組名作函數(shù)參數(shù)時(shí),應(yīng)在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組。函數(shù)中分別定義數(shù)組。2 2)實(shí)參數(shù)組與形參數(shù)組的類型必須相同,但大)實(shí)參數(shù)組與形參數(shù)組的類型必須相同,但大小可以不同。小可以不同。3

17、 3)形參數(shù)組的一維下標(biāo)可以省略。)形參數(shù)組的一維下標(biāo)可以省略。4 4)數(shù)組名數(shù)組名表示的是表示的是數(shù)組元素的首地址數(shù)組元素的首地址,數(shù)組名,數(shù)組名作函數(shù)參數(shù)時(shí),傳遞的是作函數(shù)參數(shù)時(shí),傳遞的是整個(gè)數(shù)組整個(gè)數(shù)組。實(shí)參與形。實(shí)參與形參之間的數(shù)據(jù)傳遞是參之間的數(shù)據(jù)傳遞是地址傳遞。地址傳遞。數(shù)組名作函數(shù)的參數(shù)舉例:數(shù)組名作函數(shù)的參數(shù)舉例:szdy1( int x10 ) ;szdy2( int x65 ) ;main( ) int a10, b45 ; szdy1 ( a ); szdy2 ( b ); szdy1( int x6 ) szdy2( int x65 ) 例例 利用數(shù)組換數(shù)利用數(shù)組換數(shù)

18、void huanshu2(int shuzu ,int n); main( ) /* 主函數(shù)主函數(shù) */ int ab2= 5 , 10 , i; for (i=0;i2;i+) printf(1)ab%d=%2d ,i,abi); huanshu2( ab, 2 ); printf(n); for (i=0;i2;i+) printf(4)ab%d=%2d ,i,abi); void huanshu2(int shuzu , int n ) int t, i; printf(n); for (i=0;in;i+) printf(2)shuzu%d=%2d ,i,shuzui); for (i=0;in-1;i+) t=shuzui; shuzui=shuzui+1; shuzui+1=t; printf(n); for ( i=0; in; i+ ) printf(3)shuzu%d=%2d ,i,shuzui); 說(shuō)明說(shuō)明:2000HA02002HA1ab =shuzu = 2000H510105int ab 2 = 5 , 10 ;huanshu2( ab , 2 ) ;for ( i=0; in-1; i+) k = shuzui; shuzui=shuzui+1;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論