TP10 帶參數(shù)的函數(shù).ppt_第1頁
TP10 帶參數(shù)的函數(shù).ppt_第2頁
TP10 帶參數(shù)的函數(shù).ppt_第3頁
TP10 帶參數(shù)的函數(shù).ppt_第4頁
TP10 帶參數(shù)的函數(shù).ppt_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十章,帶參數(shù)的函數(shù),2,回顧 2-1,函數(shù)是程序中的一個(gè)相對(duì)獨(dú)立的單元或模塊 使用函數(shù)帶來的好處: 程序更清晰、易維護(hù)、分模塊方便設(shè)計(jì)與開發(fā)、提高代碼的重用性 語言提供了極為豐富的內(nèi)置函數(shù),要使用這些內(nèi)置函數(shù),需要在程序前包含相應(yīng)的頭文件 自定義函數(shù)是用戶在程序中根據(jù)需要而編寫的函數(shù),3,回顧 2-2,函數(shù)的結(jié)構(gòu)包括:返回值類型、函數(shù)名、參數(shù)列表、函數(shù)體 函數(shù)原型說明以便向編譯器指出該函數(shù)使用什么樣的格式和語法 函數(shù)調(diào)用時(shí)程序控制流將轉(zhuǎn)向被調(diào)函數(shù),被調(diào)函數(shù)執(zhí)行結(jié)束時(shí),控制流返回主調(diào)函數(shù) return 語句用于向調(diào)用函數(shù)返回值,4,本章目標(biāo),理解變量的作用域 理解變量的存儲(chǔ)類型 理解兩種參數(shù)傳

2、遞的方式:傳值、引用 熟悉帶參函數(shù)的調(diào)用 熟練使用數(shù)組作為函數(shù)參數(shù),5,變量的作用域 4-1,作用域是某些事物起作用或有效的區(qū)域。,限于陸地,限于海洋,限于空中,6,程序中變量也有不同的使用范圍,稱為變量的作用域。變量的作用域決定變量的可訪問性,變量的作用域 4-2,void displayDiscount() float discount_amt; . . . . . . . . . ,局部變量:不能在函數(shù)外使用,float discount_amt; void main() . . . . . . void displayDiscount() . . . . . . ,全局變量:可以在整個(gè)

3、程序中使用,7,變量的作用域 4-3,#include void addNumbers() int num1,num2,sum; printf(n 請(qǐng)輸入兩個(gè)數(shù):); scanf(%d %d, ,0,45,請(qǐng)輸入兩個(gè)數(shù):56 45,子函數(shù)中sum的值是101,主函數(shù)中sum的值是 0,56,101,8,變量的作用域 4-4,#include int sum=0; void addNumbers() int num1,num2; printf(n 請(qǐng)輸入兩個(gè)數(shù):); scanf(%d %d, ,0,45,請(qǐng)輸入兩個(gè)數(shù):56 45,子函數(shù)中sum的值是101,主函數(shù)中sum的值是101,56,10

4、1,9,變量的作用域4-5,void main() int f1(),f2(); f1(); f2(); printf(“y=%fn”,y); ,#include int x=100; float y=66.6; f1( ) float y=0; y+; printf(“x=%dt”,x); printf(“y=%ft”,y); int z=1; f2( ) int i; for(i=1;i5;i+) putchar(*); printf(n z=%dt ,z); ,x=100 y=1.000000,*,z=1 y=66.600000,10,變量的作用域4-6,#include int d=1

5、; /全局變量d fun(int p) int d=5; /局部變量d d+=p+; /使用局部變量d printf(%d,d); main() int a=3; /局部變量a fun(a); d +=a+; /使用全局變量d printf(%d,d); ,3,1,3,5,8,4,8,1,4,4,4,11,通 知,本周四1-2 節(jié)在經(jīng)貿(mào)樓208上機(jī)! 注:補(bǔ)本周一1-2節(jié),12,存儲(chǔ)類型 2-1,變量的存儲(chǔ)方式可分為“靜態(tài)存儲(chǔ)”和“動(dòng)態(tài)存儲(chǔ)”兩種 靜態(tài)存儲(chǔ)變量是一直存在的,而動(dòng)態(tài)存儲(chǔ)變量則時(shí)而存在時(shí)而消失 這種由于變量存儲(chǔ)方式不同而產(chǎn)生的特性稱為變量的生存期 生存期表示了變量存在的時(shí)間,13,

6、存儲(chǔ)類型 2-2,14,靜態(tài)局部變量,靜態(tài)局部變量生存期為整個(gè)源程序 靜態(tài)局部變量作用域與自動(dòng)變量相同,即只能在定義該變量的函數(shù)內(nèi)使用該變量 對(duì)基本類型的靜態(tài)局部變量若在說明時(shí)未賦以初值,則系統(tǒng)自動(dòng)賦予0值 函數(shù)被調(diào)用時(shí),其中的靜態(tài)局部變量的值將保留前次被調(diào)用的結(jié)果,15,靜態(tài)局部變量示例1,void format() static int m = 0; m+; if (m % 10 = 0) putchar(n); else putchar( ); void main() int i; for(i=0;i50;i+) printf(%d,i); format(); ,0,0,1,1,循環(huán)執(zhí)行

7、50次,49,49,0 1,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49,2,16,靜態(tài)局部變量示例2,int func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m); void main() int k=4,m=1,p; p=func(k,m); printf(%5d,p); p=func

