c函數(shù)章節(jié)經(jīng)典教案_第1頁(yè)
c函數(shù)章節(jié)經(jīng)典教案_第2頁(yè)
c函數(shù)章節(jié)經(jīng)典教案_第3頁(yè)
c函數(shù)章節(jié)經(jīng)典教案_第4頁(yè)
c函數(shù)章節(jié)經(jīng)典教案_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、整理整理ppt1C C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)Lec Lec 4 4 函數(shù)函數(shù)整理整理ppt2引言引言例:求一些圓盤(pán)的面積,圓盤(pán)半徑分別為:例:求一些圓盤(pán)的面積,圓盤(pán)半徑分別為:3.243.24、2.132.13、0.8650.865、3.7463.746、12.336412.3364、8.4218.421/設(shè)圓周率為設(shè)圓周率為 3.14163.1416,可寫(xiě)出下面程序:,可寫(xiě)出下面程序:#include int main () printf(radius:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn

2、, 2.13, 2.13 * 2.12 * 3.1415); 繁瑣的東西很容易弄錯(cuò),不易修改繁瑣的東西很容易弄錯(cuò),不易修改標(biāo)準(zhǔn)函數(shù)有限,需求無(wú)限。標(biāo)準(zhǔn)函數(shù)有限,需求無(wú)限。整理整理ppt3引言引言如果有求圓面積的函數(shù)如果有求圓面積的函數(shù)double c_area(double r)如果有打印圓面積的函數(shù)如果有打印圓面積的函數(shù) pc_area(double r)int main () printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); printf(radius:%f, area:%fn, 2.13, c_area(2.13) ); 函數(shù)能使程序變短

3、,函數(shù)能使程序變短,變得易寫(xiě)變得易寫(xiě)/易理解易理解/易修改易修改int main () pc_area(3.24); pc_area(2.13); 整理整理ppt4引言引言半徑半徑3.243.24高高2.42.4的圓錐體積:的圓錐體積:外半徑外半徑5.35.3,內(nèi)半徑,內(nèi)半徑3.073.07,高,高4.24.2的空心圓的空心圓柱體積:柱體積:2.4 * c_area( 3.24 ) / 3.0 ( c_area(5.3) - c_area(3.07) )*4.2整理整理ppt5目標(biāo)目標(biāo)學(xué)會(huì)把常用的代碼定義為函數(shù)學(xué)會(huì)把常用的代碼定義為函數(shù)學(xué)會(huì)在程序中使用函數(shù)學(xué)會(huì)在程序中使用函數(shù)掌握掌握C C語(yǔ)言

