四講函數(shù)及變量的作用域PPT學(xué)習(xí)教案_第1頁
四講函數(shù)及變量的作用域PPT學(xué)習(xí)教案_第2頁
四講函數(shù)及變量的作用域PPT學(xué)習(xí)教案_第3頁
四講函數(shù)及變量的作用域PPT學(xué)習(xí)教案_第4頁
四講函數(shù)及變量的作用域PPT學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、會(huì)計(jì)學(xué)1四講函數(shù)及變量的作用域四講函數(shù)及變量的作用域第1頁/共64頁第2頁/共64頁即函數(shù)返回值的類型。無返回值為void類型語句序列。描述了實(shí)現(xiàn)功能的過程,并一般要最后執(zhí)行一條return語句。可包含多個(gè)形式參數(shù)。定義了函數(shù)將從調(diào)用函數(shù)中接收多少個(gè)數(shù)據(jù)及其類型第3頁/共64頁 第4頁/共64頁即所有參數(shù)的數(shù)據(jù)類型第5頁/共64頁注注 意意第6頁/共64頁#include void f1 ( ) ; /函數(shù)說明void f2 ( ) ;void main( ) f1( ); /函數(shù)調(diào)用 f2( ); void f1( ) /函數(shù)定義 cout Function f1.n;f2( );void

2、f2( ) cout Function f2 .n;main()f1()f2()第7頁/共64頁第8頁/共64頁第9頁/共64頁第10頁/共64頁函數(shù)聲明函數(shù)聲明調(diào)用表達(dá)調(diào)用表達(dá)式式函數(shù)定義函數(shù)定義實(shí)參的個(gè)數(shù)、類型及順序要與形參保持一致形式參數(shù)實(shí)際參數(shù)第11頁/共64頁第12頁/共64頁有時(shí)也稱:第13頁/共64頁#include #include void swap(void swap(int,intint,int); ); void main( )void main( ) int int a=3,b=5; a=3,b=5; c o u t b e f o r e s w a p c o u

3、 t b e f o r e s w a p :a=a,b=bendl;:a=a,b=bendl; swap( swap(a,ba,b); ); coutafter swap :a=a,b=bendl; coutafter swap :a=a,b=bendl; void swap(void swap(int a,int bint a,int b) ) int temp; int temp; temp=a; a=b; b=temp;temp=a; a=b; b=temp; coutin swap :a=a,b=bendl; coutin swap :a=a,b=bendl; 第14頁/共64頁調(diào)

4、用swap時(shí),內(nèi)存單元分配情況:353ababtemp 實(shí)參 形參3535實(shí)參形參35過程調(diào)用中35過程調(diào)用后temp=a; a=b; b=temp;第15頁/共64頁第16頁/共64頁#include #include void swap( void swap(int int * *,int ,int * *); ); void main( ) void main( ) int int a=3,b=5; a=3,b=5; coutbefore swap :a=a,b=bendl; coutbefore swap :a=a,b=bendl; swap( swap(&a,&ba,

5、&b); /); /實(shí)參為變量地址 coutafter swap :a=a,b=bendl;coutafter swap :a=a,b=bendl; void swap(void swap(int int * * a,int a,int * *b b) /) /形參為指針類型 int temp; int temp; temp=temp=* *a; a; * *a=a=* *b; b; * *b=temp; /b=temp; /注意引用方式 coutin swap :a=a,b=bendl; coutin swap :a=a,b=bendl; 第17頁/共64頁調(diào)用swap時(shí),內(nèi)存單元分

6、配情況:35353過程調(diào)用后 形參ababtemp 實(shí)參3510012008實(shí)參形參2008100120081001過程調(diào)用中35temp=*a; *a=*b; *b=temp;第18頁/共64頁第19頁/共64頁#include void swap(int &,int &); void main( ) int a=3,b=5; c o u t b e f o r e s w a p :a=a,b=bendl; swap(a,b); /實(shí)參為變量名 coutafter swap :a=a,b=bendl; void swap(int & a,int &b) /形

7、參為引用類型 int temp; temp=a; a=b; b=temp; /注意區(qū)別 coutin swap :a=a,b=bendl; 第20頁/共64頁調(diào)用swap時(shí),內(nèi)存單元分配情況:35353過程調(diào)用后 形參ababtemp 實(shí)參35實(shí)參形參20081001過程調(diào)用中35temp=a; a=b; b=temp;第21頁/共64頁第22頁/共64頁 #include #include int add(int x,int y); int add(int x,int y); /函數(shù)聲明函數(shù)聲明 void main( )void main( ) int a=4,b=6; int a=4,b=

