函數(shù)調(diào)用課件講解_第1頁
函數(shù)調(diào)用課件講解_第2頁
函數(shù)調(diào)用課件講解_第3頁
函數(shù)調(diào)用課件講解_第4頁
函數(shù)調(diào)用課件講解_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

第6章函數(shù)1.熟練掌握用戶函數(shù)的結(jié)構(gòu)、設(shè)計方法和調(diào)用方法;2.熟練掌握函數(shù)調(diào)用中數(shù)據(jù)傳遞的幾種方法;3.會設(shè)計簡單的函數(shù)和函數(shù)的嵌套調(diào)用學(xué)習(xí)目標(biāo)主要內(nèi)容函數(shù)的概念函數(shù)調(diào)用中數(shù)據(jù)傳遞的方法函數(shù)調(diào)用全局變量和局部變量6.4函數(shù)的調(diào)用一.函數(shù)調(diào)用的一般形式程序中通過函數(shù)名調(diào)用函數(shù),格式為:函數(shù)名(實參表列)

如果是調(diào)用無參函數(shù),則實參表列可以沒有,但括弧不能省略。實參表列各參數(shù)間用逗號隔開。實參與形參的個數(shù)、類型與順序應(yīng)保持一致,以保證實參與形參之間能正確地實現(xiàn)參數(shù)傳遞?!纠?-4】輸入半徑,輸出相應(yīng)的圓面積和相應(yīng)的球的體積。#include<stdio.h>floatf(floatr1){return(3.1415926*r1*r1);}voidmain()

{floatr;printf("Pleaseinputradius\n");scanf("%f",&r);printf("Area=%f\n",f(r));printf("Volume=%f\n",f(r)*4.0/3*r);}【例6

-5】編程輸出由“*”組成的三角形。*************************本例在程序結(jié)構(gòu)上顯得更為清晰,這就是模塊化結(jié)構(gòu)的特點。#include<stdio.h>voidpr(intn){intj;for(j=0;j<n;j++)printf("*");printf("\n");}voidmain(){inti;for(i=1;i<=5;i++)pr(2*i-1);}輸出一行n個*字符后換行調(diào)用pr()函數(shù)輸出五行*字符

二.函數(shù)聲明如果一個源程序包含了多個函數(shù),而函數(shù)間又有相互調(diào)用,那將會使“定義在前、使用在后”的原則難以實現(xiàn)。為此,C語言通過函數(shù)聲明語句解決這個問題。函數(shù)聲明語句的格式:類型說明符函數(shù)名(類型說明符形參變量1,類型說明符形參變量2,…);從形式上看,函數(shù)聲明就是在函數(shù)定義格式的基礎(chǔ)上去掉了函數(shù)體。通常,將函數(shù)聲明安排在源文件的開始部分。函數(shù)聲明中的形參變量名可以省略。例如:函數(shù)聲明intf(intx,inyy,floatz);

與intf(int,int,float);

是等價的。函數(shù)聲明是語句,這里的;不能少【例6-5】編程輸出由“*”組成的三角形。#include<stdio.h>voidpr();/*函數(shù)聲明語句,*/main(){inti;for(i=1;i<=5;i++)pr(2*i-1);}voidpr(intn){intj;for(j=0;j<n;j++)printf(“*”);printf(“\n”);}使用函數(shù)聲明以后,允許函數(shù)定義出現(xiàn)在函數(shù)調(diào)用之后三.函數(shù)調(diào)用中的值傳遞和地址傳遞

1.值傳遞

值傳遞就是在調(diào)用函數(shù)時,僅僅將實參的值傳遞給對應(yīng)的形參變量,實參變量本身并不參于函數(shù)的執(zhí)行過程,所以無法通過調(diào)用函數(shù)來改變實參變量的值。

形參變量的值被交換了

【例6-6】試分析下面的程序,從鍵盤依次輸入二個不同的整數(shù),判斷其輸出。#include<stdio.h>voidswap(int,int);voidmain(){inta,b;printf("PleaseInputTwoIntegers:");scanf("%d,%d",&a,&b);swap(a,b);printf("a=%d,b=%d\n",a,b);}voidswap(intx,inty){intt;t=x;x=y;y=t;printf("x=%d,y=%d\n",x,y);}實參變量還是原來的值2.地址傳遞在數(shù)組參與函數(shù)調(diào)用的情況下,采用的不是單個變量的值傳遞的方法。由于數(shù)組名代表了數(shù)組存儲的起始地址,所以,在函數(shù)調(diào)用時,實參把數(shù)組存儲的起始地址傳遞給形參,使其指向同樣的存儲區(qū)域,這就是地址傳遞。在執(zhí)行函數(shù)的過程中,凡是對形參數(shù)組元素的加工處理實際上就是對實參數(shù)組元素的加工處理。這是地址傳遞和值傳遞的本質(zhì)區(qū)別?!纠?-7】設(shè)計一個函數(shù)用以計算一維數(shù)組中所有元素值的總和。

#defineN5

#include<stdio.h>

sum(intarr[],int);

voidmain(){inta[N],i;printf("Pleaseinput%dintegers:\n",N);for(i=0;i<N;i++)scanf("%d",&a[i]);printf("SUM=%d\n",sum(a,N));}

intsum(intarr[],intsize){intj,s=0;for(j=0;j<size;j++)s+=arr[j];return(s);}函數(shù)聲明,形參變量為數(shù)組和數(shù)組元素個數(shù)函數(shù)調(diào)用,實參變量為數(shù)組名和數(shù)組元素個數(shù)#include<stdio.h>

四.函數(shù)的嵌套調(diào)用

函數(shù)的嵌套調(diào)用就是在一個函數(shù)(不是主函數(shù))中又調(diào)用

另一個函數(shù)。

【例6-8】編程求3個整數(shù)中的最大數(shù)。max3(int,int,int);max2(int,int);main(){inta,b,c;printf("PleaseInputThreeIntegers:");scanf("%d,%d,%d",&a,&b,&c);printf("MAX=%d\n",max3(a,b,c));}max3(intx1,inty1,intz1){intmax;max=max2(x1,y1);max=max2(max,z1);return(max);}max2(intx2,inty2){return(x2>y2?x2:y2);}

五.函數(shù)的遞歸調(diào)用

所謂遞歸調(diào)用是指一個函數(shù)在它的函數(shù)體內(nèi)直接或間接地調(diào)用該函數(shù)自身。

【例6-9】用遞歸方法求n!#include<stdio.h>longfac(intn){longf;if(n==0||n==1)f=1;elsef=n*fac(n-1);return(f);}voidmain(){intn;longy;printf

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論