4、提供的常用庫(kù)函數(shù)語(yǔ)言提供的常用庫(kù)函數(shù)了解遞歸的基本原理了解遞歸的基本原理整理整理ppt6主要內(nèi)容主要內(nèi)容函數(shù)定義函數(shù)定義函數(shù)調(diào)用函數(shù)調(diào)用C C語(yǔ)言常用函數(shù)語(yǔ)言常用函數(shù)函數(shù)與遞歸函數(shù)與遞歸變量作用域變量作用域整理整理ppt74.1 4.1 函數(shù)定義函數(shù)定義將實(shí)現(xiàn)某個(gè)功能的代碼變成函數(shù)將實(shí)現(xiàn)某個(gè)功能的代碼變成函數(shù)整理整理ppt8函數(shù)定義函數(shù)定義把一段把一段計(jì)算計(jì)算定義成函數(shù)并給以命名,定義定義成函數(shù)并給以命名,定義后就可以后就可以在任何需要的地方通過(guò)名字調(diào)用在任何需要的地方通過(guò)名字調(diào)用。/定義函數(shù)定義函數(shù) c_area c_area 的程序片段:的程序片段:double c_area (doubl

5、e r) return r * r * 3.1416;9定義函數(shù)的要素定義函數(shù)的要素函數(shù)頭函數(shù)頭函數(shù)名:使用函數(shù)需要的名稱,合法標(biāo)識(shí)符函數(shù)名:使用函數(shù)需要的名稱,合法標(biāo)識(shí)符返回值類型返回值類型函數(shù)計(jì)算結(jié)果的數(shù)據(jù)類型函數(shù)計(jì)算結(jié)果的數(shù)據(jù)類型參數(shù)表參數(shù)表完成計(jì)算需要的數(shù)據(jù)(完成計(jì)算需要的數(shù)據(jù)(數(shù)量和類型數(shù)量和類型)函數(shù)體函數(shù)體double c_area ( double r ) return r * r * 3.1416;返回值類型返回值類型 函數(shù)名函數(shù)名參數(shù)表參數(shù)表函函數(shù)數(shù)體體函函數(shù)數(shù)頭頭實(shí)現(xiàn)函數(shù)功能的代碼,實(shí)現(xiàn)函數(shù)功能的代碼,由一對(duì)大括號(hào)包圍由一對(duì)大括號(hào)包圍整理整理ppt10函數(shù)返回值函數(shù)返回值

6、函數(shù)返回值表示函數(shù)內(nèi)代碼計(jì)算的結(jié)果函數(shù)返回值表示函數(shù)內(nèi)代碼計(jì)算的結(jié)果一個(gè)函數(shù)一個(gè)函數(shù)最多只能有一個(gè)最多只能有一個(gè)返回值,返回值返回值,返回值通常是計(jì)算結(jié)果或者表示計(jì)算狀態(tài)的信息,通常是計(jì)算結(jié)果或者表示計(jì)算狀態(tài)的信息,由調(diào)用者使用由調(diào)用者使用如果函數(shù)有返回值函數(shù)如果函數(shù)有返回值函數(shù)必須指定返回值類必須指定返回值類型型,如果函數(shù)不需要返回值,如果函數(shù)不需要返回值必須必須使用使用voidvoid作為函數(shù)返回值類型。作為函數(shù)返回值類型。函數(shù)返回值通過(guò)函數(shù)返回值通過(guò)returnreturn語(yǔ)句返回,語(yǔ)句返回,returnreturn語(yǔ)句一旦執(zhí)行,整個(gè)函數(shù)就結(jié)束。語(yǔ)句一旦執(zhí)行,整個(gè)函數(shù)就結(jié)束。整理整理pp

7、t11函數(shù)返回值函數(shù)返回值一個(gè)函數(shù)中可以有多條一個(gè)函數(shù)中可以有多條returnreturn語(yǔ)句,語(yǔ)句,但但只會(huì)執(zhí)行其中一條只會(huì)執(zhí)行其中一條。returnreturn語(yǔ)句形式:語(yǔ)句形式:return return 表達(dá)式表達(dá)式; ;returnreturn語(yǔ)句中表達(dá)式求值的類型應(yīng)該語(yǔ)句中表達(dá)式求值的類型應(yīng)該和函數(shù)返回值類型一致,如果不一致和函數(shù)返回值類型一致,如果不一致會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換返回值類型為返回值類型為voidvoid時(shí),不需要時(shí),不需要returnreturn語(yǔ)句或者寫(xiě)成語(yǔ)句或者寫(xiě)成return;return;12函數(shù)定義示例函數(shù)定義示例void pc_area(do

8、uble r) printf(r = %f, S = %fn, r, 3.14159265 * r * r);double c_area (double r) return r * r * 3.1416;int max(int a, int b) if(ab) return a; return b;int compare( int x, int y ) if( x = y ) return 0; else if( x y ) return 1; else return -1;13關(guān)于關(guān)于returnreturn語(yǔ)句語(yǔ)句double c_area (double r) return r * r

9、* 3.1416;int main() double v=2.4 * c_area( 3.24 ) / 3.0; printf(v=%fn,v);int main() double s = c_area( 3.24 ); double v=2.4 * s / 3.0; printf(v=%fn,v);需要注意返回值類型為需要注意返回值類型為voidvoid的函數(shù)不能放在表達(dá)式中參的函數(shù)不能放在表達(dá)式中參與運(yùn)算與運(yùn)算整理整理ppt14函數(shù)參數(shù)表函數(shù)參數(shù)表函數(shù)可以有函數(shù)可以有0 0個(gè)或多個(gè)參數(shù),這些參數(shù)稱為個(gè)或多個(gè)參數(shù),這些參數(shù)稱為形式形式參數(shù)參數(shù)每個(gè)參數(shù)必須指明每個(gè)參數(shù)必須指明類型類型和和參數(shù)名

10、稱參數(shù)名稱函數(shù)參數(shù)是函數(shù)內(nèi)的函數(shù)參數(shù)是函數(shù)內(nèi)的局部變量局部變量,只在函數(shù)體內(nèi),只在函數(shù)體內(nèi)有效有效函數(shù)參數(shù)只有在函數(shù)被調(diào)用時(shí)才有效函數(shù)參數(shù)只有在函數(shù)被調(diào)用時(shí)才有效函數(shù)參數(shù)的初始值由調(diào)用者傳入(通過(guò)實(shí)際參函數(shù)參數(shù)的初始值由調(diào)用者傳入(通過(guò)實(shí)際參數(shù)以值拷貝的方式傳入)數(shù)以值拷貝的方式傳入)整理整理ppt15形參和實(shí)參形參和實(shí)參形參:在函數(shù)定義中括號(hào)內(nèi)的標(biāo)識(shí)符,與函數(shù)形參:在函數(shù)定義中括號(hào)內(nèi)的標(biāo)識(shí)符,與函數(shù)調(diào)用時(shí)的實(shí)參一一對(duì)應(yīng)調(diào)用時(shí)的實(shí)參一一對(duì)應(yīng)實(shí)參:在調(diào)用函數(shù)的括號(hào)中使用的表達(dá)式,它實(shí)參:在調(diào)用函數(shù)的括號(hào)中使用的表達(dá)式,它的值被傳入函數(shù)并賦值給函數(shù)的對(duì)應(yīng)形參。的值被傳入函數(shù)并賦值給函數(shù)的對(duì)應(yīng)形參。

11、整理整理ppt16形參和實(shí)參形參和實(shí)參#include /定義函數(shù)定義函數(shù)double c_area (double r ) return r * r * 3.1416;int main () double v,radius=3.24; /調(diào)用函數(shù)調(diào)用函數(shù) v=2.4 * c_area( radius ) / 3.0; return 0;形參形參實(shí)參實(shí)參函數(shù)調(diào)用時(shí),實(shí)參radius的值(3.24)傳遞給形參r整理整理ppt17函數(shù)定義不能嵌套函數(shù)定義不能嵌套#include #include double c_area (double r) return pow(r, 2) * 3.1416;

12、int main () double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;#include #include int main () double c_area (double r) return pow(r, 2) * 3.1416; double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;整理整理ppt184.2 4.2 函數(shù)調(diào)用函數(shù)調(diào)用整理整理ppt19調(diào)用系統(tǒng)函數(shù)調(diào)用系統(tǒng)函數(shù)包含必要的頭文件,包含必要的頭文件,其本質(zhì)是將其本質(zhì)是將函數(shù)原型函數(shù)原型添加到程序中添加到程序中在需要的地方使用函在需要的地

13、方使用函數(shù),傳入類型和數(shù)量數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù),函正確的實(shí)際參數(shù),函數(shù)返回值可以作為表數(shù)返回值可以作為表達(dá)式的一部分達(dá)式的一部分#include #include int main() double sum=0; int n=1; while(n=100) sum=sum+ sin(1.0/n) ; n=n+1; printf(sum=%fn,sum); return 0;函數(shù)原型就是函數(shù)原型就是函數(shù)頭部加上分號(hào)函數(shù)頭部加上分號(hào),其作用是告訴編譯器函數(shù)應(yīng)該以什其作用是告訴編譯器函數(shù)應(yīng)該以什么形式調(diào)用么形式調(diào)用整理整理ppt20調(diào)用調(diào)用自定義自定義函數(shù)函數(shù)方法方法1 1(函數(shù)定義(函

