第07章函數(shù)ppt課件學(xué)習(xí)教案_第1頁
第07章函數(shù)ppt課件學(xué)習(xí)教案_第2頁
第07章函數(shù)ppt課件學(xué)習(xí)教案_第3頁
第07章函數(shù)ppt課件學(xué)習(xí)教案_第4頁
第07章函數(shù)ppt課件學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、會計(jì)學(xué)1第第07章函數(shù)章函數(shù)ppt課件課件第一頁,編輯于星期二:十一點(diǎn) 三十五分。 C是模塊化程序設(shè)計(jì)語言源程序文件1預(yù)編譯命令說明部分執(zhí)行部分函數(shù)1函數(shù)n源程序文件i源程序文件nC程序C程序結(jié)構(gòu)&C是函數(shù)式語言&必須有且只能有一個(gè)名為main的主函數(shù)&C程序的執(zhí)行總是從main函數(shù)開始,在main中結(jié)束&函數(shù)不能嵌套定義,可以嵌套調(diào)用第1頁/共38頁第二頁,編輯于星期二:十一點(diǎn) 三十五分。使用庫函數(shù)應(yīng)注意:1、函數(shù)功能2、函數(shù)參數(shù)的數(shù)目和順序,及各參數(shù)意義和類型3、函數(shù)返回值意義和類型4、需要使用的包含文件第2頁/共38頁第三頁,編輯于星期二:十一點(diǎn) 三十五分

2、。合法標(biāo)識符函數(shù)返回值類型缺省int型無返回值void函數(shù)體函數(shù)類型 函數(shù)名(形參類型說明表)說明部分語句部分現(xiàn)代風(fēng)格:例 有參函數(shù)(現(xiàn)代風(fēng)格) int max(int x,int y) int z; z=xy?x:y; return(z); 例 有參函數(shù)(現(xiàn)代風(fēng)格) int max(int x, y) int z; z=xy?x:y; return(z); 例 空函數(shù) dummy( ) 函數(shù)體為空例 無參函數(shù) printstar( ) printf(“*n”); 或 printstar(void ) printf(“*n”); 第3頁/共38頁第四頁,編輯于星期二:十一點(diǎn) 三十五分。函數(shù)類型

3、 函數(shù)名(形參表)形參類型說明說明部分語句部分傳統(tǒng)風(fēng)格:例 有參函數(shù)(傳統(tǒng)風(fēng)格) int max(x,y) int x,y; int z; z=xy?x:y; return(z); 第4頁/共38頁第五頁,編輯于星期二:十一點(diǎn) 三十五分。nvoid型函數(shù)例 無返回值函數(shù) void swap(int x,int y ) int temp; temp=x; x=y; y=temp; 第5頁/共38頁第六頁,編輯于星期二:十一點(diǎn) 三十五分。 printstar() printf(*);main() int a; a=printstar(); printf(%d,a);例 函數(shù)帶回不確定值輸出:10v

4、oid printstar() printf(*);main() int a; a=printstar(); printf(%d,a);編譯錯(cuò)誤!第6頁/共38頁第七頁,編輯于星期二:十一點(diǎn) 三十五分。例 函數(shù)返回值類型轉(zhuǎn)換main() float a,b; int c; scanf(%f,%f,&a,&b); c=max(a,b); printf(Max is %dn,c);max(float x, float y) float z; z=xy?x:y; return(z);第7頁/共38頁第八頁,編輯于星期二:十一點(diǎn) 三十五分。第8頁/共38頁第九頁,編輯于星期二:十一點(diǎn)

5、三十五分。main() int i=2,p; p=f(i,+i); printf(%d,p);int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c);例 參數(shù)求值順序main() int i=2,p; p=f(i, i+); printf(%d,p);int f(int a, int b) int c; if(ab) c=1; else if(a=b) c=0; else c=-1; return(c);運(yùn)行結(jié)果:0運(yùn)行結(jié)果:1第9頁/共38頁第十頁,編輯于星期二:十一點(diǎn) 三十五分。第10頁/共

6、38頁第十一頁,編輯于星期二:十一點(diǎn) 三十五分。int型處理n被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前n有些系統(tǒng)(如Borland C+)要求函數(shù)說明指出函數(shù)返值類型和形參類型,并且對void 和 int 型函數(shù)也要進(jìn)行函數(shù)說明第11頁/共38頁第十二頁,編輯于星期二:十一點(diǎn) 三十五分。例 函數(shù)說明舉例main() float a,b; int c; scanf(%f,%f,&a,&b); c=max(a,b); printf(Max is %dn,c);max(float x, float y) float z; z=xy?x:y; return(z);int型函數(shù)可不作函數(shù)說明(B

7、orland C+不行)float add(float x, float y) float z; z=x+y; return(z);main() float a,b,c; scanf(%f,%f,&a,&b); c=add(a,b); printf(sum is %f,c);被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)之前,不必函數(shù)說明main() float add(float,float); /*function declaration*/ float a,b,c; scanf(%f,%f,&a,&b); c=add(a,b); printf(sum is %f,c);float

