




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
(中職)C語言程序設(shè)計案例教程第5章函數(shù)(1-2節(jié))教學課件(工信版)目錄5.1函數(shù)概述5.1.1函數(shù)定義5.1.2函數(shù)的返回值01025.2函數(shù)原型說明和調(diào)用5.2.1函數(shù)原型說明和函數(shù)原型定義5.2.2函數(shù)調(diào)用的一般形式和執(zhí)行過程5.2.3函數(shù)調(diào)用的參數(shù)傳遞本節(jié)要點:理解C語言函數(shù)的概念。理解函數(shù)原型說明和函數(shù)原型定義。掌握C語言函數(shù)的定義與調(diào)用。函數(shù)概念:
為了使程序的結(jié)構(gòu)更加清楚和減少代碼書寫的冗余,程序設(shè)計者總是會根據(jù)軟件的總體要求,把功能相同或類似的操作歸納成模塊的形式,這樣相對獨立的功能模塊在C語言中稱為函數(shù)。函數(shù)可分為包含在頭文件中的系統(tǒng)函數(shù)和用戶自定義函數(shù)。在函數(shù)中封裝了完成某一特定功能的程序代碼和數(shù)據(jù),實現(xiàn)一次功能上的抽象。在使用函數(shù)時只需要函數(shù)的原型和功能,就可以調(diào)用函數(shù),實現(xiàn)其相應(yīng)的功能,用戶不需要知道函數(shù)內(nèi)部的具體實現(xiàn)細節(jié),這樣大大提高了程序的開發(fā)效率。PART5.1函數(shù)概述函數(shù)使用原則:(1)界面清晰(3)沒有所屬關(guān)系(2)避免過長功能明確,函數(shù)之間數(shù)據(jù)傳遞越少越好。過大的函數(shù),處理的任務(wù)也復雜,結(jié)構(gòu)則也復雜,程序結(jié)構(gòu)不清楚,避免過大的函數(shù),如果有較多的任務(wù)時,可以把功能劃分地最簡化。在一個函數(shù)體中不允許定義其他的函數(shù)。5.1.1函數(shù)定義類型說明符
函數(shù)名([類型說明符
形參1,類型說明符
形參2,…類型說明符
形參n]){函數(shù)體語句組;}函數(shù)的數(shù)據(jù)類型函數(shù)的名稱類型形參表列自定義函數(shù)格式說明:01020304(1)類型說明符是函數(shù)的數(shù)據(jù)類型。(2)函數(shù)名用于標識一個函數(shù)的名字。(3)形參表列是由若干個形式參數(shù)組成的可以沒有,也可以有任意個。每一個形參都需要獨立進行聲明,多個參數(shù)以“,”分隔,在無形參時,形參表列兩端的()也不能省略。(4)函數(shù)體語句組是由實現(xiàn)函數(shù)功能的語句組成的包括聲明語句和其他的執(zhí)行語句。一般最后一條語句寫為返回語句。05(5)自定義函數(shù)是一個獨立的程序模塊可以寫在任意一個位置,一般寫在main()的后面,也可以出現(xiàn)在程序的開頭的位置。
5.1.2函數(shù)的返回值
返回語句格式:return返回值;02(1)返回值可以為常量、變量或表達式。該數(shù)值類型與函數(shù)的數(shù)據(jù)類型一致。返回語句如果在函數(shù)體中出現(xiàn)了多條,第一條會執(zhí)行,其后的所有返回語句都不會被執(zhí)行到,所以是無效的語句,函數(shù)體中最好只出現(xiàn)一條返回語句。(2)如果函數(shù)是無返回值類型void,可以不寫“return;”,如果有“return;”出現(xiàn),它的作用是將控制權(quán)交給主調(diào)函數(shù),沒有返回任何數(shù)值。01
例:5-1:函數(shù)定義實例,編寫程序定義一個可以求兩上數(shù)中較大數(shù)的函數(shù)。floatmax(floata,floatb){floatc;if(a>b)c=a;elsec=b;returnc;}
例:5-2:函數(shù)定義實例,編寫程序定義一個可以求長方形面積的函數(shù)。floatarea(floata,floatb){ returna*b;}
例:5-3:函數(shù)定義實例,定義無參數(shù)無返回值函數(shù),用于輸出不同的字符串。voidfun1(void){ printf("****************************\n");}voidfun2(void){ printf("*Howdoyoudo!*\n");}PART5.2函數(shù)原型說明和調(diào)用函數(shù)函數(shù)原型說明作用:01020304在程序的開頭部分通常要寫自定義函數(shù)的原型說明告訴系統(tǒng)自定義函數(shù)的返回值數(shù)據(jù)類型自定義函數(shù)的名稱以及需要幾個形式參數(shù)形式參數(shù)分別都是什么樣的數(shù)據(jù)類型后續(xù)的程序正確調(diào)用自定義函數(shù)函數(shù)原型說明格式:
類型說明符函數(shù)名([形參1類型說明符,形參2類型說明符…形參n類型說明符]);5.2.1函數(shù)原型說明和函數(shù)原型定義
例:floatmax(floata,floatb);floatarea(float,float);voidfun1();voidfun2();5-4:函數(shù)原型說明實例,分別對例5-1、5-2、5-3的自定義函數(shù)進行原型說明。5.2.2函數(shù)調(diào)用的一般形式和執(zhí)行過程①無參無返回值函數(shù)的調(diào)用:函數(shù)名();②有參有返回值函數(shù)的調(diào)用:變量名=函數(shù)名(實參);③有返回值函數(shù)的調(diào)用做為函數(shù)的參數(shù):變量名=函數(shù)名(函數(shù)名(實參));01函數(shù)調(diào)用執(zhí)行過程如下:①值傳遞。②執(zhí)行函數(shù)體。③返回。④釋放存儲單元。02
例:5-5:函數(shù)調(diào)用實例,編寫程序從鍵盤輸入兩個實數(shù),計算最大值并輸出。12#include<stdio.h>floatmax(float,float);voidmain(){floata,b,m;printf("從鍵盤輸入兩個實數(shù):");scanf("%f%f",&a,&b);m=max(a,b);printf("兩個數(shù)中的最大數(shù)是:%10.2f\n",m);}floatmax(floata,floatb){floatc;if(a>b)c=a;elsec=b;returnc;}函數(shù)調(diào)用過程分析:
……m=max(a,b);……
main()floatc;if(a>b)c=a;elsec=b;returnc;
max()①
②
③
圖5-1函數(shù)調(diào)用過程分析圖5.2.3函數(shù)調(diào)用的參數(shù)傳遞一種稱為值傳遞,另一種稱為地址傳遞。值傳遞方式所傳遞的是參數(shù)值。調(diào)用函數(shù)時,將實參的值計算出來傳遞給對應(yīng)的形參。在C語言中,實參對形參的值傳遞是單向傳遞,只能是實參的值傳遞給形參,而不能是形參傳遞給實參。函數(shù)被調(diào)用時,系統(tǒng)根據(jù)形參類型,為每個形參分配存儲單元,并將實參的值復制對應(yīng)的形參單元中,這樣形參就行到了實參的值,這就是所謂的值傳遞。形參和實參各自占用獨立的存儲空間。形參值的改變不會影響到實參,形參與實參的聯(lián)系僅在調(diào)用時的一次傳遞。01020304值傳遞分析:
例:#include<stdio.h>floatarea(floata,floatb){ returna*b;}voidmain(){floatl,w,s;printf("請輸入長方形的長和寬:");scanf("%f%f",&l,&w);s=area(l,w);printf("長方形的面積為:%10.2f\n",s);}實參:l30w10
形參:a30b10
5-6:參數(shù)值傳遞實例,編寫程序定義一個可以求長方形面積的函數(shù)。地址傳遞分析:地址值傳遞指的是調(diào)用函數(shù)時,實參是變量的地址值。因形參數(shù)據(jù)類型需要與實參數(shù)據(jù)類型一致,則形參為一個地址類型的指針。實參的地址值傳遞給形參后,形參就直接指向該變量,所以在函數(shù)體時,形參指針通過訪問地址的方式該變量,這樣可以改變變量的值。在地址傳遞過程中,依然保持實參向形參傳遞的單向性,形參不能改變實參的地址值,然而該地址所指向的變量的值會根據(jù)程序執(zhí)行的情況發(fā)生改變了。與返回普通變量值不同的是,通過返回地址值,可以在調(diào)用函數(shù)后返回多個值。
例:例5-7參數(shù)地址傳遞實例,編寫程序計算一維數(shù)組中所有元素值的總和。#include<stdio.h>#defineN5sum(int*arr,int);voidmain(){inta[N],i;printf("請輸入%d個整數(shù):",n);for(i=0;i<N;i++) scanf("%d",&a[i]);printf("這些整數(shù)之和為:%10d\n",sum(a,N));}sum(int*arr,intsize){intj,s=0;for(j=0;j<size;j++) s+=arr[j];returns;}地址傳遞與值的改變:(1)傳址方式傳遞數(shù)據(jù)的特點是形參指向了實參的地址,在被調(diào)用的函數(shù)中,如果對該形參所指向的存儲單元進行的任何修改,實質(zhì)上就是對實參的修改。(2)在C語言中使用地址傳遞時,實參可以是變量的地址,數(shù)組的地址或其他構(gòu)造類型數(shù)據(jù)的地址。當把數(shù)組地址傳遞給被調(diào)函數(shù)后,在被調(diào)函數(shù)中就可以處理數(shù)組的所有元素,從而實現(xiàn)大量數(shù)據(jù)的應(yīng)用和修改。單擊此處添加標題單擊此處添加標題(7)理解并掌握自定義函數(shù)原型聲明的書寫方法。(8)理解并掌握調(diào)用自定義函數(shù)原型聲明的書寫方法。(9)理解并掌握調(diào)用自定義函數(shù)格式的書寫方法和值傳遞
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 耐高電壓固態(tài)電解質(zhì)的制備與電極-電解質(zhì)界面研究
- 低反射率的超疏水光熱材料的制備與研究
- 呼吸衰竭健康教育
- 教育困擾案例分享
- 初中地理說課課件
- 帽子設(shè)計培訓課件
- VB-85247-生命科學試劑-MCE
- 初中努力班會課課件
- SARS-CoV-2-Mpro-IN-41-生命科學試劑-MCE
- Rifabutin-d6-Ansamycin-d-sub-6-sub-生命科學試劑-MCE
- 胸痛單元建設(shè)課件介紹
- 超市消防安全管理制度制度
- 酒店服務(wù)流程與空間布局優(yōu)化
- DB11∕T 2380-2024 城市軌道交通工程蓋挖法施工技術(shù)規(guī)程
- (2025)醫(yī)療護理員理論考試試題含答案
- 2025年廣西中考語文試題卷(含答案)
- 建設(shè)工程法律培訓
- 江蘇省南通市2024-2025學年高二下學期6月期末質(zhì)量監(jiān)測政治試題(含答案)
- (高清版)DB31∕T 1427-2023 首席質(zhì)量官評價規(guī)范
- 一級醫(yī)院醫(yī)保管理制度
- 2025年南京市中考數(shù)學真題試卷
評論
0/150
提交評論