程序設(shè)計(jì)語言課件c7函數(shù)_第1頁
程序設(shè)計(jì)語言課件c7函數(shù)_第2頁
程序設(shè)計(jì)語言課件c7函數(shù)_第3頁
程序設(shè)計(jì)語言課件c7函數(shù)_第4頁
程序設(shè)計(jì)語言課件c7函數(shù)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C是模塊化程序設(shè)計(jì)語言C程序結(jié)構(gòu)C是函數(shù)式語言必須有且只能有一個(gè)名為main的主函數(shù)C程序的執(zhí)行總是從main函數(shù)開始,在main中結(jié)束函數(shù)不能嵌套定義,可以嵌套調(diào)用第七章函數(shù)7.1函數(shù)概念函數(shù):完成特定功能的程序段,通常由用戶定義或系統(tǒng)定義。一個(gè)C程序,由一個(gè)主函數(shù)和若干其它函數(shù)組成:主函數(shù)可以調(diào)用其它函數(shù),其它函數(shù)可相互調(diào)用。函數(shù)用途:使得同一功能(程序段)能夠在不同位置多次反復(fù)執(zhí)行

實(shí)現(xiàn)程序模塊化7.2函數(shù)分類從用戶角度標(biāo)準(zhǔn)函數(shù)(庫函數(shù)):由系統(tǒng)提供用戶自定義函數(shù)從函數(shù)形式無參函數(shù)有參函數(shù)Ch7_201.c7.3函數(shù)定義的一般形式1.無參函數(shù)的定義形式:

函數(shù)類型函數(shù)名(){聲明部分語句}

注:無參函數(shù)一般不返回函數(shù)值,故類型標(biāo)識(shí)符可省。舉例:intmax(intx,inty) { intz; z=x>y?x:y; return(z); }2.有參函數(shù)的定義形式:

函數(shù)類型函數(shù)名(形式參數(shù)表列){

聲明部分 語句

}7.4函數(shù)的返回值返回語句形式:return(表達(dá)式);

return表達(dá)式;

return;功能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時(shí)把返值帶給調(diào)用函數(shù)說明:例無返回值函數(shù)

voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}1.被調(diào)函數(shù)中可用多個(gè)return語句,執(zhí)行哪一個(gè)由程序執(zhí)行情況來定。例:函數(shù)中有如下語句

if(a>b)return(a);elsereturn(b);2.若無return語句,遇}時(shí),自動(dòng)返回調(diào)用函數(shù)3.return后面的括號(hào)可省,如:returna;4.return后的值可以是一個(gè)表達(dá)式,如:return(x>y?x:y);5.函數(shù)值的類型是在定義函數(shù)時(shí)指定的注:未加類型說明的函數(shù)自動(dòng)按整型處理;說明:7.5函數(shù)的調(diào)用調(diào)用形式函數(shù)名(實(shí)際參數(shù)表列);說明:實(shí)參與形參個(gè)數(shù)相等,類型一致,按順序一一對(duì)應(yīng)形參與實(shí)參形式參數(shù):定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式c=max(a,b);(main函數(shù))(max函數(shù))max(intx,inty){intz;z=x>y?x:y;return(z);}例比較兩個(gè)數(shù)并輸出大者main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(intx,inty){intz;z=x>y?x:y;return(z);}形參實(shí)參例:求兩個(gè)數(shù)之和floatadd(floatx,floaty){floatz;z=x+y;return(z);}main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}例計(jì)算x的立方#include<stdio.h>floatcube(floatx){return(x*x*x);}main(){floata,product;printf("Pleaseinputvalueofa:");scanf("%f",&a);product=cube(a);printf(”Cubeof%.4fis%.4f\n",a,product);}xaproduct××××1.21.21.7287.6

函數(shù)的嵌套與遞歸調(diào)用嵌套調(diào)用C規(guī)定:函數(shù)定義不可嵌套,但可以嵌套調(diào)用函數(shù)main()調(diào)用函數(shù)a結(jié)束a函數(shù)b函數(shù)調(diào)用函數(shù)b例求三個(gè)數(shù)中最大數(shù)和最小數(shù)的差值#include<stdio.h>

intdif(intx,inty,intz);intmax(intx,inty,intz);intmin(intx,inty,intz);voidmain(){inta,b,c,d;scanf("%d%d%d",&a,&b,&c);

d=dif(a,b,c);printf("Max-Min=%d\n",d);}Ch7_202.cintdif(intx,inty,intz){returnmax(x,y,z)-min(x,y,z);}intmax(intx,inty,intz){intr;r=x>y?x:y;return(r>z?r:z);}intmin(intx,inty,intz){intr;r=x<y?x:y;return(r<z?r:z);}main()調(diào)用函數(shù)dif輸出結(jié)束dif函數(shù)max函數(shù)調(diào)用函數(shù)max調(diào)用函數(shù)minmin函數(shù)函數(shù)的遞歸調(diào)用