14、數(shù)定義放在調(diào)用函數(shù)之放在調(diào)用函數(shù)之前):前):在需要的地方使用在需要的地方使用函數(shù),傳入類型和函數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù)量正確的實(shí)際參數(shù),函數(shù)返回值可數(shù),函數(shù)返回值可以作為表達(dá)式的一以作為表達(dá)式的一部分部分#include /c_area/c_area函數(shù)在調(diào)用前定義函數(shù)在調(diào)用前定義double c_area (double r) return r * r * 3.1416;int main () double v; printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); v=2.4 * c_area( 3.24 ) / 3.0; retur

15、n 0;整理整理ppt21調(diào)用調(diào)用自定義自定義函數(shù)函數(shù)方法方法2 2(函數(shù)定義放(函數(shù)定義放在調(diào)用函數(shù)之后):在調(diào)用函數(shù)之后):在在函數(shù)調(diào)用之前函數(shù)調(diào)用之前給給出出函數(shù)原型函數(shù)原型在需要的地方使用在需要的地方使用函數(shù),傳入類型和函數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù)量正確的實(shí)際參數(shù),函數(shù)返回值可數(shù),函數(shù)返回值可以作為表達(dá)式的一以作為表達(dá)式的一部分部分#include /函數(shù)原型在調(diào)用之前函數(shù)原型在調(diào)用之前double c_area (double r);int main () double v; printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); v