8、(k,m); printf(%5dn,p); ,4,1,4,1,2,0,17,3,8,8,8,12,17,17,17,靜態(tài)局部變量示例3,#include int d=1; /全局變量d fun(int p) static int d=5; /靜態(tài)局部變量d d+=p; printf(%5d,d); return(d); main() int a=3; /自動(dòng)變量 a printf(%5dn,fun(a+fun(d); ,分析該程序的運(yùn)行結(jié)果,6 15 15,18,靜態(tài)全局變量,靜態(tài)全局變量與普通全局變量在存儲(chǔ)方式上完全相同 區(qū)別在于:非靜態(tài)全局變量的作用域是整個(gè)源程序;而靜態(tài)全局變量的作用域

9、只是定義它的文件,19,函數(shù)形參和實(shí)參,void main ( ) . . . . . . display ( 10, 20.5 ); display ( int num, float fraction ) . . . . . . ,實(shí)際參數(shù),函數(shù)調(diào)用,形式參數(shù),20,void main() int a = 0; /初始化a值為0 func(a); /調(diào)用函數(shù)func printf(%d,a); /輸出a的結(jié)果 /定義函數(shù)func void func(int a) a = 10; /讓參數(shù)a等于10 ,傳值調(diào)用,0,傳值調(diào)用,將會(huì)輸出什么,21,#include void increment(

10、int,int); void main() int num1,num2; printf(n 請(qǐng)輸入兩個(gè)數(shù): ); scanf( %d %d, ,傳值調(diào)用示例,請(qǐng)輸入兩個(gè)數(shù) :,34 56,遞增前的值是 34 和 56,_,遞增后的值是 34 和 56,34,56,子函數(shù)中的值是 35 和 57,35,34,56,57,22,void main() int a = 0; /初始化a值為0 func( /讓參數(shù)a等于10 ,引用調(diào)用,FFE0,引用調(diào)用,a=FFE0,將會(huì)輸出什么,23,#include void increment(int*, int*); void main() int num

11、1,num2; printf(n 請(qǐng)輸入兩個(gè)數(shù): ); scanf( %d %d, ,引用調(diào)用示例1,請(qǐng)輸入兩個(gè)數(shù) :,45 67,遞增前的值是 45 和 67,_,遞增后的值是 46 和 68,45,67,子函數(shù)中的值是 46 和 68,46,FF23,FF05,68,FF23,FF05,24,#include void increment(int*, int*); void main() int num1,num2; printf(n 請(qǐng)輸入兩個(gè)數(shù): ); scanf( %d %d, ,引用調(diào)用示例,請(qǐng)輸入兩個(gè)數(shù) :,45 67,遞增前的值是 45 和 67,_,遞增后的值是 46 和 6

12、8,45,67,子函數(shù)中的值是 46 和 68,46,FF23,FF05,68,FF23,FF05,25,引用調(diào)用示例1,26,引用調(diào)用示例2,#include void p(int *a, int b); void main() int x = 3, y = 5; p( ,3,5,0EEF,0EEF,5,2,6,2, 5,27,引用調(diào)用示例3,分析該程序的運(yùn)行結(jié)果,3, 4,#include void p(int *a, int b); void main() int x = 3, y = 5; p ( ,#include void p(int *a, int b); void main()

13、 int x = 3, y = 5; p ( ,1: 2, 5,2: 2, 4,28,數(shù)組作為函數(shù)參數(shù),在用數(shù)組作實(shí)參時(shí),以傳址方式調(diào)用函數(shù),也就是說把實(shí)參數(shù)組的首地址賦給形參 實(shí)際上形參數(shù)組和實(shí)參數(shù)組為同一數(shù)組,共同擁有一段內(nèi)存空間;形參數(shù)組中元素的值發(fā)生變化,即是實(shí)參數(shù)組中元素值發(fā)生變化。,29,數(shù)組作為參數(shù)示例1,問題描述: 通過函數(shù)實(shí)現(xiàn)5個(gè)學(xué)員成績的排序。,#include #define N 5 void sort(float); void main() float gradeN; int i; printf(n 輸入 %d 個(gè)學(xué)員的成績:n,N); for(i=0;iN;i+) s

14、canf(%f, ,傳遞數(shù)組時(shí)不使用 “ float temp; for(i=0;i aj+1) temp = aj+1; aj+1 = aj; aj = temp; ,30,問題描述: 通過函數(shù)實(shí)現(xiàn)求5個(gè)數(shù)中的最大值。,#include int find_larg(int *); void main() int arr15; int i, larg_num; printf(n 請(qǐng)輸入 5 個(gè)不同的值,存儲(chǔ)在一個(gè)數(shù)組中 n); for (i = 0; i = 4; i+) scanf(%d, ,數(shù)組作為參數(shù)示例2,演示:示例6,int find_larg(int *ptr) int high

15、= *ptr,i; ptr+; for (i = 1; i =4; i+) if (high *ptr) high = *ptr; ptr+; return high; ,31,問題描述: 通過函數(shù)實(shí)現(xiàn)求多個(gè)數(shù)據(jù)的平均值。,#include #define N 10 float average( float *array); void main() float scoreN, aver; int i; printf(n 請(qǐng)輸入 N 個(gè)值: n); for(i = 0; i N; i+) scanf(“%f”, ,數(shù)組作為參數(shù)示例3,實(shí)參是數(shù)組名,float average( float *array) int i; float aver,sum=0; for(i=0; iN; i+) sum+=arrayi; aver=sum/N; return(aver); ,形參是指針變量,*(array+i),float arrayN 或float array ,形參是數(shù)組名,32,總結(jié) 2-1,根據(jù)變量的作用域可以將變量劃分為:局部變量和全局變量 根據(jù)變量的存儲(chǔ)類型(決定生存期)將變量劃分為: 自動(dòng)變量、寄存器變量、靜態(tài)變量、外部變量 靜態(tài)局部變量的生存期為整個(gè)源程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論