C語(yǔ)言第6章函數(shù)_第1頁(yè)
C語(yǔ)言第6章函數(shù)_第2頁(yè)
C語(yǔ)言第6章函數(shù)_第3頁(yè)
C語(yǔ)言第6章函數(shù)_第4頁(yè)
C語(yǔ)言第6章函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩75頁(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、123 int gac(int a,int b) int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b; 函數(shù)函數(shù)首部首部函數(shù)體函數(shù)體45運(yùn)行結(jié)果:運(yùn)行結(jié)果:* * * * * * * * * * * * * * * * * * * *How do you do!How do you do!* * * * * * * * * * * * * * * * * * * *6789如:計(jì)算兩個(gè)自如:計(jì)算兩個(gè)自然數(shù)然數(shù)a和和b的最大的最大公約數(shù)。公約數(shù)。a和和b的值。的值。如:計(jì)算兩個(gè)自如:計(jì)算兩個(gè)自然數(shù)然數(shù)a和和b的最大的最大公約數(shù)。公約數(shù)。int

2、a,int b1011*void photo( )int i,j; for(i=1;i=4;i+) for(j=1;ji;j+) printf( ); for(j=1; j=7-2*(i-1); j+) printf(*); printf(n);121314151617int gac(int a,int b)int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b;18int gac(int a,int b)int r; r=a%b; while(r!=0) a=b; b=r; r=a%b; return b;19202122#include in

3、t max(int x, int y) /*定義有參函數(shù)max */int z; z=xy ? x : y; return z;void main() int a, b, c; scanf(%d,%d, &a, &b);c = max(a, b); printf(Max is %d, c);23#include void main()int max(int x, int y); /* 對(duì)max函數(shù)的聲明 */ int a, b, c; scanf(%d,%d, &a, &b);c = max(a, b); printf(Max is %d, c);int max(int x, int y) /

4、*定義有參函數(shù)max */int z; z=xy ? x : y; return z;2425262728float add(float, float);float add(float x, float y);29# include void main( ) float add(float x, float y); float a,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sum is %f n“,c);float add(float x,float y) float z; z=x+y; return(z); 30# include void

5、 main( ) float add(float x, float y); float a,b,c; scanf(“%f,%f”,&a,&b); c=sub(a,b); printf(“sum is %f n”,c);float sub(float x,float y) float z; z=x-y; return(z); 3132main()fun()返回返回計(jì)算實(shí)參計(jì)算實(shí)參形實(shí)結(jié)合形實(shí)結(jié)合返回到返回到調(diào)用位置調(diào)用位置調(diào)調(diào)fun()結(jié)束結(jié)束33如果按如果按自左至右自左至右順序求實(shí)順序求實(shí)參的值,則函數(shù)調(diào)用相當(dāng)參的值,則函數(shù)調(diào)用相當(dāng)于于f(2,2) 。如果按如果按自右至左自右至左順序求實(shí)順序求

6、實(shí)參的值,則函數(shù)調(diào)用相當(dāng)參的值,則函數(shù)調(diào)用相當(dāng)于于f(3,2) 。 對(duì)于函數(shù)調(diào)用對(duì)于函數(shù)調(diào)用 int i=2,p;p=f(i, i+); 34x5y10a b 5 10t510 5x=5 y=10結(jié)論:結(jié)論: 實(shí)參向形參的數(shù)實(shí)參向形參的數(shù)據(jù)傳遞是據(jù)傳遞是: 單向值傳遞單向值傳遞35函數(shù)語(yǔ)句函數(shù)語(yǔ)句 把函數(shù)調(diào)用作為一個(gè)語(yǔ)句。如把函數(shù)調(diào)用作為一個(gè)語(yǔ)句。如printstar(),這時(shí),這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。 要求:要求:無(wú)無(wú)返回值返回值函數(shù)函數(shù)函數(shù)表達(dá)式函數(shù)表達(dá)式 函數(shù)出現(xiàn)在一個(gè)表達(dá)式中,這種表達(dá)式稱為函數(shù)出現(xiàn)在一個(gè)表達(dá)式中,這種

7、表達(dá)式稱為函數(shù)函數(shù)表達(dá)式表達(dá)式。 要求:要求:有返回值函數(shù)。有返回值函數(shù)。36373839)0()!1()0(1!nnnnn4041) 1() 1(2) 1(10)(nnagennage42可以用一個(gè)函數(shù)來(lái)描述上述遞歸過(guò)程:int age(int n) /* 求年齡的遞歸函數(shù) */ int ; /* c用作存放函數(shù)的返回值的變量 */ if (n=1) c=10; else c=age(n-1)+2; return c;用一個(gè)主函數(shù)調(diào)用age函數(shù),求得第5人的年齡。#include void main()printf(%d, age(5); 44古代有一個(gè)梵塔,塔內(nèi)有3個(gè)座A、B、C,開始時(shí)座

8、上有64個(gè)盤子,盤子大小不等,大的在下,小的在上。有一個(gè)老和尚想把這64個(gè)盤子從A座移到C座,但每次只允許移動(dòng)一個(gè)盤,且在移動(dòng)過(guò)程中在3個(gè)座上都始終保持大盤在下,小盤在上。在移動(dòng)過(guò)程中可以利用B座,要求編程序打印出移動(dòng)的步驟。ABCABCABCABCABCABCABCABCABCABCABCABC62靜態(tài)動(dòng)態(tài)存儲(chǔ)方式程序整個(gè)運(yùn)行期間函數(shù)調(diào)用開始至結(jié)束生存期編譯時(shí)賦初值,只賦一次每次函數(shù)調(diào)用時(shí)賦初值自動(dòng)賦初值0或空字符不確定未賦初值靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)區(qū)存儲(chǔ)區(qū)寄存器局部變量外部變量作用域定義變量的函數(shù)或復(fù)合語(yǔ)句內(nèi)本文件其它文件u局部變量默認(rèn)為auto型u局部static變量具有全局壽命和局部可見性u(píng)局