16、=2.4 * c_area( 3.24 ) / 3.0; return 0;/函數(shù)定義在調(diào)用之后函數(shù)定義在調(diào)用之后double c_area (double r) return r * r * 3.1416;整理整理ppt22函數(shù)調(diào)用的若干問(wèn)題函數(shù)調(diào)用的若干問(wèn)題C C語(yǔ)言是一個(gè)函數(shù)式語(yǔ)言,所有可執(zhí)行語(yǔ)語(yǔ)言是一個(gè)函數(shù)式語(yǔ)言,所有可執(zhí)行語(yǔ)句都必須放在某個(gè)函數(shù)體內(nèi)句都必須放在某個(gè)函數(shù)體內(nèi)調(diào)用函數(shù)的函數(shù)稱為調(diào)用函數(shù)的函數(shù)稱為主調(diào)函數(shù)主調(diào)函數(shù),被調(diào)用的,被調(diào)用的函數(shù)稱為函數(shù)稱為被調(diào)函數(shù)被調(diào)函數(shù)當(dāng)函數(shù)調(diào)用發(fā)生時(shí),主調(diào)函數(shù)暫停,程序當(dāng)函數(shù)調(diào)用發(fā)生時(shí),主調(diào)函數(shù)暫停,程序控制轉(zhuǎn)入被調(diào)函數(shù),被調(diào)函數(shù)執(zhí)行結(jié)束后,控

17、制轉(zhuǎn)入被調(diào)函數(shù),被調(diào)函數(shù)執(zhí)行結(jié)束后,主調(diào)函數(shù)繼續(xù)主調(diào)函數(shù)繼續(xù)整理整理ppt23函數(shù)調(diào)用的若干問(wèn)題函數(shù)調(diào)用的若干問(wèn)題#include #include double c_area (double r) return pow(r, 2) * 3.1416;int main () double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;main函數(shù)函數(shù)c_area函數(shù)函數(shù)pow函數(shù)函數(shù)c_area( 3.24 )pow(r, 2)整理整理ppt24參數(shù)傳遞機(jī)制參數(shù)傳遞機(jī)制形式參數(shù)在函數(shù)調(diào)用時(shí)才分配存儲(chǔ)空間,形式參數(shù)在函數(shù)調(diào)用時(shí)才分配存儲(chǔ)空間,并接受實(shí)際參數(shù)的

18、值并接受實(shí)際參數(shù)的值實(shí)際參數(shù)可以為復(fù)雜的表達(dá)式,在函數(shù)調(diào)實(shí)際參數(shù)可以為復(fù)雜的表達(dá)式,在函數(shù)調(diào)用前獲得計(jì)算用前獲得計(jì)算形式參數(shù)與實(shí)際參數(shù)可同名,也可不同名形式參數(shù)與實(shí)際參數(shù)可同名,也可不同名整理整理ppt25參數(shù)傳遞機(jī)制參數(shù)傳遞機(jī)制參數(shù)較多時(shí),實(shí)際參數(shù)值逐一賦值,它們參數(shù)較多時(shí),實(shí)際參數(shù)值逐一賦值,它們必須保持?jǐn)?shù)目、類型、順序的一致必須保持?jǐn)?shù)目、類型、順序的一致參數(shù)的賦值過(guò)程單向不可逆,函數(shù)內(nèi)部對(duì)形參數(shù)的賦值過(guò)程單向不可逆,函數(shù)內(nèi)部對(duì)形式參數(shù)值的修改不會(huì)反映到實(shí)際參數(shù)中式參數(shù)值的修改不會(huì)反映到實(shí)際參數(shù)中函數(shù)參數(shù)一般為函數(shù)輸入集的一部分,函數(shù)函數(shù)參數(shù)一般為函數(shù)輸入集的一部分,函數(shù)輸出集一般使用返回

19、值表示,只有使用特殊輸出集一般使用返回值表示,只有使用特殊的手段的手段( (指針指針/ /數(shù)組數(shù)組) )才可以將函數(shù)參數(shù)作為函才可以將函數(shù)參數(shù)作為函數(shù)輸出集的一部分?jǐn)?shù)輸出集的一部分整理整理ppt26參數(shù)傳遞機(jī)制參數(shù)傳遞機(jī)制void swap( int a, int b ) int t; t = a; a = b; b = t;int main() int a=5, b=3; printf( before swap: a= %d; b= %dn, a, b ); swap(a, b); printf( after swap: a= %d; b=%dn, a, b ); return 0;swap

