計算機課件15函數_第1頁
計算機課件15函數_第2頁
計算機課件15函數_第3頁
計算機課件15函數_第4頁
計算機課件15函數_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ProgramminginC

c程序設計

ProgramminginC

西安電子科技大學計算機學院張淑平

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China1

.上次課要點__________ProgramminginC

?函數定義

?形式參數doubleCelsToFahr(intc)

?函數調用(

?實際參數doublet;

?參數傳遞t=9.0/5*c+32;

?實際參數向形式參數傳值return(t);

?函數返回值}

voidmain(void)

{intx;doubley;

printf(MCelsiustoFahrenheittable:\nn);

for(x=0;x<=100;x+=5){

y=CelsToFahr(x);printf(H%3d--%3g\tn,x,y);

膏形參和實參ProgramminginC

實參可以是常量、變量、表達式、函數等。無論實參是何

種類型的量,在進行函數調用時,它們都必須具有確定的

值,以便把這些值傳送給形參。

>因此,應預先用賦值、輸入等辦法,使實參獲得確定的

值。

形參變量只有在被調用函數執(zhí)行時,才分配內存單元;調

用結束時,即刻釋放所分配的內存單元。

>因此,形參只有在該被調用函數內有效。調用結束,返

回主調函數后,則不能再使用該形參變量。

?實參對形參的數據傳送是單向的,即只能把實參的值傳送

給形參,而不能把形參的值反向地傳送給實參。

?實參和形參占用不同的內存單元,即使同名也互不影響。

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China3

ProgramminginC

這次課的主要內容

參數傳遞

函數調用

嵌套調用

?遞歸調用

全局變量和局部變量

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China4

ProgramminginC

&傳值調用一

?函數調用執(zhí)行時,將實際參數的值傳遞給形

式參數

main()

voidswap(intx,inty)inta,b,c;

{a=3;b=8;c=2;

intt;if(a>b)swap(a,b);

t=x;x=y;y=t;if(a>c)swap(a,c);

if(b>c)swap(b,c);

nf

printf(%d%d%d\a5b,c);

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China5

ProsramminsinC

第;傳值調用

?函數調用執(zhí)行時,將實際參數變量的地址傳

遞給形式參數

main()

(

voidswap(int*x,int*y)inta,b,c;

{a=3;b=8;c=2;

intt;if(a>b)swap(&a,&b);

t=*x;*x=*y;*y=t;if(a>c)swap(&a,&c);

if(b>c)swap(&b,&c);

nf

printf(%d%d%d\a9b,c);

西安電子科技大學計算機學院-XidianUniversity,ChinaTC2.0

ProgramminginC

題數組作為函數參數______________

?數組作為參數有兩種形式

?數組元素作為實參使用;

?把數組名作為函數的形參和實參使用

?數組元素是一個變量

intnum[5]={79,11,27,26,43};

num[O]79

num[l]11

num[2]27

num[3]26

num[4]43

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China7

ProgramminginC

;數組名作為函數參數

?數組名可以作為實參和形參,傳遞的是數組

空間的首地址

voidsort(inta[]9intn)/*數組a白main()

{inti,j,temp;

for(i=0;i<n-1;i++){inti;

for(j=0;j<n-1-i;j++)intnum[6]={43,18,9,13,55,7};

if(a[j]>a[j+l]){

temp=a[j];a[j]=a[j-sort(num,6);

}/*endif*/for(i=0;i<6;i++)

}/*endfori*/printf(n%d\tn,num[i]);

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0

ProgramminginC

改組名作為函數參數(續(xù))

?多位數組作為實參酒碗一

inti,j,max,num[3][4];

?例如:找出二維數組

for(i=0;i<3;i++){

intmax_value_Matrix(inta[]

for(j=0;j<4;j++){

{inti,j,line,col;

num[i][j]=rand();

max=a[0][0];line=0;co

printf(n%d\tn,num[i][j]);

for(i=0;i<m;i++)

}

for(j=0;j<n;j++)

printf(H\nn);

if(a[i][j]>max){max

}

printf(n%d,%d,line,co

max=max_value_Matrix(num,354);

returnmax;

printf(n%d\tn,max);

TC2.0

ProgramminginC

函數的嵌套調用

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China10

令NProsramminsinC

初函數的嵌套調用____________________

O嵌套調用是指在執(zhí)行被調用函數時,被調用

函數又調用了其他函數

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0

ProgramminginC

殛嵌套調用:排序

voidsort(inta[],intn)main()

{inti,j,temp;(

for(i=0;i<n-1;i++){inti;

for(j=0;j<n-1-i;j++)intnum[6]={43,18,9,13,55,7};

if(a[j]>a[j+l]){

swap(&a[j],&a[j+l]);sort(num,6);

}/*endif*/for(i=0;i<6;i++)

}/*endfori*/printf(M%d\f\num[i]);

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,ChinaTC2.0

徵嵌套調用:求組合數ProgramminginC

longfact(intn)

?書架上有10本不同的書,

從中任取2本,有多少(

種取法?longt=1,i=1;

for(i=1;i<=n;i++)

<1010!t=t*i;

2)2!(10-2)!return(t);

longcombinations(intn,intk)

return(fact(n)/(fact(k)*fact(n-k)));

0E。子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,Ctl己事TC2.0

ProgramminginC

繆函數不能嵌套定義

?函數不能嵌套定義,即不能在一個函數內定

義另一個函數

longfact(intn)main()

longt=1,i=1;inti=1;

for(i=1;i<=n;i++){for(i=1;i<=10;i++){

t=t*i;printf(n%d!=%ld\nn,i,fact(i));

)}

return(t);

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China14

ProgramminginC

函數的遞歸調用

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China15

ProgramminginC

現函數的遞歸調用

?若函數在執(zhí)行過程中直接或間接地調用自身,

稱為函數的遞歸調用

?函數的遞歸定義)例如:n!=n*(n-1)!(n>l)

1n<=1

fact(n)={

n*fact(n-1)n>1

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,Ct遞歸TC2.0

鷺函數的遞歸調用ProgramminginC

?在遞歸調用中,調用函數又是被調用函數,

執(zhí)行遞歸函數將反復調用其自身。每調用一

次就進入新的一層。

?為了防止遞歸調用無終止地進行,必須在函

數內有終止遞歸調用的手段。常用的辦法是

加條件判斷,滿足某種條件后就不再作遞歸

調用,然后逐層返回。

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China17

ProgramminginC

£全局變量和局部變量___________

在函數中定義的變量是局部變量

在所有函數之外定義的變量是全局變量

形式參數是局部變量

西安電子科技大學計算機學院-SchoolofComputerScience&Engineering,XidianUniversity,China18

圓全局變量和局部變量ProgramminginC

局部變量只在定義它的函數中有意義

全局變量在所有函數中都有意義

intm9n;

intgcd(intx,inty)

main()

{

{

inti;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論