8、 add(float x, float y) float z; z=x+y; return(z);float add();第12頁/共38頁第十三頁,編輯于星期二:十一點(diǎn) 三十五分。c=max(a,b);(main 函數(shù))(max 函數(shù))max(int x, int y) int z; z=xy?x:y; return(z); 例 比較兩個(gè)數(shù)并輸出大者main() int a,b,c; scanf(%d,%d,&a,&b); c=max(a,b); printf(Max is %d,c);max(int x, int y) int z; z=xy?x:y; return(z);

9、形參實(shí)參第13頁/共38頁第十四頁,編輯于星期二:十一點(diǎn) 三十五分。v說明:l實(shí)參必須有確定的值l形參必須指定類型l形參與實(shí)參類型一致,個(gè)數(shù)相同l若形參與實(shí)參類型不一致,自動按形參類型轉(zhuǎn)換函數(shù)調(diào)用轉(zhuǎn)換l形參在函數(shù)被調(diào)用前不占內(nèi)存;函數(shù)調(diào)用時(shí)為形參分配內(nèi)存;調(diào)用結(jié)束,內(nèi)存釋放 7.5 函數(shù)參數(shù)及其傳遞方式形參與實(shí)參v形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號中的變量名v實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號中的表達(dá)式第14頁/共38頁第十五頁,編輯于星期二:十一點(diǎn) 三十五分。第15頁/共38頁第十六頁,編輯于星期二:十一點(diǎn) 三十五分。711x:y:調(diào)用前:調(diào)用結(jié)束:711x:y:例 交換兩個(gè)數(shù)#includ

10、e main() int x=7,y=11; printf(x=%d,ty=%dn,x,y); printf(swapped:n); swap(x,y); printf(x=%d,ty=%dn,x,y);swap(int a,int b) int temp; temp=a; a=b; b=temp;調(diào)用:711a:b:711x:y:swap:711x:y:117a:b:temp第16頁/共38頁第十七頁,編輯于星期二:十一點(diǎn) 三十五分。第17頁/共38頁第十八頁,編輯于星期二:十一點(diǎn) 三十五分。swap(p1,p2)int *p1,*p2; int p; p=*p1; *p1=*p2; *p2

11、=p;main() int a,b; scanf(%d,%d,&a,&b); printf(“a=%d,b=%dn”,a,b); printf(“swapped:n”); swap(&a,&b); printf(”a=%d,b=%dn,a,b);例 交換兩個(gè)數(shù)a59b調(diào)前:a59b調(diào)swap:p1&a&bp2a95b交換:p1&a&bp2a95b返回:第18頁/共38頁第十九頁,編輯于星期二:十一點(diǎn) 三十五分。#include long sum(int a, int b); long factorial(int n);main()

12、 int n1,n2; long a; scanf(%d,%d,&n1,&n2); a=sum(n1,n2); printf(a=%1d,a); long sum(int a,int b) long c1,c2; c1=factorial(a); c2=factorial(b); return(c1+c2); long factorial(int n) long rtn=1; int i; for(i=1;i=n;i+) rtn*=i; return(rtn); long sum(int a, int b);long factorial(int n);文件包含編譯預(yù)處理命令函數(shù)

13、類型說明函數(shù)定義函數(shù)調(diào)用函數(shù)調(diào)用函數(shù)返回值形參實(shí)參第19頁/共38頁第二十頁,編輯于星期二:十一點(diǎn) 三十五分。main( )調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b第20頁/共38頁第二十一頁,編輯于星期二:十一點(diǎn) 三十五分。例 求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值#include int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z);void main() int a,b,c,d; scanf(%d%d%d,&a,&b,&c); d=dif(a,b,c); print

14、f(Max-Min=%dn,d); int dif(int x,int y,int z) return max(x,y,z)-min(x,y,z); int max(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); int min(int x,int y,int z) int r; r=xy?x:y; return(rz?r:z); main( )調(diào)用函數(shù)dif輸出結(jié)束dif函數(shù)max函數(shù)調(diào)用函數(shù)max調(diào)用函數(shù)minmin函數(shù)第21頁/共38頁第二十二頁,編輯于星期二:十一點(diǎn) 三十五分。 遞歸調(diào)用v 定義:函數(shù)直接或間接的調(diào)用自身叫函數(shù)的遞