20、函數(shù)中的a和b與main函數(shù)中的a和b是什么關(guān)系??jī)蓚€(gè)printf輸出的結(jié)果是什么?swapswap函數(shù)數(shù)據(jù)區(qū)函數(shù)數(shù)據(jù)區(qū)mainmain函數(shù)數(shù)據(jù)區(qū)函數(shù)數(shù)據(jù)區(qū)void swap( int a, int b ) int t; / 2 t = a; a = b; b = t; / 3int main() int a=5, b=3; / 1 swap(a, b); / 4 return 0;5a0 x0012ff24內(nèi)存地址值變量3b0 x0012ff283a0 x0012ff245b0 x0012ff285a0 x0012ff7c3b0 x0012ff78內(nèi)存地址值變量5a0 x0012ff7c3b

21、0 x0012ff78整理整理ppt28函數(shù)示例函數(shù)示例1. 1. 請(qǐng)寫(xiě)一個(gè)程序,給出指定整數(shù)范圍請(qǐng)寫(xiě)一個(gè)程序,給出指定整數(shù)范圍11,1000010000內(nèi)的所有完數(shù)。判斷是不是完數(shù)用內(nèi)的所有完數(shù)。判斷是不是完數(shù)用一個(gè)函數(shù)完成。一個(gè)函數(shù)完成。int isPerfectNumber(int n) int i; for(i=1,sum=0;i=n/2;i+) if(n%i=0) sum+=i; return sum=n;整理整理ppt29函數(shù)示例函數(shù)示例2. 2. 寫(xiě)一個(gè)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)寫(xiě)一個(gè)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù)int gcd( int m, int n) int i; int m

22、in=m1;i-) if(m%i=0&n%i=0)break; return i;整理整理ppt30函數(shù)示例函數(shù)示例3. 3. 寫(xiě)一個(gè)函數(shù)判寫(xiě)一個(gè)函數(shù)判斷一個(gè)數(shù)是不是素?cái)嘁粋€(gè)數(shù)是不是素?cái)?shù)數(shù), ,用函數(shù)返回值用函數(shù)返回值表示判斷結(jié)果表示判斷結(jié)果( (非非0 0表示是素?cái)?shù),表示是素?cái)?shù),0 0 表表示不是素?cái)?shù)示不是素?cái)?shù)) )int isPrime(int n) int i, isprime=1; for(i=2; in; i+) if(n%i=0) isprime=0; break; return i=n;整理整理ppt31課堂練習(xí)課堂練習(xí)寫(xiě)一個(gè)函數(shù)判斷傳入的整數(shù)寫(xiě)一個(gè)函數(shù)判斷傳入的整數(shù)n(100n

23、1000)n(100n1000)是不是是不是“水仙花數(shù)水仙花數(shù)”,是返回,是返回1 1,否則返,否則返回回0 0如果一個(gè)如果一個(gè)3 3位整數(shù)各位數(shù)字的立方和等于這個(gè)位整數(shù)各位數(shù)字的立方和等于這個(gè)數(shù)就是水仙花數(shù)數(shù)就是水仙花數(shù)整理整理ppt324.3 4.3 變量作用域變量作用域( (教材教材5.4)5.4)整理整理ppt33swapswap函數(shù)的問(wèn)題函數(shù)的問(wèn)題參數(shù)傳遞是賦值傳遞,修改函數(shù)參數(shù)(形參數(shù)傳遞是賦值傳遞,修改函數(shù)參數(shù)(形參)對(duì)原來(lái)的數(shù)據(jù)(實(shí)參)沒(méi)有影響,因參)對(duì)原來(lái)的數(shù)據(jù)(實(shí)參)沒(méi)有影響,因此不能完成交換數(shù)據(jù)的任務(wù)此不能完成交換數(shù)據(jù)的任務(wù)解決方法解決方法方法方法1 1:修改需要交換的數(shù)

24、據(jù)的:修改需要交換的數(shù)據(jù)的作用域作用域,將其,將其變?yōu)樽優(yōu)槿肿兞咳肿兞糠椒ǚ椒? 2:通過(guò)參數(shù)傳遞需要交換的數(shù)據(jù)的地址:通過(guò)參數(shù)傳遞需要交換的數(shù)據(jù)的地址整理整理ppt34變量作用域變量作用域作用域:變量的有效范圍,也就是變量的生存作用域:變量的有效范圍,也就是變量的生存范圍范圍局部變量:局部變量: 函數(shù)參數(shù),其作用域?yàn)檎麄€(gè)函數(shù)函數(shù)參數(shù),其作用域?yàn)檎麄€(gè)函數(shù) 函數(shù)內(nèi)的變量,其作用域?yàn)樽兞慷x位置到函數(shù)結(jié)束位置函數(shù)內(nèi)的變量,其作用域?yàn)樽兞慷x位置到函數(shù)結(jié)束位置 復(fù)合語(yǔ)句內(nèi)的變量,其作用域?yàn)樽兞慷x位置到復(fù)合語(yǔ)句結(jié)復(fù)合語(yǔ)句內(nèi)的變量,其作用域?yàn)樽兞慷x位置到復(fù)合語(yǔ)句結(jié)束位置束位置全局變量全局變量 定

