![C語言函數(shù)部分課件_第1頁](http://file4.renrendoc.com/view/2b6d32adf2c1ce92efbcd441e6955498/2b6d32adf2c1ce92efbcd441e69554981.gif)
![C語言函數(shù)部分課件_第2頁](http://file4.renrendoc.com/view/2b6d32adf2c1ce92efbcd441e6955498/2b6d32adf2c1ce92efbcd441e69554982.gif)
![C語言函數(shù)部分課件_第3頁](http://file4.renrendoc.com/view/2b6d32adf2c1ce92efbcd441e6955498/2b6d32adf2c1ce92efbcd441e69554983.gif)
![C語言函數(shù)部分課件_第4頁](http://file4.renrendoc.com/view/2b6d32adf2c1ce92efbcd441e6955498/2b6d32adf2c1ce92efbcd441e69554984.gif)
![C語言函數(shù)部分課件_第5頁](http://file4.renrendoc.com/view/2b6d32adf2c1ce92efbcd441e6955498/2b6d32adf2c1ce92efbcd441e69554985.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
函數(shù)本章目標(biāo)理解模塊化設(shè)計(jì)思想掌握函數(shù)的定義和調(diào)用方法掌握C語言的參數(shù)傳遞方法掌握變量的作用域和存儲(chǔ)方式
函數(shù)是能夠完成一定任務(wù)的、相對獨(dú)立的程序段,可以被看作組成一個(gè)程序的邏輯單元。函數(shù)概述(1)簡化程序設(shè)計(jì)(2)便于調(diào)試和維護(hù)
什么是函數(shù)?
為什么使用函數(shù)?
標(biāo)準(zhǔn)函數(shù)(庫函數(shù)) 由系統(tǒng)提供的函數(shù),用戶不必自己定義,可以直接調(diào)用。
用戶自定義函數(shù) 根據(jù)函數(shù)所要完成的功能自己定義函數(shù)的格式。函數(shù)的分類(從使用角度)5.1函數(shù)概述函數(shù)的定義函數(shù)的定義形式{inti;longs;s=1;for(i=1;i<=n;i++)s=s*i;返回s值}fac()函數(shù)名intn形參變量longint返回值類型函數(shù)體函數(shù)的定義返回值類型符
函數(shù)名([形式參數(shù)列表]){
函數(shù)體}類型符都可是什么?intcharfloatdoublevoid函數(shù)名怎么起?標(biāo)識符命名字母或下劃線開頭,后面是字母、數(shù)字下劃線形參列表什么樣?可以為空類型變量多個(gè)參數(shù)用逗號分隔函數(shù)如何返回值?return表達(dá)式函數(shù)的定義返回值的類型怎樣確定?返回值的類型應(yīng)該與函數(shù)類型一致??梢杂卸鄺lreturn語句嗎?返回值的類型為空類型(void)??梢詻]有return語句(或return后的表達(dá)式為空)嗎?執(zhí)行到哪一條return語句,哪一條起作用。形參變量作為已知值函數(shù)的定義說明:(1)函數(shù)原型聲明語句最后的分號不能省略,其作用是表示該語句是進(jìn)行函數(shù)聲明而不是函數(shù)定義。(2)在原型聲明中,形式參數(shù)名可以省略。(3)如果被調(diào)用函數(shù)的定義出現(xiàn)在調(diào)用函數(shù)之前,可以不對被調(diào)用函數(shù)進(jìn)行原型聲明。(4)如果被調(diào)用函數(shù)已在所有函數(shù)定義之前進(jìn)行了原型聲明,則在各個(gè)調(diào)用函數(shù)中不必再對該函數(shù)進(jìn)行原型聲明。
math.h文件中的部分內(nèi)容int _Cdeclabs(intx);double _Cdeclcos
(doublex);double _Cdeclexp(doublex);double _Cdecllog10(doublex);double _Cdeclpow(doublex,doubley)double _Cdeclsin(doublex);double _Cdeclsqrt(doublex);標(biāo)準(zhǔn)函數(shù)的函數(shù)聲明#include<math.h>voidmain(){printf("%f",sqrt(4));}說明:(1)函數(shù)總是在某個(gè)函數(shù)體中被調(diào)用。(2)函數(shù)調(diào)用可以在結(jié)尾處加上分號,單獨(dú)作為一條語句。(3)對于有返回值的函數(shù),其調(diào)用也可以出現(xiàn)在某條語句或表達(dá)式中。函數(shù)調(diào)用與參數(shù)傳遞printf("%d",fac(3));5函數(shù)調(diào)用與參數(shù)傳遞函數(shù)的調(diào)用過程main(){……
s=fac(3);……}longfac(intn){
inti;longs;s=1;for(i=1;i<=n;i++)s=s*i;returns;}①②③④⑤函數(shù)調(diào)用與參數(shù)傳遞參數(shù)傳遞longfac(intn);main(){
……
s=fac(3);
……}longintfac(intn){
inti;longs;s=1;
for(i=1;i<=n;i++)
s=s*i;returns;}3intn參數(shù)傳遞。
程序代碼如下:
#include<stdio.h>voidsa,intb);/*聲明函數(shù)原型*/voidmain(){intx,y;x=10;y=20;
s);/*調(diào)用函數(shù)*/
printf("%d,%d",x,y);}voidsa,intb)/*定義函數(shù)*/{intt;t=a;a=b;b=t;}函數(shù)調(diào)用與參數(shù)傳遞程序輸出如下:10,20
函數(shù)調(diào)用與參數(shù)傳遞
數(shù)組參數(shù)
一維數(shù)組參數(shù)
定義voidprintarray(inta[]){…..}調(diào)用printarray(b);其中b為數(shù)組名二維數(shù)組參數(shù)定義voidprintarray(inta[][4]){…}
調(diào)用printarray(b)函數(shù)調(diào)用與參數(shù)傳遞函數(shù)的遞歸調(diào)用一個(gè)函數(shù)不僅可以調(diào)用其它函數(shù),還可以直接或間接調(diào)用它本身,這種調(diào)用過程被稱作遞歸(recursion)。
A(){A();}n!=(n-1)!*n使用fac求階乘,可表示成fac(n)=fac(n-1)*nlongintfac(intn){if(n==0)return1;elsereturnn*fac(n-1);}函數(shù)本次課小結(jié)理解模塊化設(shè)計(jì)思想掌握函數(shù)的定義和調(diào)用方法掌握C語言的參數(shù)傳遞方法函數(shù)與變量的作用域變量的作用域變量的存儲(chǔ)類別局部變量和全局變量一、變量的作用域一個(gè)C程序由多個(gè)函數(shù)構(gòu)成,每個(gè)函數(shù)內(nèi)部為一個(gè)范圍。吉林北京變量的分類:局部變量全局變量地區(qū)全國局部變量和全局變量三、全局變量1、全局變量又稱為外部變量,是在函數(shù)之外定義的變量,其作用范圍是從定義的位置開始到本源程序文件的結(jié)束。2、可使用全局變量獲得多于一個(gè)的返回值,增強(qiáng)函數(shù)之間的數(shù)據(jù)聯(lián)系通道。3、降低了函數(shù)的通用性(移植)局部變量和全局變量intc;g1(){inta;}intd;g2(){intb;}intc;F1(){intc;c=2;}F2(){printf("%d",c);}局部變量和全局變量變量的重名問題(1)不同函數(shù)內(nèi)的局部變量重名互不影響(2)全局變量與局部變量重名在定義局部變量的函數(shù)內(nèi),局部變量有效(3)全局變量重名寫出下面程序的運(yùn)行結(jié)果#include<stdio.h>voidf1(),f2(int);intk;voidmain(){intk;k=3;printf("%d\n",k);f1();f2(4);}voidf1(){printf("%d\n",k);}voidf2(intk){printf("%d\n",k);}函數(shù)與變量的作用域變量的作用域變量的存儲(chǔ)類別動(dòng)態(tài)與靜態(tài)存儲(chǔ)變量一、動(dòng)態(tài)存儲(chǔ)變量1、系統(tǒng)在運(yùn)行期間根據(jù)需要對存儲(chǔ)空間進(jìn)行動(dòng)態(tài)分配的變量稱為動(dòng)態(tài)存儲(chǔ)變量。2、形參變量是動(dòng)態(tài)存儲(chǔ)變量3、auto局部變量是動(dòng)態(tài)存儲(chǔ)變量
autointainta動(dòng)態(tài)與靜態(tài)存儲(chǔ)變量voidf1(){intc;c=4;}voidmain(){inta,b;a=b=3;f1();}main334f1動(dòng)態(tài)與靜態(tài)存儲(chǔ)變量二、靜態(tài)存儲(chǔ)變量1、系統(tǒng)在程序運(yùn)行期間為其分配固定存儲(chǔ)空間的變量。2、全局變量是靜態(tài)存儲(chǔ)變量3、static聲明局部變量是靜態(tài)存儲(chǔ)變量
staticinta動(dòng)態(tài)與靜態(tài)存儲(chǔ)變量voidf1(){staticintd=4;intc=3;d++;c++;}voidmain(){inta,b;a=b=3;f1();}main333f14d54動(dòng)態(tài)與靜態(tài)存儲(chǔ)變量intfun(inti){staticintp=1;p=p*i;returnp;}voidmain(){inti;for(i=1;i<=6;i++)printf(“%d\n”,fun(i);}1p2624120720voidmain(){inti,s=0;for(i=1;i<=6;i++)s=s+fun(i);printf(“%d”,s);}1!+2!+3!+4!+5!+6!函數(shù)應(yīng)用舉例1、使用函數(shù)求出所有的水仙花數(shù)分析:判斷范圍:100~999假如:有一個(gè)函數(shù)fun可直接判斷一個(gè)數(shù)是不是水仙花數(shù),那么怎么編?voidmain(){intk;for(k=100;k<=999;k++)if(k是水仙花數(shù))
printf(“%d\n”,k);}fun(k)==1函數(shù)應(yīng)用舉例voidmain(){intk;for(k=100;k<=999;k++)if(fun(k)==1)
printf(“%d\n”,k);}fun(intn)int{inta,b,c;a=n/100;b=(n-a*100)/10;c=a%10;if(a*a*a+b*b*b+c*c*c==n)return1;elsereturn0;}函數(shù)應(yīng)用舉例2、編寫一個(gè)函數(shù)能夠?qū)崿F(xiàn)strcmp的功能
printf("%d",strcmp("aa","cc"));
結(jié)果為:-2
strcmp(chars1[],chars2[])int{inti;for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)if(s1[i]-s2[i]!=0)break;returns1[i]-s2[i];}
函數(shù)應(yīng)用舉例3、編寫一個(gè)函數(shù)能夠?qū)崿F(xiàn)strlen的功能
printf("%d",strlen("aa"));
結(jié)果為:2
strlen(chars[])int{inti,count=0;for(i=0;s[i]!='\0';i++)count++;returncount;}函數(shù)應(yīng)用舉例4、編寫一個(gè)函數(shù)能夠?qū)崿F(xiàn)判斷任意一個(gè)數(shù)是否為素?cái)?shù)。for(I=2;I<=100;I++)if(prime(I))printf("%d",I);prime(intn)int{intj;for(j=2;j<=n-1;j++)if(n%j==0)return0;return1;}函數(shù)應(yīng)用舉例函數(shù)習(xí)題課1、試編制一個(gè)求最大公約數(shù)的函數(shù),并利用它求任意兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù)。gongyue(inta,intb)int{intr;r=m%n;while(r!=0){m=n;n=r;r=m%n;}
}returnn;函數(shù)應(yīng)用舉例voidmain(){inta,b;scanf("%d,%d",&a,&b);printf("gongyueis:%d,gongbeiis:%d",gongyue(a,b),a*b/gongyue(a,b));}例5-17編程處理一批數(shù)據(jù),要求:(1)隨機(jī)產(chǎn)生20個(gè)[10,99]范圍內(nèi)的整數(shù);(2)以每行5個(gè)數(shù)據(jù)的形式輸出這批整數(shù);(3)對這批數(shù)據(jù)進(jìn)行升序排列,并輸出排序后的結(jié)果;(4)計(jì)算這批數(shù)據(jù)的平均值;(5)分別統(tǒng)計(jì)大于、等于和小于平均值的數(shù)據(jù)個(gè)數(shù)。分別設(shè)計(jì)5個(gè)函數(shù)進(jìn)行數(shù)據(jù)的隨機(jī)生成、輸出、排序、計(jì)算平均值和統(tǒng)計(jì)。voidgetdata(inta[])voidprintdata(inta[],intn)voidsortdata(inta[])doubleavg(inta[])voidcount(inta[],doubleavg,intb[])voidmain(){inta[20],b[3];
doublex;getdata(a);
printdata(a,20);sort(a);printdata(a,20);x=avg(a);
count(a,x,b);printdata(b,3);}函數(shù)編程函數(shù)編程voidgetdata(inta[]){inti;randomize();for(i=0;i<20;i++)a[i]=random(90)+10;/*random(90)返回0~N的隨機(jī)整整*/}
函數(shù)編程voidprintdata(inta[],intn){inti;for(i=0;i<n;i++){if(i%5==0)printf("\n");printf("%d",a[i]);}}函數(shù)編程voidsort(inta[]){inti,j,k,t;for(i=0;i<19;i++){k=i;for(j=i+1;j<20;j++)if(a[k]>a[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}}函數(shù)編程doubleavg(inta[]){doubles;inti;s=0.0;for(i=0;i<n;i++)s=s+a[i];return(s/n);}函數(shù)編程voidcount(inta[],intn,floatx,intb[]){inti;b[0]=b[1]=b[2]=0;for(i=0;i<n;i++)if(a[i]>x)b[0]++;elseif(a[i]==x)b[1]++;elseb[2]++;}
2、選擇題在C語言程序中,
A、函數(shù)的定義可以嵌套,但調(diào)用不可以嵌套
B、函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套
C、函數(shù)的定義和函數(shù)的調(diào)用都不可以嵌套
D、函數(shù)的定義和調(diào)用均可以嵌套嵌套定義:voidA(){inta,b;voidB(){intc;…}…}在以下所列的各函數(shù)原型聲明中,正確的是:
A、voidplay(var:Integer,varb:Integer);B、voidplay(inta,b);C、voidplay(inta,intb);D、Subplay(aasinteger,basinteger)在函數(shù)調(diào)用語句f(a,b,(c,d));中,實(shí)參個(gè)數(shù)是_______。donut()函數(shù)接受一個(gè)整數(shù),并輸出若干個(gè)0,輸出0的個(gè)數(shù)等于所接受整數(shù)的值。函數(shù)原型為:random函數(shù)不接收任何數(shù)據(jù),但返回一個(gè)整數(shù)。max()函數(shù)接收一組整數(shù),并返回一個(gè)整數(shù)voiddonut(intn);intrandom();intmax(inta[]);charntochar(intn);程序閱讀題func(inta,intb){staticintm=0,I=2;I+=m+1;m=I+a+b;returnm;}voidmain(){intk=4,m=1,p;p=func(k,m);printf("%d",p);p=func(k,m);printf("%d",p);}4k1mp0m2I4a1b3884a1b121717程序閱讀題intf(intn){if(n==0)return1;elsereturnf(n-1)*n;}voidmain(){printf("%d",f(6));}f(6)=f(5)*6=f(4)*5*6=f(3)*4*5*6=f(2)*3*4*5*6=f(1)*2*3*4*5*6=f(0)*1*2*3*4*5*6=1*2*3*4*5*6=6!程序閱讀題voids(inta,intb){intt;t=a;a=b;b=t;printf("%d,%d\n",a,b);}voidmain(){intm=3,n=4;s(m,n);printf("%d,%d\n",m,n);}4a3b3m4n3a4b3m4n程序填空題下面的程序是統(tǒng)計(jì)高于平均分的人數(shù),輸入成績時(shí),-1表示輸入結(jié)束。_____fun(_______,intn){doublesum=0,avg;intI,count=______;for(I=0;I<n;I++)sum+=a[I];avg=_______;for(I=0;I<n;I++)if(________)count++;returncount;}main(){doublea[100],I=0;doublex;____________;while(x!=-1){a[I]=x;________;}printf("%d",_fun(____));}
intdoublea[]0sum/Ia[I]>avgscanf("%f",&x);I++;a,I宏定義#definesqr(x)x*xvoidmain(){printf("%d",sqr(2+3));}printf("%d",2+3*2+3);宏定義#definesqr(x)(x)*(x)voidmain(){printf("%d",sqr(2+3)/sqr(2+3));}printf("%d",(2+3)*(2+3)/(2+3)*(2+3));輸入10個(gè)數(shù),輸出其中與平均值之差的絕對值最小的數(shù)#include<stdio.h>________________voidmain(){floata[10],s,d,x;intI;for(I=0;I<10;I++)_________________________for(I=0;I<10;I++)s+=a[I];s/=10;d=fabs(a[0]-s);__________;for(I=1;I<10;++){if(fabs(a[
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年第12課從明朝建立到清軍人關(guān)-勤徑學(xué)升高中歷史必修上同步練測(統(tǒng)編版2019)
- 園林養(yǎng)護(hù)人員雇傭合同范文2025年
- 2025年伙伴合同終止協(xié)議
- 2025年企業(yè)辦公用品綜合供需合同
- 2025年官方物流配送協(xié)議書高清
- 2025年企業(yè)設(shè)備抵押擔(dān)保貸款合同
- 2025年動(dòng)物收養(yǎng)協(xié)議版式
- 2025年糧食供需雙方合同策劃大綱
- 2025年智能交通項(xiàng)目提案報(bào)告模式
- 2025年企業(yè)維修保養(yǎng)年合作協(xié)議
- 價(jià)格法價(jià)格違法行為和明碼標(biāo)價(jià)法律法規(guī)價(jià)格欺詐知識
- 中外歷史綱要上大事年表
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目監(jiān)理計(jì)劃
- 小學(xué)二年級(上冊)-乘法口訣-練習(xí)題-A4直接打印
- 采購行業(yè)的swot分析
- 二級公立醫(yī)院績效考核三級手術(shù)目錄(2020版)
- 振蕩指標(biāo)MACD(波段操作精解)
- 兒科常見病的病例討論和診斷思維培訓(xùn)課件
- 越野車改裝方案
- 無線電監(jiān)測系統(tǒng)設(shè)備采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- 鑄造熔煉爐安全檢查表
評論
0/150
提交評論