




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言函數(shù)篇講解,教學(xué)目標:掌握函數(shù)的定義; 理解并運用函數(shù)的 調(diào)用; 理解函數(shù)的聲明。 教學(xué)重點:函數(shù)的定義; 函數(shù)的調(diào)用。 教學(xué)難點:函數(shù)的定義。 教學(xué)時數(shù):4學(xué)時,C語言函數(shù)篇講解,6.1 概述,printstar( ) printf(“*n”); main( ) printstar( ); printmessage( ); printstar( ); printmessage( ) printf(“ How do you do!n”);,例:,結(jié)果: * How do you do! *,C語言函數(shù)篇講解,說明:,1. 一個源程序文件由一個或多個函數(shù)組成,但必須有且僅有一個main函數(shù)
2、。 2. C程序的執(zhí)行從main函數(shù)開始,調(diào)用其他函數(shù)后,流程 回到main函數(shù),main函數(shù)結(jié)束整個函數(shù)的運行。 3. 由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可互相調(diào)用,但 不能調(diào)用main函數(shù)。同一個函數(shù)可以被一個或多個函 數(shù)調(diào)用任意多次。 4. 從用戶角度看,函數(shù)分為兩種: 標準函數(shù):即庫函數(shù),由系統(tǒng)提供。 用戶自定義函數(shù):用戶自己定義的。 5. 從函數(shù)形式看,函數(shù)分為兩種: 無參函數(shù)。 有參函數(shù)。,C語言函數(shù)篇講解,6.2 函數(shù)定義的一般形式,一 函數(shù)定義的一般形式 列表 類型標識符 函數(shù)名(類型1 形參1,類型2 形參2,) 聲明部分 語句 二 說明: 1.所有函數(shù)在定義時都是互相獨立的,
3、即不能嵌套定義; 2.類型標識符:說明了函數(shù)返回值的類型,當返回值為 int時,可省略不寫; 3.函數(shù)名:遵循標識符的命名規(guī)則;同一個函數(shù)中函數(shù)名必須唯一;,形式參數(shù),C語言函數(shù)篇講解,4.形參:只能是變量,每個形參前要有類型名;當定義的 函數(shù)沒有形參時叫作“無參函數(shù)” ;,形式:類型標識符 函數(shù)名() 聲明部分 語句 5.函數(shù)體:當聲明部分和語句都沒有時,稱為“空函數(shù)”, 空函數(shù)沒有任何實際作用; 形式:類型說明符 函數(shù)名( ) 例如:dummy( ) ,C語言函數(shù)篇講解,例如: int max ( int x, int y ) int z; z=xy?x:y; return(z); ,函數(shù)
4、名,返回值類 型,形參1,形參2,聲明部分,語句(執(zhí)行部分),函數(shù)體,C語言函數(shù)篇講解,6.3 函數(shù)參數(shù)和函數(shù)的值,一 形式參數(shù)和實際參數(shù) 實際參數(shù):調(diào)用函數(shù)時,函數(shù)名后面括弧中的參數(shù)稱為 “實際參數(shù)”(簡稱實參)。 形式參數(shù):定義函數(shù)時,函數(shù)名后面括弧中的參數(shù)稱為 “形式參數(shù)”(簡稱形參)。 例如:main( ) int a,b,c; scanf(“%d,%d”,C語言函數(shù)篇講解,二 關(guān)于形參與實參的說明:,1. 未出現(xiàn)函數(shù)調(diào)用時,形參變量不占內(nèi)存中的存儲 單元。在發(fā)生函數(shù)調(diào)用時,形參才被分配內(nèi)存單 元。調(diào)用結(jié)束后,形參所占的內(nèi)存單元被釋放。 2. 實參可以是常量、變量或表達式,必須有確定的
5、 值。在調(diào)用時,將實參的值賦給形參變量。 3. 實參與形參的類型應(yīng)相同或兼容。如果類型不一 致,則將實參轉(zhuǎn)換為和形參類型一致時再賦值。 例如:main( ) int c; c=max(3.5,5+2); printf(“Max is %d”,c); max(int x, int y) int z; z=xy?x:y; return(z); ,C語言函數(shù)篇講解,4. 實參變量對形參變量是單向的“值傳遞” 。即只能實參傳給形參,不能由形參傳回來給實參。 在內(nèi)存中,實參單元與形參單元是不同的單元。 main( ) int a=10, b=20; alter(a, b); printf(“a=%d,b
6、=%dn”,a,b); alter(int x, int y) int t; t=x; x=y; y=t; ,10,20,a,b,x,y,10,20,20,10,總結(jié):形參的值發(fā)生 改變,并不能 影響實參。,C語言函數(shù)篇講解,三 函數(shù)的返回值,1. 函數(shù)通過return語句返回函數(shù)的值,若不需要 返回函數(shù)值,可以不要return語句。 形式:return (表達式); return (變 量); return (常 量); 例如:return z;或return 0;或return (a+b); 2. 定義函數(shù)時,函數(shù)的返回值類型應(yīng)與return語句 中的表達式類型一致。如果不一致,則以函數(shù)
7、類型為準。,括號可省略,C語言函數(shù)篇講解,3. 若函數(shù)中沒有return語句,函數(shù)也會帶回一個不確定 的值,為了明確表示“不帶回值”,用關(guān)鍵字“void” 定義“無類型” (或稱“空類型”)。 例:void printstar( ) printf(“*n”); main( ) printstar( ); printmessage( ); printstar( ); void printmessage( ) printf(“ How do you do!n”); 這樣,系統(tǒng)就保證使函數(shù)不帶回任何值。,C語言函數(shù)篇講解,6.4 函數(shù)的調(diào)用,一 函數(shù)調(diào)用的一般形式 函數(shù)名(實參表列); 或 函數(shù)名(
8、); 說明:1.各實參間用逗號格開。 2.實參與形參的個數(shù)應(yīng)相同,類型應(yīng)一致。 3.被調(diào)用函數(shù)必須是已經(jīng)存在的函數(shù)。,有參函數(shù)的調(diào)用形式,無參函數(shù)的調(diào)用形式,C語言函數(shù)篇講解,二 函數(shù)調(diào)用的方式,按出現(xiàn)的位置分,有如下三種函數(shù)調(diào)用方式: 1. 函數(shù)語句。 函數(shù)不帶回值,只完成一定的操作。 2. 函數(shù)表達式。 要求函數(shù)帶回確定值,參加表達式運算。 3. 函數(shù)參數(shù)。 要求函數(shù)帶回確定值,作為一個參數(shù)。,例,main() int a=10,b=20,c=30,d,e; fun( ); d=max(a,b); printf(“max=%dn”, d); e=max(a,b)+c; printf(“ma
9、x=%dn”, e); printf(“max=%dn”,max(a,c); int max(int x, int y) return (xy?x;y); fun() printf(“*”);,C語言函數(shù)篇講解,三 對被調(diào)用函數(shù)的聲明,函數(shù)聲明的一般形式: 函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)類型2, ); 例: int max(int, int); 或 int max(int x, int y); 說明: 1.使用用戶定義函數(shù)時,要對函數(shù)進行聲明。 2.如果函數(shù)的返回值類型為int,可以不用聲明。,C語言函數(shù)篇講解,例:,main( ) float add(float x, float y);
10、 /*對被調(diào)函數(shù)聲明*/ float a,b,c; scanf(“%f,%f”, ,C語言函數(shù)篇講解,3. 若被調(diào)用函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前,可以 不必聲明。 例:float add(float x,float y) float z; z=x+y; return(z); /*返回z的值*/ main() float a,b,c; scanf(“%f,%f”, ,C語言函數(shù)篇講解,4. 若在函數(shù)定義之前, 在函數(shù)的外部已做了函數(shù) 聲明,則在各個主調(diào)函數(shù)中不必對所調(diào)用的函 數(shù)再作聲明。 例: char letter(char,char); float f(float,float); int i(
11、float,float); main() char letter(char c1,char c2) float f(float x,float y) int i(float j,float k) ,C語言函數(shù)篇講解,四 程序舉例,例1:用函數(shù)調(diào)用的方法求兩個數(shù)的和。,float add(float x, float y) return (x+y); main() float a,b,sum; scanf(“%f%f”, ,C語言函數(shù)篇講解,例2:通過函數(shù)調(diào)用的方式,求三個整數(shù)的最大值。,int maxnum(int x, int y, int z) int m; m=x; if(my) m=y
12、; if(mz) m=z; return m; main() int a, b, c, max; scanf(“%d%d%d”, ,C語言函數(shù)篇講解,a 函數(shù) 調(diào)用b函數(shù) a函數(shù)結(jié)束,main函數(shù) 調(diào)用a函數(shù) 結(jié)束,b 函數(shù) b函數(shù)結(jié)束,6.5 函數(shù)的嵌套調(diào)用,C語言不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù),即允許在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。例如:,C語言函數(shù)篇講解,main( ) int x,y,sum; x=5; y=6; sum=add(x,y); printf(“%d”,sum); 運行結(jié)果: 41,fun( int t) return t*t; ,add(int a ,in
13、t b) int z; z=a+fun(b); return z; ,漢諾塔問題 ( Hanoi),C語言函數(shù)篇講解,6.7 數(shù)組作為函數(shù)參數(shù),數(shù)組元素作函數(shù)參數(shù) 數(shù)組名作函數(shù)參數(shù) 多維數(shù)組名作函數(shù)參數(shù),C語言函數(shù)篇講解,一. 數(shù)組元素作函數(shù)實參,與變量作實參一樣,是單向值傳遞,C語言函數(shù)篇講解,例1:輸入一行字符,分別統(tǒng)計出其中大寫字母和 小寫字母的個數(shù)。,#include “stdio.h” main() char a30; int i, k=0, p=0; gets(a); for(i=0; ai!=0; i+) if(fun(ai)=1) k+; if(fun(ai)=2) p+; p
14、rintf(“大寫字母個數(shù):%d”, k); printf(“小寫字母個數(shù):%d”, p); ,int fun(char x ) if(x=A ,C語言函數(shù)篇講解,二. 數(shù)組名作函數(shù)實參,傳遞的是數(shù)組的首地址 (此時形參和實參指的是同一內(nèi)存單元),C語言函數(shù)篇講解,1. 用數(shù)組名作函數(shù)參數(shù),應(yīng)該在主調(diào)函數(shù)和被調(diào)函數(shù)分 別定義數(shù)組。 2. 實參數(shù)組名 形參數(shù)組名或指針變量 3. 實參數(shù)組與形參數(shù)組類型應(yīng)一致。 4. 系統(tǒng)將實參數(shù)組的首地址傳給形參數(shù)組 5. 用數(shù)組名作函數(shù)參數(shù)時,形參數(shù)組的改變也可以使實 參數(shù)組隨之改變。,例,int fun(int b ) main() int a10; fun
15、(a); ,形參還可以寫成int b10或int b20,C語言函數(shù)篇講解,例2:有一個一維數(shù)組score,內(nèi)放10個學(xué)生成績, 求平均成績。,float fun(float a10); main() float s10,ave; int i; for(i=0;i10;i+) scanf(“%f ”, ,float fun(float a10 ) int i; float sum=0,aver; for(i=0;i10;i+) sum=sum+ai; aver=sum/10; return aver; ,函數(shù)聲明,C語言函數(shù)篇講解,s0 s1 s2 s3 s4 s5 s6 s7 s8 s9,a
16、0 a1 a2 a3 a4 a5 a6 a7 a8 a9,sn和an指的是同一單元。,C語言函數(shù)篇講解,例3:編寫函數(shù),用選擇排序?qū)?shù)組中的10個數(shù)按 由小到大排序。,main() int a10, i; for(i=0; i10; i+) scanf(“%d”, ,void fun(int b ) int i, j, k, t; for(i=0; iaj) k=j; if(k!=i) t=ai; ai=ak; ak=t; ,C語言函數(shù)篇講解,三. 用多維數(shù)組名做函數(shù)參數(shù),int fun1(int b 4) int fun2(int c34) main() int a34; fun(a); f
17、un(a); ,C語言函數(shù)篇講解,局部變量:在一個函數(shù)內(nèi)部定義的變量。 有效范圍:只在本函數(shù)范圍內(nèi)有效。 全局變量:在函數(shù)外部定義的變量(又叫外部變 量)。 有效范圍: 從定義變量的位置開始到本源文件結(jié) 束,可以為本文件其他函數(shù)所共用。,6.8 局部變量和全局變量,變量按其作用域分類可分為局部變量和全局變量。,C語言函數(shù)篇講解,局部變量: float f1(int a) /*函數(shù)f1 */ int b , c; char f2(int x , int y ) /* 函數(shù)f2 */ int i , j ; main( ) /*主函數(shù) */ int m , n ; ,a,b,c 有效,x, y ,
18、 i , j 有效,m , n 有效,有效范圍:只在本函數(shù)范圍內(nèi)有效。,C語言函數(shù)篇講解,說明:,1. 函數(shù)內(nèi)部定義的變量(局部變量) , 只在該函數(shù)范 圍內(nèi)有效。(main主函數(shù)也不例外) 一個函數(shù)不能使用其他函數(shù)中定義的變量. 2. 不同函數(shù)中可以使用相同名字的變量,它們代表 不同的對象,互不干擾。 3. 形式參數(shù)也是局部變量。 4. 可以在復(fù)合語句中定義變量, 這些變量只在復(fù)合 語句中有效。,例,main() int a,b; : int c; c=a+b; : : ,局部變量c的作用范圍,局部變量 a、 b 的 作用范圍,C語言函數(shù)篇講解,全局變量: int p=1,q=5; floa
19、t f1(int a) char c1,c2; char f2(int x , int y ) main( ) /*主函數(shù)*/ int m,n; ,全局變量 c1, c2 的 作用范圍,全局變量p, q的作用范圍,有效范圍: 從定義變量的位置開始到本源文件結(jié)束,可以為本文件其他函數(shù)所共用。,C語言函數(shù)篇講解,注意:,當局部變量和全局變量重名時,則在局部變量的作用范圍內(nèi),全局變量不起作用。,int p=1,q=5; float fun(int a) int p; main( ) /*主函數(shù)*/ int m,n; ,全局變量 p 的作用 范圍,全局 變量 q的 作用 范圍,局部變量 p 的作用 范
20、圍,C語言函數(shù)篇講解,6.9 用static聲明局部變量,有時希望函數(shù)中的局部變量的值,在調(diào)用結(jié)束后不消失,而保留原值。即其占用的存儲單元不釋放,下次調(diào)用該函數(shù)時,該變量已有值(上一次調(diào)用結(jié)束時的值)。這時應(yīng)定義該局部變量為“局部靜態(tài)變量”,用static加以聲明。,C語言函數(shù)篇講解,f(int a) auto b=0;static c=3; b=b+1;c=c+1; return(a+b+c); main( ) int a=2, i ; for(i=0;i3;i+)printf(“%d”,f(a); 運行結(jié)果為 7 8 9,例:,0,4,4,0,1,3,b c,第一次調(diào)用開始,第一次調(diào)用結(jié)束,第二次調(diào)用開始,第二次調(diào)用結(jié)束,5,1,C語言函數(shù)篇講解,對局部靜態(tài)變量的4點說明:,1、局部靜態(tài)變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。而自動變量(局部動態(tài)變
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSM 0060-2024“領(lǐng)跑者”評價技術(shù)要求 微型往復(fù)活塞空氣壓縮機
- 二零二五年度競業(yè)禁止期限及競業(yè)限制解除后的競業(yè)禁止責任及賠償執(zhí)行及監(jiān)督合同
- 二零二五年度金融衍生品合同印花稅稅率變動與市場創(chuàng)新
- 二零二五年度手房過戶二手房交易中介服務(wù)合同協(xié)議
- 二零二五年度智慧能源合伙經(jīng)營股權(quán)協(xié)議書
- 二零二五年度文藝演出宣傳推廣合作協(xié)議
- 2025年度智能債權(quán)轉(zhuǎn)讓服務(wù)合同不可適用借款合同解析
- 2025年度生態(tài)魚塘資源租賃管理合同
- 二零二五年度商鋪租賃糾紛解決機制合同
- 二零二五年度跨區(qū)域集體合同-XX行業(yè)職工勞動條件提升協(xié)議
- 2023年甘肅省卷中考英語真題
- 最全-房屋市政工程安全生產(chǎn)標準化指導(dǎo)圖冊
- 《魅力教師的修煉》讀書心得體會4篇
- 雙壁鋼圍堰施工與管理
- 住院精神疾病患者攻擊行為預(yù)防-2023中華護理學(xué)會團體標準
- 2016年百貨商城商場超市企劃全年活動策劃方案模板
- 民航法規(guī)與實務(wù)PPT全套教學(xué)課件
- 富血小板血漿的臨床應(yīng)用
- 2023年湖南食品藥品職業(yè)學(xué)院高職單招(英語)試題庫含答案解析
- GB/T 39096-2020石油天然氣工業(yè)油氣井油管用鋁合金管
- 爐外精煉說課
評論
0/150
提交評論