25、義在所有函數(shù)之外的變量,其作用域?yàn)樽兞慷x位置到程定義在所有函數(shù)之外的變量,其作用域?yàn)樽兞慷x位置到程序結(jié)束位置序結(jié)束位置#include int a=10,b=10; /全局變量全局變量void func1() printf(func1:a=%d,b=%dn,a,b); void func2() int a=30,b=30; printf(func2:a=%d,b=%dn,a,b);int c=1,d=1;void func3(int a,int b) printf(fuc3:a=%d,b=%dn,a,b);int main() int a=20,b=20; int a=40,b=40; 全

26、全局局變變量量a a,b b的的作作用用域域全全局局變變量量c c,d d的的作作用用域域局部變量局部變量a a,b b的作用域的作用域函數(shù)參數(shù)函數(shù)參數(shù)a a,b b的作用域的作用域mainmain函數(shù)局部變函數(shù)局部變量量a a,b b的作用域的作用域復(fù)合結(jié)復(fù)合結(jié)構(gòu)內(nèi)構(gòu)內(nèi)a a,b b的作的作用域用域整理整理ppt36使用全局變量的使用全局變量的swapswap函數(shù)函數(shù)void swap() int t; t = a; a = b; b = t;int main() printf( before swap: a= %d; b= %dn, a, b ); swap(); printf( afte

27、r swap: a= %d; b=%dn, a, b ); return 0;int a=5, b=3;整理整理ppt374.4 C4.4 C語(yǔ)言常用函數(shù)語(yǔ)言常用函數(shù)整理整理ppt38數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)#include #include double sin(double rad);double sin(double rad);double sqrt(int n);double sqrt(int n);double pow(double,double);double pow(double,double);double fabs(double);double fabs(double);double

28、 log( double x );double log( double x );double log10( double x );double log10( double x );整理整理ppt39輸入輸出函數(shù)輸入輸出函數(shù)#include #include printfprintf格式化輸出格式化輸出scanfscanf格式化輸入格式化輸入getchargetchar輸入一個(gè)字符輸入一個(gè)字符putcharputchar輸出一個(gè)字符輸出一個(gè)字符整理整理ppt40輸入輸出函數(shù)輸入輸出函數(shù)int scanf( const char int scanf( const char * *formatfor

29、mat ,argumentargument . ); );可變參數(shù)可變參數(shù)- -參數(shù)個(gè)數(shù)參數(shù)個(gè)數(shù)=1=1返回值表示正確轉(zhuǎn)換并賦值的字段數(shù)返回值表示正確轉(zhuǎn)換并賦值的字段數(shù), ,經(jīng)常用經(jīng)常用來(lái)判斷輸入格式是否正確來(lái)判斷輸入格式是否正確整理整理ppt41scanfscanf返回值示例返回值示例( (scanf.cscanf.c) )#include int main() int n=0; int a=0,b=0; n=scanf(%d %d,&a,&b); printf(n=%dn,n,); printf(a=%d b=%dn,a,b); return 0;輸入輸入1:3 4輸入輸入2:3 4.5輸

30、入輸入3:3 a輸出輸出1:n=2a=3 b=4輸出輸出2:n=2a=3 b=4輸出輸出1:n=1a=3 b=0整理整理ppt42輸入輸出函數(shù)輸入輸出函數(shù)int getchar()int getchar()從標(biāo)準(zhǔn)輸入流(從標(biāo)準(zhǔn)輸入流(stdinstdin)讀取一)讀取一個(gè)字符個(gè)字符緩沖輸入,需要按下回車后才能獲取到值緩沖輸入,需要按下回車后才能獲取到值正常情況下,返回值表示讀入的字符正常情況下,返回值表示讀入的字符如果返回值是如果返回值是EOFEOF(-1-1)表示讀錯(cuò)誤或到了流結(jié)束位置)表示讀錯(cuò)誤或到了流結(jié)束位置int putchar(int ch)int putchar(int ch)將字