15、歸調(diào)用f( )調(diào)f調(diào)f2調(diào)f1f1( )f2( )v說明lC編譯系統(tǒng)對遞歸函數(shù)的自調(diào)用次數(shù)沒有限制l每調(diào)用函數(shù)一次,在內(nèi)存堆棧區(qū)分配空間,用于存放函數(shù)變量、返回值等信息,所以遞歸次數(shù)過多,可能引起堆棧溢出int f(int x) int y,z; z=f(y); . return(2*z);int f1(int x) int y,z; z=f2(y); . return(2*z);int f2(int t) int a,c; c=f1(a); . return(3+c);第22頁/共38頁第二十三頁,編輯于星期二:十一點(diǎn) 三十五分。例 求n的階乘) 1()!1() 1 , 0(1!nnnnn#

16、include int fac(int n) int f; if(n0) printf(n%cn,getone,putone); void hanoi(int n,char one,char two,char three) if(n=1) move(one,three); else hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three); main() int m; printf(Input the number of disks:); scanf(%d,&m); printf(The steps to mov

17、ing %3d disks:n,m); hanoi(m,A,B,C);D:fengyibkcpowerpower.cABC第24頁/共38頁第二十五頁,編輯于星期二:十一點(diǎn) 三十五分。內(nèi)存.main() int a; a=10; printf(“%d”,a);編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元1020002001程序中使用變量名對內(nèi)存操作第25頁/共38頁第二十六頁,編輯于星期二:十一點(diǎn) 三十五分。v變量的屬性l數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性)l存儲屬性u存儲器類型:寄存器、靜態(tài)存儲區(qū)、動態(tài)存儲區(qū)u生存期:變量在某一時(shí)刻存在-靜態(tài)變量與動態(tài)變量u作用域:變量在某區(qū)域內(nèi)有效-局部變量與

18、全局變量v 變量的存儲類型lauto -自動型lregister-寄存器型lstatic -靜態(tài)型lextern -外部型v變量定義格式: 存儲類型 數(shù)據(jù)類型 變量表; 7.7 變量的存儲屬性概述v變量是對程序中數(shù)據(jù)的存儲空間的抽象如: int sum; auto int a,b,c; register int i; static float x,y;第26頁/共38頁第二十七頁,編輯于星期二:十一點(diǎn) 三十五分。float f1(int a) int b,c; .char f2(int x,int y) int i,j; main() int m,n; .a,b,c有效x,y,i,j有效m,n

19、有效例 不同函數(shù)中同名變量main() int a,b; a=3; b=4; printf(main:a=%d,b=%dn,a,b); sub(); printf(main:a=%d,b=%dn,a,b);sub() int a,b; a=6; b=7; printf(sub:a=%d,b=%dn,a,b);例 復(fù)合語句中變量#define N 5main() int i; int aN=1,2,3,4,5; for(i=0;iN/2;i+) int temp;temp=ai;ai=aN-i-1;aN-i-1=temp; for(i=0;iN;i+) printf(%d ,ai);運(yùn)行結(jié)果:5

20、 4 3 2 1例 復(fù)合語句中變量#define N 5main() int i; int aN=1,2,3,4,5; for(i=0;iN/2;i+) int temp;temp=ai;ai=aN-i-1;aN-i-1=temp; for(i=0;il外部變量說明: extern 數(shù)據(jù)類型 變量表;l外部變量定義與外部變量說明不同l若外部變量與局部變量同名,則外部變量被屏蔽l外部變量可用存儲類型:缺省 或 static第28頁/共38頁第二十九頁,編輯于星期二:十一點(diǎn) 三十五分。float max,min;float average(float array, int n) int i; fl

21、oat sum=array0; max=min=array0; for(i=1;imax) max=arrayi; else if(arrayib?a:b; return(z);main() printf(max=%d,max();int a=13,b=-8;例 外部變量定義與說明int max(int x, int y) int z; z=xy?x:y; return(z);main() extern int a,b; printf(max=%d,max(a,b);int a=13,b=-8;第31頁/共38頁第三十二頁,編輯于星期二:十一點(diǎn) 三十五分。int a=3,b=5;max(int a, int b) int c; c=ab?a:b; return(c);main() int a=8; printf(max=%d,max(a,b);例 外部變量與局部變量運(yùn)行結(jié)果:max=8第32頁/共38頁第三十三頁,編輯于星期二:十一點(diǎn) 三十五分。int i;main() void prt(); for(i=0;i5;i+) prt();void prt() for(i=0;i5;i+) printf(“%c”,*); printf(“n”);例 外部變量副作用運(yùn)行結(jié)果:*第33頁/共38頁第三十四頁,編輯于星期二:十一點(diǎn) 三十五分。程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論