8、6; int z=add( int z=add(+a,a+b+a,a+b); /); /從左至右為從左至右為5 5 1111 coutzendl; / coutzendl; /從右至左為從右至左為5 5 1010 int add(int x,int y) int add(int x,int y) /函數(shù)定義(實(shí)現(xiàn)函數(shù)定義(實(shí)現(xiàn)) return x+y; return x+y; 第23頁/共64頁第24頁/共64頁第25頁/共64頁第26頁/共64頁void invert(char b,int n) for(int i=0;in/2;i+) char c=bi; bi=bn-1-i; bn-1-

9、i=c; S0S1S2S3S4不能寫成invert(sn,n)有問題嗎?第27頁/共64頁第28頁/共64頁cout字符串反轉(zhuǎn)后的順序:sendl;void invert(char *b,int n) for(int i=0;iy) ? x: y); double max (double x , double y) return ( (xy) ?x: y); #include void main( ) coutmax(10,20)endl; coutmax(1.23,2.34)endl; 靠將實(shí)參的個(gè)數(shù)及類型和所被調(diào)用的f()函數(shù)的形參的個(gè)數(shù)及類型一一比較來判斷。第38頁/共64頁()作為重載

10、函數(shù)至少在參數(shù)個(gè)數(shù)、參數(shù)類型上有所不同。若僅在返回類型上不同,編譯器是無法區(qū)別的。如:void func(int); int func(int);void func(int); int func(int); /錯(cuò)誤 int min(int ,int); int min(int ,int); int min(int,int,int);int min(int,int,int); /正確 int add(int,int); int add(int,int); double add(double,double);double add(double,double);/正確()typedef定義的類型只是

11、給已有類型取另外一個(gè)名字,編譯器不能將其同原類型區(qū)分。如: typedef INT int;typedef INT int; void func(int x) . void func(int x) . void func (INT x) void func (INT x) (3)重載函數(shù)一般應(yīng)具有相同的功能,否則會(huì)破壞程序的可讀性。第39頁/共64頁第40頁/共64頁第41頁/共64頁#include #include const int k=4;const int k=4;constconst int n=6; int n=6; /符號常量定義符號常量定義int power(int,int)

12、; int power(int,int); /求冪的函數(shù)說明求冪的函數(shù)說明int sum(int,int); int sum(int,int); /求和的函數(shù)說明求和的函數(shù)說明void main( )void main( ) coutSum of coutSum of = ;= ; coutsum(k,n)endl; coutsum(k,n)endl; /調(diào)用調(diào)用sumsum函數(shù)函數(shù) 第42頁/共64頁int sum(int k,int n)int sum(int k,int n)/ /* *計(jì)算計(jì)算1 1到到n n的的k k次方之累加和次方之累加和* */ / int s=0; int s=

13、0; for(int i=1;i=n;i+) for(int i=1;i=n;i+) s+= power(i, k); s+= power(i, k); /累加累加 return s; return s; /調(diào)用調(diào)用f1f1函數(shù)函數(shù) int power(int m,int n)int power(int m,int n)/ /* *計(jì)算計(jì)算mm的的n n次方次方* */ / int p=1, i; int p=1, i; for(i=1;in;i+) p for(i=1;i1三、調(diào)用函數(shù)本身,但參數(shù)值趨于結(jié)束條件一、有一個(gè)使遞歸結(jié)束的條件二、當(dāng)條件成立時(shí),不再調(diào)用自己,而有確定值第44頁/共6

14、4頁s:=fac(3)主程序fac(3):=fac(2)*3n=3fac(2):=fac(1)*2n=2fac(1):=1n=1fac:=6fac:=2fac:=1第45頁/共64頁第46頁/共64頁 第47頁/共64頁第48頁/共64頁在不同作用域中允許同名。在同一作用域中不允許同名。藍(lán)色為函數(shù)作用域綠色為塊作用域不為x x的原因是局部優(yōu)局部優(yōu)先先4 5 4 5 4 505第49頁/共64頁第50頁/共64頁#includeint i(5); /外部變量外部變量externstatic int j(6); /外部靜態(tài)變量外部靜態(tài)變量void min(int x,int y ) /形參形參 i

15、nt i(3); /自動(dòng)變量自動(dòng)變量 auto register int j(2); /寄存器變量寄存器變量 static int k(1); /內(nèi)部靜態(tài)變量內(nèi)部靜態(tài)變量 void main( ) 局部變量全局變量藍(lán)色為文件作用域綠色為函數(shù)作用域注意:同名時(shí)是局部優(yōu)先第51頁/共64頁5 7 105 7 105 8 8.85 8 8.88 8 88 8 88 7 108 7 108 8 8.88 8 8.8第52頁/共64頁第53頁/共64頁第54頁/共64頁sum(15)ave(15)第55頁/共64頁第56頁/共64頁第57頁/共64頁第一輪第一輪 B D C A E原數(shù)據(jù)原數(shù)據(jù) B E D C A第三輪第三輪 B A C D E第二輪第二輪 B C A D E第四輪第四輪 A B C D E 4 3 2 1結(jié)論:輪數(shù)結(jié)論:輪數(shù)(外循環(huán)外循環(huán))為為:n-1,每輪次數(shù)每輪次數(shù)(內(nèi)循環(huán)內(nèi)循環(huán))為為:n-i第58頁/共64頁第59頁/共64頁第60頁/共64頁else

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論