![用函數(shù)實現(xiàn)模塊化程序設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/45fb34c1-46c9-4685-b918-2b32362258f0/45fb34c1-46c9-4685-b918-2b32362258f01.gif)
![用函數(shù)實現(xiàn)模塊化程序設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/45fb34c1-46c9-4685-b918-2b32362258f0/45fb34c1-46c9-4685-b918-2b32362258f02.gif)
![用函數(shù)實現(xiàn)模塊化程序設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/45fb34c1-46c9-4685-b918-2b32362258f0/45fb34c1-46c9-4685-b918-2b32362258f03.gif)
![用函數(shù)實現(xiàn)模塊化程序設(shè)計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/45fb34c1-46c9-4685-b918-2b32362258f0/45fb34c1-46c9-4685-b918-2b32362258f04.gif)
![用函數(shù)實現(xiàn)模塊化程序設(shè)計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/45fb34c1-46c9-4685-b918-2b32362258f0/45fb34c1-46c9-4685-b918-2b32362258f05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、用函數(shù)實現(xiàn)模塊化程序設(shè)計用函數(shù)實現(xiàn)模塊化程序設(shè)計( (一)一)制作:張佩婷第五組答疑:李再航講解:王越CONTENTS1什么是函數(shù)2如何定義函數(shù)3函數(shù)的參數(shù)與函數(shù)的值4函數(shù)的調(diào)用5局部變量與全局變量6內(nèi)部函數(shù)與外部函數(shù)走進函數(shù)走進函數(shù)1、函數(shù)是C程序的基本單位,一個C程序可由一個主函數(shù)和若干個其他函數(shù)構(gòu)成。由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用,且同一個函數(shù)可以被多次調(diào)用;mainbcdfeaghijPART12、函數(shù)的分類(1)用戶使用角度庫函數(shù):由系統(tǒng)提供,不必自己定義;用戶自己定義的函數(shù):解決用戶的需要,自定義。(2)函數(shù)的形式無參函數(shù):一般用來執(zhí)行指定的一組操作,可以帶回或不帶回
2、函數(shù) 值,但不帶回函數(shù)值居多; 有參函數(shù):主函數(shù)在調(diào)用被調(diào)用函數(shù)時,通過參數(shù)向被調(diào)用函數(shù)傳遞 數(shù)據(jù),一般情況下,執(zhí)行被調(diào)用函數(shù)時會得到一個函數(shù)值, 供主調(diào)函數(shù)使用。Q1. 以下關(guān)于函數(shù)的敘述中正確的是【 】。 A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行 B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)拇?開始執(zhí)行 C)C語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,在 此結(jié)束 D)main可作為用戶標識符,用以定義任意一個函數(shù) C類型名 函數(shù)名()函數(shù)體或類型名 函數(shù)名(void)函數(shù)體如何定義函數(shù)如何定義函數(shù) void Hello() printf (Hello,wor
3、ld n); 無參函數(shù)PART2如何定義函數(shù)如何定義函數(shù)類型名 函數(shù)名(形式參數(shù)表列) 函數(shù)體int max(int a, int b) if (ab) return a; else return b; 有參函數(shù)PART2如何定義函數(shù)如何定義函數(shù) void dummy() 在編寫程序的開始階段,可以在將來準備擴充功能的地方寫上一個空函數(shù)(函數(shù)名采取將來使用的實際函數(shù)名),先用空函數(shù)占一個位置,等以后擴充程序功能時用一個編好的函數(shù)代替它,使程序結(jié)構(gòu)清楚,可讀性強,以后擴充新功能方便,對程序的結(jié)構(gòu)也影響不大。類型名 函數(shù)名 空函數(shù)PART2如何定義函數(shù)如何定義函數(shù) C語言要求,在程序中用到的所有函
4、數(shù),必須“先定義,后使用”. 函數(shù)體包括聲明部分和語句部分. 在定義函數(shù)時要用“類型識別符”(即類型名)指定函數(shù)值的類型,即指定函數(shù)帶回來的值的類型.PART2Q2. 定義一個void型函數(shù)意味著調(diào)用該函數(shù)時,函數(shù)【 】 A)通過return返回一個用戶所希望的函數(shù)值 B)返回一個系統(tǒng)默認值 C)沒有返回值 D)返回一個不確定的值 CQ3. 若程序中定義函數(shù) float myadd(float a, float b) return a+b; 并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)對該函數(shù)進行說明。以下說明 中錯誤的是 【 】。 A)float myadd( float a,b); B)floa
5、t myadd(float b, float a); C)float myadd(float, float); D)float myadd(float a, float b);A 形式參數(shù)與實際參數(shù)PART3函數(shù)的參數(shù)與函數(shù)的值函數(shù)的參數(shù)與函數(shù)的值形式參數(shù):在定義函數(shù)時函數(shù)名后面括號中的變量名稱為“形式參數(shù)”(”虛擬參數(shù)“)實際參數(shù):在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括號中的參數(shù)稱為“實際參數(shù)”。注:實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的量,在進行函數(shù)調(diào)用 時, 它們都必須具有確定的值,以便把這些值傳送給形參。因此應(yīng)預(yù)先用賦值、輸入等辦法使實 參獲得確定值;形參變量只有
6、在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。 因 此,形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量;實參和形參在數(shù)量上,類型上,順序上應(yīng)嚴格一致,否則會發(fā)生類型不匹配”的錯誤;函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的 值反 向地傳送給實參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實參中的值不會變化。Q4、 若函數(shù)調(diào)用時的實參為變量時,以下關(guān)于函數(shù)形參和實參的敘述中正確的是【 】。 A)函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元 B)形參只是形式上的存在,不占用具體存儲單元 C)同名的實參和形參占同一存儲單元
7、 D)函數(shù)的形參和實參分別占用不同的存儲單元 D編寫函數(shù),計算兩個整數(shù)之差的絕對值,并將差值返回調(diào)用函數(shù)。在主函數(shù)中輸入兩個整數(shù),調(diào)用函數(shù),并輸出絕對值。 int f(int a,int b) int c; c=a-b; if(c0) c=(-1)*c; return c; main() int f(int a,int b); int x,y,z; scanf(%d%d,&x,&y); z=f(x,y); printf(%dn,z);例1PART3函數(shù)的參數(shù)與函數(shù)的值函數(shù)的參數(shù)與函數(shù)的值 函數(shù)的返回值函數(shù)的值是指函數(shù)被調(diào)用之后,執(zhí)行函數(shù)體中的程序段所取得的并返回給主調(diào)函數(shù)的值,
8、如調(diào)用正弦函數(shù)取得正弦值。注:函數(shù)的值只能通過return語句返回主調(diào)函數(shù)。 return語句的一般形式為 return 表達式; return (表達式); 該語句的功能是計算表達式的值,并返回給主調(diào)函數(shù)。在函數(shù)中允許有多個return語句, 但每次調(diào)用只能有一個return 語句被執(zhí)行,因此只能返回一個函數(shù)值。函數(shù)值的類型和函數(shù)定義中函數(shù)的類型應(yīng)保持一致。如果兩者不一致,則以函數(shù)類型為 準,自動進行類型轉(zhuǎn)換。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void” 一旦函數(shù)被定義為空類型后,就不能在主調(diào)函數(shù)中使用被調(diào)函數(shù)的函數(shù)值了Q5. C語言中函數(shù)返回值的類型是由【 】決定
9、。 A)return語句中的表達式類型 B)調(diào)用函數(shù)的主調(diào)函數(shù)類型 C)調(diào)用函數(shù)時臨時 D)定義函數(shù)時所指定的函數(shù)類型D有如下程序 int func(int a,int b) return(a+b); main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(%dn,r); 該程序的輸出的結(jié)果是( )。 A. 12 B. 13 C. 14 D.15 例2 Dl 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 eg:printf_star()l 函數(shù)參數(shù)函數(shù)參數(shù) eg:m=max(a,max(b,c)l 函數(shù)表達式函數(shù)表達式eg:c=max(a,b) 函數(shù)的調(diào)用方式(
10、在程序中出現(xiàn)的形式和位置)函數(shù)的調(diào)用函數(shù)的調(diào)用PART4函數(shù)的調(diào)用函數(shù)的調(diào)用PART4l 對被調(diào)用函數(shù)的聲明和函數(shù)原型 在主調(diào)函數(shù)中調(diào)用某函數(shù)之前應(yīng)對該被調(diào)函數(shù)進行說明(聲明),這與使用變量之前要先進行變量說明是一樣的。在主調(diào)函數(shù)中對被調(diào)函數(shù)作說明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型,以便在主調(diào)函數(shù)中按此種類型對返回值作相應(yīng)的處理。 其一般形式為: 類型說明符 被調(diào)函數(shù)名(類型 形參,類型 形參); 或為: 類型說明符 被調(diào)函數(shù)名(類型,類型); 括號內(nèi)給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進行檢錯,以防止可能出現(xiàn)的錯誤。注: 如果被調(diào)函數(shù)的返回值是整型或字符型時,可
11、以不對被調(diào)函數(shù)作說明,而直接調(diào)用。 當被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時,在主調(diào)函數(shù)中也可以不對被調(diào)函數(shù)再作說明而直接調(diào)用。 如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個函數(shù)的類型,則在以后的各主調(diào) 函數(shù)中,可不再對被調(diào)函數(shù)作說明。 對庫函數(shù)的調(diào)用不需要再作說明,但必須把該函數(shù)的頭文件用include命令包含在 源文件前部。 #include #include #include函數(shù)的調(diào)用函數(shù)的調(diào)用PART4l 對被調(diào)用函數(shù)的聲明和函數(shù)原型Q6.若有以下程序 #include void f(int n); main() void f(int n); f(5); void f(int n) p
12、rintf(%dn,n); 則以下敘述中不正確的是( )。 A. 若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f B. 若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其后的其它函數(shù)中都可以正確調(diào)用 函數(shù)f C. 對于以上程序,編譯時系統(tǒng)會提示出錯信息:提示對f函數(shù)重復說明 D. 函數(shù)f無返回值,所以可用void將其類型定義為無值型CPART4函數(shù)的調(diào)用函數(shù)的調(diào)用 語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級函數(shù)和下一級函數(shù)的問題。但是語言允許在一個函數(shù)的定義中出現(xiàn)對另一個函數(shù)的調(diào)用。其關(guān)系如圖所示。main函數(shù)調(diào)用a函數(shù)b函數(shù)a函數(shù)調(diào)用b函數(shù)結(jié)束1423875
13、69l 函數(shù)的嵌套調(diào)用下列程序的運行結(jié)果是(下列程序的運行結(jié)果是( )。)。 main( ) int i=3; printf(%d,%d,%dn,i,i+,i+); A. 5,5,4 B. 3,4,5 C. 3,3,4 D. 5,4,3在函數(shù)調(diào)用中還應(yīng)該注意的一個問題是求值順序的問題。所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統(tǒng)的規(guī)定不一定相同。應(yīng)特別注意的是,無論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實參表中實參的順序相同。例4D#includeint Prime(int n) int i; for(i=2;in) if
14、(in) if(Prime(int n)=1) if(Prime(int n)=1)PART5局部變量與全局變量局部變量與全局變量變量有效性的范圍稱變量的作用域。語言中所有的量都有自己的作用域。變量說明的方式不同,其作用域也不同。語言中的變量,按作用域范圍可分為兩種,即局部變量和全局變量。u局部變量:也稱為內(nèi)部變量。局部變量是在函數(shù)內(nèi)作定義說明的。其作用域僅限于函數(shù)內(nèi), 離開該函數(shù)后再使用這種變量是非法的。u全局變量:也稱為外部變量,它是在函數(shù)外部定義的變量。它不屬于哪一個函數(shù),它屬于一個源程序文件。其作用域是整個源程序。在函數(shù)中使用全局變量,一般應(yīng)作全局變量說明。只有在函數(shù)內(nèi)經(jīng)過說明的全局變
15、量才能使用。全局變量的說明符為extern。但在一個函數(shù)之前定義的全局變量,在該函數(shù)內(nèi)使用可不再加以說明。局部變量Eg: main() int i=2,j=3,k; k=i+j; int k=8; printf(%dn,k); printf(%dn,k); PART5局部變量與全局變量局部變量與全局變量注:主函數(shù)中定義的變量也只能在主函數(shù)中使用,不能在其它函數(shù)中使用。形參變量是屬于被調(diào)函數(shù)的局部變量,實參變量是屬于主調(diào)函數(shù)的局部變量。允許在不同的函數(shù)中使用相同的變量名,它們代表不同的對象,分配不同的單元, 互不干擾,也不會發(fā)生混淆。在復合語句中也可定義變量,其作用域只在復合語句范圍內(nèi)。PART
16、5局部變量與全局變量局部變量與全局變量全局變量外部變量與局部變量不同名輸入正方體的長寬高l,w,h。求體積及三個面x*y,x*z,y*z的面積。 int s1,s2,s3; int vs( int a,int b,int c) int v; v=a*b*c; s1=a*b; s2=b*c; s3=a*c; return v; main() int v,l,w,h; printf(ninput length,width and heightn); scanf(%d%d%d,&l,&w,&h); v=vs(l,w,h); printf(nv=%d,s1=%d,s2=%d,s
17、3=%dn,v,s1,s2,s3); 外部變量與局部變量同名。 int a=3,b=5; /*a,b為外部變量*/ max(int a,int b) int c; c=ab?a:b; return(c); main() int a=8; printf(%dn,max(a,b); 如果同一個源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即它不起作用。若不對全局變量賦值,則系統(tǒng)默認為0.PART5內(nèi)部函數(shù)與外部函數(shù)內(nèi)部函數(shù)與外部函數(shù)內(nèi)部函數(shù):又稱靜態(tài)函數(shù)。若一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。 在定義內(nèi)部函數(shù)時,在函數(shù)名和函數(shù)類型的前邊加static static 類型名 函數(shù)名(形參表);外部函數(shù):如果在定義函數(shù)時,在函數(shù)首部的最左端加關(guān)鍵字extern,則此函數(shù)是外部函數(shù), 可供其他文件調(diào)用.例: extern int fun (int a,int b)程序設(shè)計第五組 答疑李再航01函數(shù)說明和函數(shù)調(diào)用語句之間有矛盾!請找出下面程序中的錯誤:02void print1()printf(a);printf(b);void print2()printf(c);print1();printf(d);void print3()printf(e);print2();printf(f);void main()print3();該程序的執(zhí)行
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《100 以內(nèi)的加法和減法(二)-不進位加》(說課稿)-2024-2025學年二年級上冊數(shù)學人教版
- 13《人物描寫一組》第二課時《巧用多種方法寫“活”身邊人物》說課稿-2023-2024學年五年級語文下冊統(tǒng)編版
- Revision Being a good guest Period 2(說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 2024秋九年級語文上冊 第五單元 18《懷疑與學問》說課稿 新人教版
- Unit5 What will you do this weekend?Lesson25(說課稿)-2023-2024學年人教精通版英語四年級下冊
- 5 國家機構(gòu)有哪些 第三課時 《國家機關(guān)的產(chǎn)生》 說課稿-2024-2025學年道德與法治六年級上冊統(tǒng)編版
- 《 關(guān)注新詞新語讓語言鮮活生動》說課稿 2024-2025學年統(tǒng)編版高中語文必修上冊
- 1~5的認識和加減法《第幾》(說課稿)-2024-2025學年一年級上冊數(shù)學人教版
- Module 9 Unit 1 It's winter.(說課稿)-2024-2025學年外研版(一起)英語二年級上冊
- 1《水到哪里去了》說課稿-2023-2024學年科學五年級下冊冀人版
- 西安經(jīng)濟技術(shù)開發(fā)區(qū)管委會招聘筆試真題2024
- 2025屆浙江省高三歷史選考總復習模擬測試(八)歷史試題(含答案)
- 六年級2025寒假特色作業(yè)
- 2025年江蘇轄區(qū)農(nóng)村商業(yè)銀行招聘筆試參考題庫含答案解析
- 人教版六年級數(shù)學下冊完整版教案及反思
- 少兒財商教育講座課件
- (八省聯(lián)考)云南省2025年普通高校招生適應(yīng)性測試 物理試卷(含答案解析)
- 2025藥劑科工作人員工作計劃
- 春節(jié)節(jié)后安全教育培訓
- 2025年新高考數(shù)學一輪復習第5章重難點突破02向量中的隱圓問題(五大題型)(學生版+解析)
- 水土保持方案投標文件技術(shù)部分
評論
0/150
提交評論