遞歸:在函數(shù)調(diào)用過程中,直接或間接的調(diào)用自身。1.直接遞歸:在函數(shù)體內(nèi)又調(diào)用自身f1()┇

調(diào)用f1()

┇2.間接遞歸:當(dāng)函數(shù)去調(diào)用另一函數(shù)時(shí),而另一函數(shù)反過來又調(diào)用自身。

f1()函數(shù)f2()函數(shù)

調(diào)用f2()函數(shù)調(diào)用f1()函數(shù)例求n的階乘/*ch7_8.c*/#include<stdio.h>intfac(intn){intf;if(n<0)printf("n<0,dataerror!");elseif(n==0||n==1)f=1;elsef=fac(n-1)*n;return(f);}main(){intn,y;printf("Inputaintegernumber:");scanf("%d",&n);

y=fac(n);printf("%d!=%15d",n,y);}例:采用遞歸方法計(jì)算X的n次方#include<stdio.h>intpower(intx,intn){if(n==0)return(1);elsereturn(x*power(x,n-1));}main(){intx,n,y;printf(“x=?n=?");scanf(“%d%d”,&x,&n);

y=power(x,n);printf("%d",y);}變量的屬性數(shù)據(jù)類型:變量所持有的數(shù)據(jù)的性質(zhì)(操作屬性)存儲(chǔ)屬性存儲(chǔ)器類型:內(nèi)存、CPU中的寄存器生存期:變量值保留的期限-------靜態(tài)變量與動(dòng)態(tài)變量作用域:變量的有效范圍---------局部變量與全局變量7.7

變量的存儲(chǔ)屬性概述變量是對(duì)程序中數(shù)據(jù)的存儲(chǔ)空間的抽象7.7.1局部變量和全局變量 變量:按其作用域,可分為局部和全局1.局部變量局部:作用域僅限在所定義的函數(shù)或復(fù)合語句內(nèi)部

#include<stdio.h>

main()

{ inta=1; { intb=2; b=a+b; a=a+b; } printf("a=%d\n",a);

}局部變量的特點(diǎn):(1)在不同函數(shù)中允許變量同名,它們占據(jù)不同的內(nèi)存單元,相互之間互不影響(2)形參屬局部變量,只能在其所在的函數(shù)內(nèi)部使用。例不同函數(shù)中同名變量main(){inta,b;a=3;b=4;printf("main:a=%d,b=%d\n",a,b);sub();printf("main:a=%d,b=%d\n",a,b);}sub(){inta,b;a=6;b=7;printf("sub:a=%d,b=%d\n",a,b);}運(yùn)行結(jié)果:main:a=3,b=4sub:a=6,b=7main:a=3,b=42.全局變量全局(外部)變量:在一個(gè)文件的所有函數(shù)以外定義的變量。作用域:從變量的定義位置開始到源程序結(jié)束。例:intd=11;voidfun(intp){intd=5;d+=p++;printf(“%d”,d);}Main(){inta=3;fun(a);d+=a++;Printf(“%d”,d);}floatmax,min;floataverage(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;i<n;i++){if(array[i]>max)max=array[i];elseif(array[i]<min)min=array[i];sum+=array[i];}return(sum/n);}main(){inti;floatave,score[10];/*Input*/ave=average(score,10);printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);}作用域maxmin7.7.2動(dòng)態(tài)變量與靜態(tài)變量存儲(chǔ)方式靜態(tài)存儲(chǔ):程序運(yùn)行期間分配固定存儲(chǔ)空間動(dòng)態(tài)存儲(chǔ):程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)分配存儲(chǔ)空間生存期靜態(tài)變量:從程序開始執(zhí)行到程序結(jié)束動(dòng)態(tài)變量:從包含該變量定義的函數(shù)開始執(zhí)行至函數(shù)執(zhí)行結(jié)束1.auto變量函數(shù)內(nèi)部的沒有用static聲明的局部量,均為動(dòng)態(tài)存儲(chǔ)類別,存儲(chǔ)類別聲明符為auto

聲明符auto可?。蛔詣?dòng)變量被分配在動(dòng)態(tài)存儲(chǔ)區(qū),若未賦初值,其值不確定,每次函數(shù)調(diào)用重新分配存儲(chǔ)單元(應(yīng)重新賦值),每次函數(shù)調(diào)用結(jié)束時(shí)釋放存儲(chǔ)單元。例如:intf(inta){ autointb,c=3; /*定義b、c為自動(dòng)變量*/ …}其中:autointb,c=3;

與:intb,c=3;等價(jià)

2.用static聲明局部變量若希望函數(shù)調(diào)用結(jié)束后,其值不消失,下次調(diào)用函數(shù)時(shí)繼續(xù)使用,則用static對(duì)變量加以聲明。舉例:靜態(tài)局部變量的值f(inta){ autointb=0;

staticintc=3; b=b+1;c=c+1; return(a+b+c);}main(){ inta=2,i; for(i=0

溫馨提示

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