![大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用_第1頁](http://file4.renrendoc.com/view/aaa1e8a0c0d7c4c7825222f5d1fa08c7/aaa1e8a0c0d7c4c7825222f5d1fa08c71.gif)
![大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用_第2頁](http://file4.renrendoc.com/view/aaa1e8a0c0d7c4c7825222f5d1fa08c7/aaa1e8a0c0d7c4c7825222f5d1fa08c72.gif)
![大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用_第3頁](http://file4.renrendoc.com/view/aaa1e8a0c0d7c4c7825222f5d1fa08c7/aaa1e8a0c0d7c4c7825222f5d1fa08c73.gif)
![大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用_第4頁](http://file4.renrendoc.com/view/aaa1e8a0c0d7c4c7825222f5d1fa08c7/aaa1e8a0c0d7c4c7825222f5d1fa08c74.gif)
![大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用_第5頁](http://file4.renrendoc.com/view/aaa1e8a0c0d7c4c7825222f5d1fa08c7/aaa1e8a0c0d7c4c7825222f5d1fa08c75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
關(guān)于大學(xué)計算機(jī)C語言函數(shù)函數(shù)的定義和使用第一頁,共二十九頁,2022年,8月28日一、函數(shù)的概念
函數(shù)是形式上獨立、功能上完整的程序段(塊)。在C程序設(shè)計中常將一些常用功能模塊編寫成函數(shù)。函數(shù)可以完成特定的計算或操作處理功能。C程序由函數(shù)組成;函數(shù)在形式上是平行的,不允許嵌套定義;C程序只執(zhí)行主函數(shù),子函數(shù)必須通過主函數(shù)或其他子函數(shù)的調(diào)用才能被執(zhí)行;子函數(shù)不能調(diào)用主函數(shù)。實質(zhì)上,設(shè)計程序就是設(shè)計函數(shù)。5.1程序設(shè)計的藝術(shù)
(略)5.2函數(shù)的定義和使用第二頁,共二十九頁,2022年,8月28日二、函數(shù)的分類(一)從用戶的角度分1.標(biāo)準(zhǔn)函數(shù),即庫函數(shù)
ANSIC預(yù)先定義的用戶可直接使用的函數(shù);使用庫函數(shù)時,必須用#include把該函數(shù)所在的頭文件包含進(jìn)來。2.用戶自定義函數(shù)
是用戶為了解決各種應(yīng)用問題而自行設(shè)計的函數(shù)。用戶自定義函數(shù)必須先定義后使用!(二)從形式上分1.無參函數(shù):
即無形式參數(shù)的函數(shù)。如:getchar()2.有參函數(shù)
即帶有形式參數(shù)的函數(shù)如:putchar(ch)、sqrt(x)…第三頁,共二十九頁,2022年,8月28日三、函數(shù)的定義1、
無參函數(shù)的定義函數(shù)返回值類型函數(shù)名(void){
函數(shù)體}其中:函數(shù)返回值類型表示函數(shù)的返回結(jié)果值類型,函數(shù)只能有一個返回值,若函數(shù)無返回值即用void聲明;返回函數(shù)值需使用:return變量|表達(dá)式;
函數(shù)名由用戶按標(biāo)識符的命名規(guī)則自行給定,但不能與標(biāo)準(zhǔn)函數(shù)同名;
圓括號中的關(guān)鍵字void表示函數(shù)無形式參數(shù);
函數(shù)體是由實現(xiàn)函數(shù)功能必需的語句組成。第四頁,共二十九頁,2022年,8月28日例1:無參函數(shù)的定義。#include<stdio.h>voidPrintMessage(void){ printf("\t*******************\n"); printf("\tProgrammingisfun.\n"); printf("\t*******************\n");}intmain(void){ PrintMessage(); PrintMessage(); PrintMessage(); return0;}第五頁,共二十九頁,2022年,8月28日函數(shù)返回值類型函數(shù)名(數(shù)據(jù)類型參數(shù)1,數(shù)據(jù)類型參數(shù)2,…)
{
函數(shù)體}說明:
函數(shù)返回值類型、函數(shù)名、函數(shù)體的含義與無參函數(shù)相同;形式參數(shù)的格式如:數(shù)據(jù)類型形式參數(shù)1
形式參數(shù)(簡稱形參)必須單個獨立定義,形參是用來接收函數(shù)被調(diào)用時對應(yīng)實際參數(shù)傳遞的值或地址的,因此形參只能是變量,形參的存儲空間是函數(shù)被調(diào)用時臨時分配的動態(tài)空間、用完即釋放(不能永久存儲數(shù)據(jù))。2、有參函數(shù)的定義第六頁,共二十九頁,2022年,8月28日intAverage(intx,inty){
intresult; result=(x+y)/2;
returnresult;}函數(shù)首部函數(shù)體例2:定義有參函數(shù)計算兩個整數(shù)的平均。第七頁,共二十九頁,2022年,8月28日#include<stdio.h>intAverage(intx,inty){
intresult; result=(x+y)/2;
returnresult;}intmain(void){
inta1=12,b1=36,a2=24,b2=46,a3=5,b3=25;
intave1,ave2,ave3;;
ave1=Average(a1,b1);
ave2=Average(a2,b2); ave3=Average(a3,b3);
printf("Averageof%dand%dis%d.\n",a1,b1,ave1); printf("Averageof%dand%dis%d.\n",a2,b2,ave2); printf("Averageof%dand%dis%d.\n",a3,b3,ave3);
return0;}形參為整形變量x和y變量a1和b1為實際參數(shù)第八頁,共二十九頁,2022年,8月28日1、函數(shù)調(diào)用的一般形式:
函數(shù)名(實在參數(shù)表)其中:
形參(形式參數(shù))定義函數(shù)時在函數(shù)名后括號中聲明的參數(shù);實參(實際參數(shù))在主調(diào)函數(shù)中調(diào)用函數(shù)時函數(shù)名后面括號中的參數(shù)(或表達(dá)式);
調(diào)用函數(shù)時實參的個數(shù)、順序、類型必須與形參一一對應(yīng)(賦值相容);實參可是常量、變量、函數(shù)或表達(dá)式;
函數(shù)調(diào)用時實參和形參是采用單向值傳遞形式即將實參的數(shù)值或地址單向傳給對應(yīng)的形參。四、函數(shù)的調(diào)用第九頁,共二十九頁,2022年,8月28日有返回值時(即函數(shù)功能為某種計算功能)
返回值=函數(shù)名(實參表列);例如:以賦值語句形式調(diào)用函數(shù)如c=max(a,b);例如:作為另一個函數(shù)的參數(shù)形式調(diào)用函數(shù)如
c=max(max(a,b),c); printf("%d\n",max(a,b));無返回值時(即函數(shù)功能是完成某種操作或處理)例如:以表達(dá)式語句形式調(diào)用函數(shù)如
display(a,b);
函數(shù)名(實參表列);2、具體調(diào)用形式第十頁,共二十九頁,2022年,8月28日理解函數(shù)的調(diào)用
參數(shù)的傳遞intmain(void){
inta=12;
intb=24;
intave; ave=Average(a,b);
printf("Averageof%dand%dis%d.\n",a,b,ave); return0;}#include<stdio.h>
intAverage(intx,inty){intresult;result=(x+y)/2;returnresult;}第十一頁,共二十九頁,2022年,8月28日例3:定義求n!函數(shù),然后調(diào)用該函數(shù)求sum=1!+2!+3!+…m!的值。#include<stdio.h>doubleFac(intn){inti;doublep=1.0;for(i=1;i<n;i++){p*=i;}returnp;}
第十二頁,共二十九頁,2022年,8月28日intmain(void){inti,m;doublesum=0;printf(“Pleaseinputmdata:”);scanf(“%d”,&m);
for(i=1;i<=m;i++){sum+=Fac(i);}
printf(“Sum=%.0f\n”,sum);
return0;}第十三頁,共二十九頁,2022年,8月28日#include<stdio.h>intmax(intx,inty){ intz;
if(x>y) { z=x; } else { z=y; } return(z);}intmain(void){ inta=45,b=78,c=99,d,e;
d=max(a,b); printf("max1=%d\n",d); printf("max2=%d\n",max(a,b));
e=c-max(a,b); printf("e=%d\n",e); printf("max3=%d\n",max(max(a,b),c)); return0;}例4:函數(shù)定義與調(diào)用max1=78max2=78e=21max3=99該程序的輸出是什么?第十四頁,共二十九頁,2022年,8月28日例5:定義求素數(shù)的函數(shù),然后調(diào)用該函數(shù)求100到200之間的所有素數(shù)。#include<stdio.h>#include<math.h>intPrim(intx){inti,j,k;k=(int)sqrt(i);for(j=2;j<=k;j++){if(i%j==0){break;}}
第十五頁,共二十九頁,2022年,8月28日if(j>=k+1){return1;}else{return0;}}intmain(void){inti;for(i=100;i<=200;i++){if(Prim(i)){printf(“%d,”,i);}}return0;}
第十六頁,共二十九頁,2022年,8月28日五、函數(shù)原型聲明(prototype)1、為什么要聲明函數(shù)原型?
函數(shù)應(yīng)該先定義,然后才能調(diào)用。但是,如果函數(shù)的調(diào)用出現(xiàn)在函數(shù)的定義之前,就必須對被向前調(diào)用的函數(shù)進(jìn)行函數(shù)原型聲明,否則就會出現(xiàn)函數(shù)調(diào)用錯誤。2、聲明格式:
函數(shù)類型
函數(shù)名(類型名1形參數(shù)1,…);或
函數(shù)類型
函數(shù)名(類型名1,類型名2,…);注意:如果函數(shù)嚴(yán)格遵循先定義后調(diào)用原則就無需進(jìn)行函數(shù)原型聲明。第十七頁,共二十九頁,2022年,8月28日例6:函數(shù)原型聲明(先調(diào)用后定義函數(shù))#include<stdio.h>doubleFac(intn);intmain(void){…f1=Fac(m);…}doubleFac(intn){….}函數(shù)Fac的原型聲明先調(diào)用函數(shù)Fac函數(shù)Fac的定義出現(xiàn)在調(diào)用之后第十八頁,共二十九頁,2022年,8月28日#include<stdio.h>intAverage(intx,inty){
intresult; result=(x+y)/2;
returnresult;}intmain(void){
inta=12;
intb=24;
intave=Average(a,b);
printf("Averageof%dand%dis%d.\n",a,b,ave);
return0;}函數(shù)定義函數(shù)調(diào)用例7:以下函數(shù)為先定義后調(diào)用,不用聲明原型第十九頁,共二十九頁,2022年,8月28日#include<stdio.h>int
Average(intx,inty);/*聲明Average()函數(shù)*/
intmain(void){inta=12;intb=24;intave=Average(a,b); printf("Averageof%dand%dis%d.\n",a,b,ave);return0;}intAverage(intx,inty){
intresult; result=(x+y)/2;
returnresult;}例8:函數(shù)的原型聲明(先調(diào)用后定義)第二十頁,共二十九頁,2022年,8月28日intmain(){……a();…return0;}a
函數(shù){b();…return;}b函數(shù){……return;}①③④⑤⑥⑦②六、函數(shù)的嵌套調(diào)用
在調(diào)用一個函數(shù)的過程中,又調(diào)用其他的函數(shù),稱為函數(shù)的嵌套調(diào)用。
以下為函數(shù)調(diào)用與調(diào)用返回過程:第二十一頁,共二十九頁,2022年,8月28日例9:函數(shù)的嵌套調(diào)用#include<stdio.h>floatb(floatm){ floatn; n=m*10; return(n);}floatadd(floatx,floaty){ floatz; z=b(x)+y; return(z);}intmain(void){ floata=1.2,b=3.4,c; c=add(a,b); printf(“c=%f\n”,c);return0;}b函數(shù)main調(diào)用add函數(shù)調(diào)用b函數(shù)add函數(shù)結(jié)束第二十二頁,共二十九頁,2022年,8月28日七、函數(shù)的遞歸調(diào)用
在調(diào)用一個函數(shù)的過程中,出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。intf(intx){ inty,z; z=f(y); return(2*z);}f函數(shù)調(diào)用f函數(shù)f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù)第二十三頁,共二十九頁,2022年,8月28日例10:函數(shù)的遞歸調(diào)用有3個人坐在一起,問第3個人多少歲?他說比第2個人大2歲。問第2個人多少歲?他說比第1個人大2歲。最后問第1個人,他說是10歲。請問第3個人多大?分析:age(3)=age(2)+2;age(2)=age(1)+2;age(1)=10;歸納:n=1age(n)=10n>1age(n)=age(n-1)+2第二十四頁,共二十九頁,2022年,8月28日程序如下:#include<stdio.h>intage(intn){intc;if(n==1){c=10;}elseif(n>1){c=age(n-1)+2;}returnc;}intmain(void)
{printf(“%d”,age(3));return0;}程序執(zhí)行過程如下:intmain(void)
{printf(“%d”,age(3));}intage(3){intc;c=age(2)+2;returnc;}intage(2){intc;c=age(1)+2;returnc;}intage(1){intc;c=10;returnc;}第二十五頁,共二十九頁,2022年,8月28日課堂習(xí)題
#include<stdio.h>
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{ printf("%c",st[i]);
if(i<3) { i+=2; func2(i); }
}voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){ i+=2; func1(i);}
}
intmain(void)
{ inti=0;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 淺談對民間文藝演出團(tuán)體的管理與扶持
- 關(guān)于開挖 合同范本
- 公司助理合同范例
- 情感事務(wù)所創(chuàng)業(yè)計劃書模板
- 2025年度建筑工程施工合同勞務(wù)分包與材料采購合同管理
- 做門頭合同范本
- 企業(yè)聯(lián)銷合同范本
- 農(nóng)村樓房購買合同范本
- 2025年度國際物流人才培訓(xùn)與派遣合同
- 出版作品合同范本
- 四川省自貢市2024-2025學(xué)年上學(xué)期八年級英語期末試題(含答案無聽力音頻及原文)
- 2025-2030年中國汽車防滑鏈行業(yè)競爭格局展望及投資策略分析報告新版
- 2025年上海用人單位勞動合同(4篇)
- 二年級上冊口算題3000道-打印版讓孩子口算無憂
- 高中英語北師大版必修第一冊全冊單詞表(按單元編排)
- 2025年生物安全年度工作計劃
- 人教版數(shù)學(xué)六年級下冊全冊核心素養(yǎng)目標(biāo)教學(xué)設(shè)計
- 通用電子嘉賓禮薄
- 山西省煤炭運銷集團(tuán)有限公司王家?guī)X煤礦井筒工程施工組織設(shè)計
- 新概念英語第三冊課后習(xí)題答案詳解
- 有機(jī)化學(xué)共振論
評論
0/150
提交評論