31、符將字符chch寫(xiě)入標(biāo)準(zhǔn)輸出寫(xiě)入標(biāo)準(zhǔn)輸出流(流(stdoutstdout)示例:將輸入的一行小寫(xiě)字符轉(zhuǎn)換成大寫(xiě)字符。示例:將輸入的一行小寫(xiě)字符轉(zhuǎn)換成大寫(xiě)字符。(chario.cchario.c)整理整理ppt43時(shí)間函數(shù)時(shí)間函數(shù)#include #include time_t time(time_t time_t time(time_t * *timer)timer)獲得從獲得從1970/1/11970/1/1至今的秒數(shù)至今的秒數(shù) time_ttime_t可以看作整數(shù)類型可以看作整數(shù)類型clock_t clock();clock_t clock();獲得從程序開(kāi)始運(yùn)行至獲得從程序開(kāi)始運(yùn)行至今處

32、理器經(jīng)過(guò)的時(shí)鐘數(shù)今處理器經(jīng)過(guò)的時(shí)鐘數(shù) clock_tclock_t可以看作整數(shù)類型可以看作整數(shù)類型CLOCKS_PER_SECCLOCKS_PER_SEC表示每秒有多少個(gè)時(shí)鐘的表示每秒有多少個(gè)時(shí)鐘的常數(shù)常數(shù)整理整理ppt44時(shí)間函數(shù)時(shí)間函數(shù)( (time.ctime.c) )#include #include int main() int start,finish; double time; start=clock(); . finish=clock(); time=(finish-start)*1.0/CLOCKS_PER_SEC; . return 0;對(duì)這一段對(duì)這一段程序計(jì)時(shí)程序計(jì)時(shí)整理

33、整理ppt45隨機(jī)數(shù)函數(shù)隨機(jī)數(shù)函數(shù) #include #include int rand()int rand()產(chǎn)生一個(gè)產(chǎn)生一個(gè)0,RAND_MAX0,RAND_MAX范圍內(nèi)范圍內(nèi)的偽隨機(jī)數(shù)的偽隨機(jī)數(shù) RAND_MAXRAND_MAX是一個(gè)系統(tǒng)常數(shù),可以直接使用是一個(gè)系統(tǒng)常數(shù),可以直接使用void srand( unsigned int seed )void srand( unsigned int seed )設(shè)置偽設(shè)置偽隨機(jī)數(shù)序列的種子隨機(jī)數(shù)序列的種子 如果不設(shè)定隨機(jī)數(shù)系列的種子,同一個(gè)程序兩次如果不設(shè)定隨機(jī)數(shù)系列的種子,同一個(gè)程序兩次運(yùn)行得到的隨機(jī)數(shù)完全相同運(yùn)行得到的隨機(jī)數(shù)完全相同 通常以

34、時(shí)間作為隨機(jī)數(shù)種子通常以時(shí)間作為隨機(jī)數(shù)種子整理整理ppt46隨機(jī)數(shù)函數(shù)隨機(jī)數(shù)函數(shù)產(chǎn)生產(chǎn)生5 5個(gè)隨機(jī)數(shù)個(gè)隨機(jī)數(shù)( (rand1.crand1.c) )#include #include int main() int i; printf( RAND_MAX is %d.n, RAND_MAX ); printf( Five numbers generated as follows:n ); for( i = 0; i 5; i+ ) printf( “%d , rand() ); printf( n ); return 0;整理整理ppt47隨機(jī)函數(shù)隨機(jī)函數(shù)用時(shí)間做種子產(chǎn)生用時(shí)間做種子產(chǎn)生5 5

35、個(gè)隨機(jī)數(shù)個(gè)隨機(jī)數(shù)( (rand2.crand2.c) )#include #include #include int main() int i; printf( Five numbers generated as follows:n ); srand( (int)time(NULL) ); for( i = 0; i 5; i+ ) printf( %d; , rand() ); printf( n ); return 0;整理整理ppt48隨機(jī)函數(shù)隨機(jī)函數(shù)生成生成5 5個(gè)個(gè)low,highlow,high范圍內(nèi)的隨機(jī)數(shù)范圍內(nèi)的隨機(jī)數(shù)( (rand3.crand3.c) )#include #

36、include #include int main() int i, low=10, high=20; srand( (int)time(NULL) ); for( i = 0; i 1n 1,考慮,考慮 n 1 n 1 個(gè)圓盤(pán),如個(gè)圓盤(pán),如果能將果能將 n - 1 n - 1 個(gè)圓盤(pán)移動(dòng)到某個(gè)塔座上,則個(gè)圓盤(pán)移動(dòng)到某個(gè)塔座上,則可以移動(dòng)第可以移動(dòng)第 n n 個(gè)圓盤(pán)個(gè)圓盤(pán)策略:首先將策略:首先將 n 1 n 1 個(gè)圓盤(pán)移動(dòng)到塔座個(gè)圓盤(pán)移動(dòng)到塔座 Y Y 上,然后將第上,然后將第 n n 個(gè)圓盤(pán)移動(dòng)到個(gè)圓盤(pán)移動(dòng)到 Z Z 上,最后上,最后再將再將 n - 1 n - 1 個(gè)圓盤(pán)從個(gè)圓盤(pán)從 Y Y

37、 上移動(dòng)到上移動(dòng)到 Z Z 上上整理整理ppt58hanoivoid MoveHanoi( unsigned int n, /圓盤(pán)數(shù)量圓盤(pán)數(shù)量 char from, /起始位置起始位置 char tmp, /中轉(zhuǎn)位置中轉(zhuǎn)位置 char to )/目標(biāo)位置目標(biāo)位置 if( n = 1 ) /遞歸結(jié)束條件遞歸結(jié)束條件 將圓盤(pán)將圓盤(pán)1從從 from 移動(dòng)到移動(dòng)到 to else 將將 n 1 個(gè)圓盤(pán)從個(gè)圓盤(pán)從 from 以以 to 為中轉(zhuǎn)移動(dòng)到為中轉(zhuǎn)移動(dòng)到 tmp; /遞歸遞歸 將圓盤(pán)將圓盤(pán) n 從從 from 移動(dòng)到移動(dòng)到 to 將將 n - 1個(gè)圓盤(pán)從個(gè)圓盤(pán)從 tmp 以以 from 為中轉(zhuǎn)移動(dòng)

38、到為中轉(zhuǎn)移動(dòng)到 to; /遞歸遞歸 整理整理ppt59遞歸的缺點(diǎn)遞歸的缺點(diǎn)函數(shù)調(diào)用需要額外的空間(棧)來(lái)完成,函數(shù)調(diào)用需要額外的空間(棧)來(lái)完成,在調(diào)用次數(shù)很多的情況下會(huì)降低程序效率在調(diào)用次數(shù)很多的情況下會(huì)降低程序效率遞歸調(diào)用中的重復(fù)計(jì)算遞歸調(diào)用中的重復(fù)計(jì)算10( )1 1(1)(2)1nF nnF nF nn整理整理ppt60FibonacciFibonacci數(shù)列的兩種求解方法數(shù)列的兩種求解方法(fib.c)(fib.c)/使用遞歸求使用遞歸求Fibonacci數(shù)列數(shù)列int fib_recursion(int n) if(n=0 | n=1) return 1; return fib_r

39、ecursion(n-1) + fib_recursion(n-2);/使用循環(huán)求使用循環(huán)求Fibonacci數(shù)列數(shù)列int fib_loop(int n) int fn,fn_1=1,fn_2=1,i; if(n=0|n=1)return 1; for(i=2;i=n;i+) fn=fn_1+fn_2; /計(jì)算計(jì)算f(n) fn_2=fn_1;/更新更新f(n-2) fn_1=fn; /更新更新f(n-1) return fn;遞歸到循環(huán)的轉(zhuǎn)換常常需要遞歸到循環(huán)的轉(zhuǎn)換常常需要借助于高級(jí)的程序設(shè)計(jì)技術(shù)借助于高級(jí)的程序設(shè)計(jì)技術(shù)和一定的數(shù)據(jù)結(jié)構(gòu)才能完成和一定的數(shù)據(jù)結(jié)構(gòu)才能完成61兔子繁殖問(wèn)題(兔子繁殖問(wèn)題( FibonacciFibonacci數(shù)列)數(shù)列)假設(shè)有一對(duì)兔子,一個(gè)月后成長(zhǎng)為大兔子,從假設(shè)有一對(duì)兔子,一個(gè)月后成長(zhǎng)為大兔子,從第二個(gè)月開(kāi)始,每對(duì)大兔子生一對(duì)小兔子。不第二個(gè)月開(kāi)始,每對(duì)大兔子生一對(duì)小兔子。不考慮兔子的死亡,求第考慮兔子的死亡,求第n n個(gè)月的兔子總數(shù)個(gè)月的兔子總數(shù)月份月份小兔子小兔子大兔子大兔子總數(shù)總數(shù)0 01 10 01 11 10 01 11 12 21 11 12 23 31 12 23

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論