9、部static變量具有可繼承性u(píng)extern不是變量定義,可擴(kuò)展外部變量作用域register局部staticauto外部static外部存儲(chǔ)類別6465666768(1) 主函數(shù)中定義的變量主函數(shù)中定義的變量(m,n)也只在主函數(shù)中有也只在主函數(shù)中有效效, 主函數(shù)不能使用其他函數(shù)中定義的變量。主函數(shù)不能使用其他函數(shù)中定義的變量。(4) 不同函數(shù)中可以使用相同名字的變量不同函數(shù)中可以使用相同名字的變量,它們代它們代表不同的對(duì)象表不同的對(duì)象,互不干擾?;ゲ桓蓴_。(2) 形式參數(shù)也是局部變量。形式參數(shù)也是局部變量。(3) 在一個(gè)函數(shù)內(nèi)部在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量可以在復(fù)合語(yǔ)句中定義變

10、量,這些變量只在本復(fù)合語(yǔ)句中有效這些變量只在本復(fù)合語(yǔ)句中有效, 。69全局變量可以在函數(shù)之間定義全局變量可以在函數(shù)之間定義 作用域從聲明點(diǎn)開始至源文件尾結(jié)束作用域從聲明點(diǎn)開始至源文件尾結(jié)束(4) 在不必要時(shí)不要使用全局變量在不必要時(shí)不要使用全局變量:(2) 全局變量可以與局部變量同名全局變量可以與局部變量同名 作用域重疊時(shí),局部變量可見。作用域重疊時(shí),局部變量可見。(3)使用全局變量可以在不同的函數(shù)中傳遞數(shù)據(jù)。使用全局變量可以在不同的函數(shù)中傳遞數(shù)據(jù)。(5) 全局變量定義時(shí),若不初始化,值全局變量定義時(shí),若不初始化,值 為為0.7072例6.13#include int f(int a)auto

11、 b=0; static c=3; b=b+1; c=c+1; return(a+b+c);void main()int a=2,i; for(i=0;i3;i+) printf(%d,f(a);73747576文件file2.c中的內(nèi)容為:#include #include #include file1.cint main() extern a,b; a=1,b=2; printf(%d,%dn,a,b); system(pause);int a;main( ) . . f2; . f1; .f1( ) auto int b; f2; .f2( ) static int c; C作用域b作用域a作用域mainf2f1mainf1f2maina生存期

溫馨提示

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