版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、關(guān)于函數(shù)及其應(yīng)用1第一張,PPT共七十二頁,創(chuàng)作于2022年6月 10.1 函數(shù)的基本概念 一個較大的程序一般由若干個程序模塊(子程序 )組成, 每一個模塊(子程序)來完成一定的功能。在C語言中, 子程序的作用是由函數(shù)來實現(xiàn)的。 一個C程序可由一個主函數(shù)和若干個函數(shù)構(gòu)成,由主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可互相調(diào)用。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意多次。 下圖是一個程序中函數(shù)調(diào)用的示意圖:第二張,PPT共七十二頁,創(chuàng)作于2022年6月main( )A( )B( )C( )D( )E( )F( )G( )E( )H( )H( )H( )G( )函數(shù)調(diào)用示意圖:調(diào)用第三張,PPT共七十二頁,創(chuàng)
2、作于2022年6月 (1). 一個源程序文件由一個或多個函數(shù)組成.一個源程序 文件是一個編譯單位,而不是以函數(shù)為單位進(jìn)行編譯.說明: (2). 一個C程序可由一個或多個源程序文件組成. 這樣可以分別進(jìn)行編寫,編譯,調(diào)試. 一個源文件可以為 多個C程序公用. (3). 所有函數(shù)是平行的, 一個函數(shù)并不從屬于另一個函 數(shù) , 函數(shù)可以相互調(diào)用,但不能調(diào)用main( )函數(shù).第四張,PPT共七十二頁,創(chuàng)作于2022年6月(4). 從使用角度來分, 函數(shù)可分為: 數(shù)學(xué)函數(shù) (#include math.h) 字符函數(shù) (#include ctype.h) 庫函數(shù) 字符串函數(shù) (#include str
3、ing.h) 輸入輸出函數(shù) (#include stdio.h) 動態(tài)存儲分配函數(shù) (#include stdlib.h) . 自定義函數(shù):第五張,PPT共七十二頁,創(chuàng)作于2022年6月 從函數(shù)的形式來分; 無參函數(shù):主調(diào)函數(shù)沒有數(shù)據(jù)傳給被調(diào)函數(shù) 有參函數(shù):主調(diào)函數(shù)可以將數(shù)據(jù)傳給被調(diào)函數(shù) 空函數(shù): 什么也不干,先占位置,以后擴(kuò)展功能第六張,PPT共七十二頁,創(chuàng)作于2022年6月一. 函數(shù)定義的一般形式:(自定義函數(shù)) (1). 無參函數(shù)的定義形式: 類型標(biāo)識符 函數(shù)名( ) 函數(shù)體 函數(shù)定義一律不能加分號 (;) !說明: 類型標(biāo)識符是指函數(shù)返回值的類型. 如果函數(shù)不要返回值,可寫上void.
4、第七張,PPT共七十二頁,創(chuàng)作于2022年6月(2). 有參函數(shù)定義: 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列) 聲明部分 語句 形式參數(shù)例: int add ( int x, int y ) int z; z=x+y; return z; 注: 返回值z 的類型(int)應(yīng)與類型標(biāo)識符統(tǒng)一。第八張,PPT共七十二頁,創(chuàng)作于2022年6月1、函數(shù)參數(shù)與函數(shù)值;(1)形參與實參:例:main( ) int a,b,c; scanf(“%d, %d”, &a, &b); c=max(a, b); printf(“max is %d”, c); int max(int x, int y) /*定義有參函數(shù)
5、max*/ int z; z=xy ? x : y; return(z); x,y為形參a,b為實參10.2 函數(shù)的參數(shù)第九張,PPT共七十二頁,創(chuàng)作于2022年6月b. 實參可以是常量、變量、或表達(dá)式,但要求有確定值. 如: max(3, a+b) ; c. 實參與形參的類型應(yīng)一致,一 一對應(yīng)。說明:a. 形參變量(上例中的x,y), 在未調(diào)用時,并不占 用存儲單元,當(dāng)進(jìn)行函數(shù)調(diào)用時,形參才分配內(nèi)存 單元,調(diào)用結(jié)束后,形參就釋放掉。第十張,PPT共七十二頁,創(chuàng)作于2022年6月d. 實參對形參的數(shù)據(jù)傳遞是單向傳值,只能是由實參傳 給形參,而不能相反進(jìn)行。 實參、形參在內(nèi)存中,占據(jù)不同單元。
6、2 a b 3 2 x 3 y 即使形參單元中的值發(fā)生變化,也不會影響實參單元的值. 函數(shù)調(diào)用后,形參單元釋放掉,實參單元仍保留。第十一張,PPT共七十二頁,創(chuàng)作于2022年6月例10.9 閱讀一下程序,寫出程序運行結(jié)果#include int swap(int x, int y)int temp;temp=x;x=y;y=temp;return 0;int main()int a, b;scanf(%d%d, &a, &b);swap(a,b);printf(%d,%dn,a, b);return 0;Ch10_10_9.c 即使形參單元中的值發(fā)生變化,也不會影響實參單元的值. 兩變量進(jìn)行交
7、換.第十二張,PPT共七十二頁,創(chuàng)作于2022年6月2. 函數(shù)的返回值與return語句: 執(zhí)行C語言程序就是調(diào)用一個個函數(shù),函數(shù)被調(diào)用 時,可以返回某一個值作為該函數(shù)的值(供主函數(shù)使用)。需要返回值時,在函數(shù)中返回的地方使用return語句: return(表達(dá)式); 這里表達(dá)式的值就是函數(shù)的返回值。第十三張,PPT共七十二頁,創(chuàng)作于2022年6月說明: a. return 語句后面的括號可省去: 如: return(z); return z ; return 后面可以是一個表達(dá)式. 第十四張,PPT共七十二頁,創(chuàng)作于2022年6月 b. 當(dāng)函數(shù)不需要帶回返回值,C語言有二種方法處理 : .
8、使用不帶表達(dá)式的return語句,如: return; .連return也不用,這是因為函數(shù)末尾,隱含一個return 語句 ,當(dāng)遇到后面的大括號“” , 就把控制權(quán)交給主調(diào) 函數(shù)。第十五張,PPT共七十二頁,創(chuàng)作于2022年6月 為了明確表示不帶回值,可用“void“定義。 如: void printstar( ); 這樣可以保證函數(shù)不帶回任何值.c. 若函數(shù)不指定帶值返回,并不是不返回什么值,可能 返回一個不定值。 因為不考慮使用,即使返回是不定值,也無多大關(guān)系。 第十六張,PPT共七十二頁,創(chuàng)作于2022年6月#includeint add(int x, int y)int z;z=x+
9、y;return z;int main()int a, b, c;scanf(%d %d, &a, &b);c=add(a,b);printf(c=%dn, c);return 0; 例:10.1 函數(shù)值傳遞的例子.(P149) 函數(shù)在被調(diào)用前必須先定義或說明!Ch10_10_1.c第十七張,PPT共七十二頁,創(chuàng)作于2022年6月例:10.2 函數(shù)地址傳遞的例子.(P150) 輸入一個由數(shù)字組成的字符串,轉(zhuǎn)換成一個整數(shù).#includeint ctoi(char *p) int sum=0; while(*p) sum=sum*10; sum=sum+(*p-0); p+; return su
10、m;int main( ) char str5; int x; printf(“string is :n); scanf(%s,str); x=ctoi(str); printf(“integer is %dn,x); return 0;數(shù)組名作為函數(shù)的參數(shù) Ch10_10_2.c*p-0 把一個字符數(shù)字轉(zhuǎn)成數(shù)字.第十八張,PPT共七十二頁,創(chuàng)作于2022年6月3、函數(shù)的調(diào)用:(1). 函數(shù)調(diào)用的方式: 有以下三種函數(shù)調(diào)用方式: a. 函數(shù)語句: 函數(shù)作為一條語句, 不要求函數(shù)帶回值,完成一定的 功能、操作。如: printstar( ); b. 函數(shù)表達(dá)式: 函數(shù)調(diào)用出現(xiàn)在一個表達(dá)式中。 如
11、: c=z*max(a,b); 這時要求函數(shù)帶回一個確定的值, 以參加運算。第十九張,PPT共七十二頁,創(chuàng)作于2022年6月 c. 函數(shù)參數(shù): 如:printf(“%d” , max(a,b) ); max(a,b) 作為 printf函數(shù)的一個參數(shù)。 第二十張,PPT共七十二頁,創(chuàng)作于2022年6月10.3 系統(tǒng)函數(shù)的應(yīng)用 C語言提供了十分豐富的庫函數(shù).這些函數(shù)可分為: 1. 數(shù)學(xué)函數(shù),如: sin(), sqrt() 函數(shù)等.它們的包含文件是: “math.h”. 2. 字符串函數(shù),如: gets(),strcmp()函數(shù)等.它們的包含文件是: “string.h”. 3. 輸入輸出函數(shù),
12、它們的包含文件是: “stdio.h”. 第二十一張,PPT共七十二頁,創(chuàng)作于2022年6月10.3.1 數(shù)學(xué)函數(shù) 常用的數(shù)學(xué)函數(shù)有: (1). sqrt(): double sqrt(double x); 計算 ; x應(yīng)=0 (2). fabs(): double fabs(double x); 計算 x 的絕對值 x (3). pow(): double pow(double x,double y); 計算xy 的值 (4). exp(): double exp(double x); 計算 ex 的值第二十二張,PPT共七十二頁,創(chuàng)作于2022年6月例10.3 求z=xy+c 的值,在C語
13、言中xy可調(diào)用系統(tǒng)函數(shù) pow()函數(shù)來求得。#include #include /必須加入數(shù)學(xué)庫頭文件int main()double x, y, z, c;printf(Please input x y cn);scanf(%lf%lf%lf, &x, &y, &c);z=pow(x,y)+c;printf(z=%lfn, z);return 0;C+另一注解方法第二十三張,PPT共七十二頁,創(chuàng)作于2022年6月例10.4 利用循環(huán)的方法產(chǎn)生1100間的10個隨機(jī)數(shù),并在屏幕上顯示.關(guān)于 rand() 隨機(jī)函數(shù): rand()會返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間. 第二十四張,
14、PPT共七十二頁,創(chuàng)作于2022年6月#include #includevoid main( ) printf( RAND_MAX =%ld n,RAND_MAX);說明: RAND_MAX是一宏定義值. 是系統(tǒng)最大的被rand()返回的值. 其值可用下列程序輸出:視系統(tǒng)不同而不同(32767).第二十五張,PPT共七十二頁,創(chuàng)作于2022年6月2. srand(seed)函數(shù): srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時的隨機(jī)數(shù)種子。參數(shù)seed必須是個整數(shù),通??梢岳胻ime(0)的返回值來當(dāng)做seed. 如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會一樣。 3.
15、time() 函數(shù)返回從1970年開始經(jīng)歷時間的秒數(shù)。第二十六張,PPT共七十二頁,創(chuàng)作于2022年6月例10.4 利用系統(tǒng)函數(shù)rand(),此函數(shù)產(chǎn)生1100間的10個隨機(jī)數(shù),此函數(shù)在頭件 stdlib.h進(jìn)行了聲明.#include#include #include int main()int i,j;srand(time(0);for(i=0; i S2 函數(shù)返回值為0 S1 S2 函數(shù)返回值0第三十一張,PPT共七十二頁,創(chuàng)作于2022年6月例10.5 從鍵盤輸入兩個字符串,把兩個字符串連接后輸出到屏幕#include #include int main()char s180, s28
16、0;gets(s1);gets(s2);strcat(s1,s2);puts(s1);return 0;gets()以回車結(jié)束輸入.ch10_5.c第三十二張,PPT共七十二頁,創(chuàng)作于2022年6月例10.6從鍵盤輸入一個字符串,求這一字符串長度#include #include int main()int x;char str80;gets(str);x=strlen(str);printf(該字符串長度:%dn, x);return 0;ch10_6.c第三十三張,PPT共七十二頁,創(chuàng)作于2022年6月10.3.3 字符操作函數(shù)與轉(zhuǎn)換函數(shù)1. isalnum(): 函數(shù)原型: int is
17、alnum(int ch); 檢查ch是否為字母或數(shù)字. 是字母或數(shù)字返回1, 否則返回0.2. isalpha(): 函數(shù)原型: int isalpha(int ch); 檢查ch是否為字母. 是字母返回1, 否則返回0.第三十四張,PPT共七十二頁,創(chuàng)作于2022年6月3. islower(): 函數(shù)原型:int islower(int ch); 檢查ch是否為小寫字母(az) . 是返回1, 否則返回0.4. isxdigit(): 函數(shù)原型:int isxdigit(int ch); 檢查ch是否為一個十六進(jìn)制字符(09或af或AF). 是返回1, 否則返回0.第三十五張,PPT共七十
18、二頁,創(chuàng)作于2022年6月 5. atoi() 函數(shù)原型:int atoi(char *str) 函數(shù)功能:將(一含有數(shù)字內(nèi)容的)字符串轉(zhuǎn)換成一個整數(shù)數(shù)值. 頭文件: #include #include int main() int n; char str =12345.78; n=atoi(str); printf(string=%s integer=%dn,str,n); return 0; 第三十六張,PPT共七十二頁,創(chuàng)作于2022年6月例10.7 從鍵盤輸入一些字符,輸出其中的大寫字符與十六進(jìn)制字符,當(dāng)輸入字符結(jié)束字符#include #include int main()char
19、ch;while( ( ch=getchar() ) != )if(isupper(ch) | isxdigit(ch) ) printf(%3c, ch);printf(n);return 0;ch10_7.c第三十七張,PPT共七十二頁,創(chuàng)作于2022年6月10.4 自定義函數(shù) C語言允許用戶自定義函數(shù). 例如: 下面是一個自定義函數(shù),功能是求兩個整數(shù)之和. int add(int x,int y) int z; z=x+y; return z; 第三十八張,PPT共七十二頁,創(chuàng)作于2022年6月 關(guān)于對被調(diào)用函數(shù)的聲明和函數(shù)原型: 在一個函數(shù)中調(diào)用另一個函數(shù)(即被調(diào)函數(shù))需要具備哪些條件
20、? a. 函數(shù)要存在(庫函數(shù)或自定義函數(shù)). 此外還要: b. 如果是庫函數(shù),一般應(yīng)在文件開頭用#include命令把 相關(guān)函數(shù)的一些信息包括進(jìn)去. 第三十九張,PPT共七十二頁,創(chuàng)作于2022年6月 如果用戶自己定義了一個函數(shù),同時主調(diào)函數(shù)與被 調(diào)函數(shù)在同一源文件中: 一般情況下,主調(diào)函數(shù)中要對被調(diào)用函數(shù)的作一聲明. 函數(shù)聲明 即向編譯系統(tǒng)聲明將要調(diào)用此函數(shù), 并將有關(guān)信息通知編譯系統(tǒng).第四十張,PPT共七十二頁,創(chuàng)作于2022年6月例: main( ) float a, b, c; scanf(“”%f,%f”,&a,&b); c=add(a,b); printf(“sum is %f”,
21、c); float add(float x,float y) float z; z=x+y; return(z); 對被調(diào)函數(shù)的聲明float add(float x,float y ); 函數(shù)聲明是一語句,要加分號 ;自定義add函數(shù). C語言在進(jìn)行編譯時是從上到下逐行進(jìn)行的,如果沒有對函數(shù)進(jìn)行聲明,如上例,當(dāng)編譯到 “c=add(a,b);” 時, 并不知道add是不是函數(shù)名,也無法判斷實參(a和b)的類型與個數(shù)正確與否?第四十一張,PPT共七十二頁,創(chuàng)作于2022年6月 (1). “定義”與“聲明”不是一回事. “定義”: 是指對函數(shù)功能的確定,包括指定函數(shù)名,函數(shù)值類型, 形參及其類型
22、,函數(shù)體等. 它是一個完整的, 獨立的函數(shù) 單位. 說明: 而“聲明”的作用: 則是把函數(shù)的名字,函數(shù)的類型,以及形參的類型,個 數(shù)和順序通知編譯系統(tǒng),以便在調(diào)用該函數(shù)時系統(tǒng)按此 檢查.第四十二張,PPT共七十二頁,創(chuàng)作于2022年6月(2). 其實,在函數(shù)聲明中也可以不寫形參名,而只寫形參的 類型. 如: float add (float, float); (3). 在C語言中,以上的函數(shù)聲明稱為函數(shù)原型. 使用函數(shù)原型的主要作用是: 利用它在程序的編譯階 段, 對被調(diào)函數(shù)的合法性進(jìn)行全面檢查. 第四十三張,PPT共七十二頁,創(chuàng)作于2022年6月 函數(shù)原型的一般形式:(a). 函數(shù)類型 函數(shù)
23、名( 參數(shù)類型1, 參數(shù)類型2, .)(b). 函數(shù)類型 函數(shù)名( 參數(shù)類型1 參數(shù)名1, 參數(shù)類型2 參數(shù)名2, .)函數(shù)原型 第一種是基本的形式,為了便于閱讀,也允許加上參數(shù)名.但編譯系統(tǒng)并不檢查參數(shù)名,因此參數(shù)名是什么都無所謂.第四十四張,PPT共七十二頁,創(chuàng)作于2022年6月(4). 對被調(diào)函數(shù)聲明,在下列三種情況下可省略:說明:(a).如果函數(shù)的返回值是整型,或字符型可以省去(以 前我們遇到的大多是這種情況)。 系統(tǒng)自動按整型處理,建議加以說明為好。(b). 被調(diào)用函數(shù)的定義位置出現(xiàn)在主調(diào)函數(shù)之前,可省 去聲明,這時編譯系統(tǒng)已知道了已定義的函數(shù)類型, 會自動處理. 如下例:第四十五張
24、,PPT共七十二頁,創(chuàng)作于2022年6月 float add(float x,float y) /*定義add函數(shù)*/ float z; z=x+y; return(z); main( ) float add(float x,float y ); float a, b, c; scanf(“”%f,%f”,&a,&b); c=add(a,b); printf(“sum is %f”,c) 此處不必對add()作聲明(c). 此外,在文件開頭(所有函數(shù)定義之前),對函數(shù)進(jìn) 行了函數(shù)的統(tǒng)一聲明,可省去在主調(diào)函數(shù)中的聲明。第四十六張,PPT共七十二頁,創(chuàng)作于2022年6月如: char letter
25、(char,char ); /* 這三行處于所有函數(shù)之前, float f1(float,float ); 且在函數(shù)外部.*/ int i2( float,float); main( ) /* main內(nèi)不必說明所調(diào)用函數(shù)類型 */ char letter(char c1,char c2) /*定義letter()函數(shù)*/ . float f1(float x, float y ) /*定義f1( )函數(shù)*/ . int i2(float j, float k) /*定義i2( )函數(shù)*/ . 第四十七張,PPT共七十二頁,創(chuàng)作于2022年6月#include int fun(int n)in
26、t s=1, i;if(n=0) s=1;else for(i=1;i=n; i+) s = s*i;return s;int main()int a, b;scanf(%d, &a);b=fun(a);printf(%d的階乘為%dn, a,b);return 0;例10.8 從鍵盤輸入一個整數(shù)(0-16),求此數(shù)的階乘。Ch10_10_8.c第四十八張,PPT共七十二頁,創(chuàng)作于2022年6月例10.10 輸入二個整數(shù),進(jìn)行函數(shù)調(diào)用,問能否實現(xiàn)實參a,b的交換。#includeint swap(int *p3,int *p4) int m; m=*p3; *p3=*p4; *p4=m; re
27、turn 0; int main( ) int a,b; int *p1,*p2; printf(Please input a,b :); scanf(%d,%d,&a,&b); p1=&a; p2=&b; swap(p1,p2); printf(a=%d,b=%dn,a,b); return 0; 8P1 a運行: 8,3(回車)輸出: 3,8 3P2 8P33P4Ch10_10_10.c指針為參數(shù)第四十九張,PPT共七十二頁,創(chuàng)作于2022年6月10.5 函數(shù)的應(yīng)用例10.11 在main函數(shù)中定義了一個整型數(shù)組并初始化,通過調(diào)用自定義函數(shù)sum把數(shù)組中-1前的所有元素值相加.#inclu
28、de int sum(int b ) int s=0, i=0; while( bi!=-1 ) s += bi+; return s;int main() static int a=1,2,3,4,5,6,7,8,9,-1,6; printf(Total=%dn, sum(a) ); return 0;Ch10_10_11.c數(shù)組名作為函數(shù)的參數(shù)進(jìn)行調(diào)用.第五十張,PPT共七十二頁,創(chuàng)作于2022年6月例10.14 輸入一行英文字符,統(tǒng)計其中有多少單詞,單詞之間以空格為分隔#include int main()char string81;int num;gets(string);num=nu
29、mword(string);printf(There are %d wordsn, num);return 0;第五十一張,PPT共七十二頁,創(chuàng)作于2022年6月int numword(char *str)int i, num=0, word=0;char ch;for(i=0; (ch=stri )!= 0; i+)if(ch=) word=0;else if(word=0) word=1; num+; return num; num 統(tǒng)計單詞個數(shù), word用來判斷是否單詞的標(biāo)志.(1). 當(dāng)前字符為空格: 未出現(xiàn)新單詞 ,word=0, num 不累加。(2). 當(dāng)前字符為非空格(分兩種
30、情況):a. 前一字符為空格(word=0),新詞出 現(xiàn), word=1, num 加1 .b. 前一字符為非空格(word=1),未出 現(xiàn)新單詞, num 不加1 .Youarestudents.第五十二張,PPT共七十二頁,創(chuàng)作于2022年6月 (1). 函數(shù)的嵌套調(diào)用: C語言中的函數(shù)是平行的,不允許嵌套定義。 所有函數(shù)的作用域都處于同一嵌套深度,即不允許在函數(shù)體中又定義另一個函數(shù). 但允許嵌套調(diào)用函數(shù),即在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。10.6 函數(shù)的嵌套與遞歸調(diào)用第五十三張,PPT共七十二頁,創(chuàng)作于2022年6月 main( ) a( )函數(shù) b( )函數(shù) 調(diào)用函數(shù)a( )
31、 調(diào)用函數(shù)b( ) . 結(jié)束 return return 如:第五十四張,PPT共七十二頁,創(chuàng)作于2022年6月例 求三角形面積 area2=s(s-a)(s-b)(s-c)s=(a+b+c)/2smainarea# include # include void main() float a, b, c; float area(float a, float b, float c); float s(float a, float b, float c); scanf(%f%f%f, &a, &b, &c); printf(%fn, area(a, b, c);float area(float a
32、, float b, float c) float ss; ss=s(a,b,c); return sqrt(ss*(ss-a)*(ss-b)*(ss-c); float s(float a, float b, float c) return (a+b+c)/2;對被調(diào)函數(shù)的聲明第五十五張,PPT共七十二頁,創(chuàng)作于2022年6月開始調(diào)用(2).函數(shù)的遞歸調(diào)用(recursive) 調(diào)用一個函數(shù)的過程中, 出現(xiàn)了直接或間接地調(diào)用 該函數(shù)本身 , 稱之為函數(shù)的遞歸調(diào)用。 C語言的特點之一是允許函數(shù)的遞歸調(diào)用。 遞歸調(diào)用可以簡明 , 高效的解決問題(問題的一方面)。a. 直接遞歸調(diào)用; int f
33、(int x) int y , z; . z=f(y); return(z*z); 第五十六張,PPT共七十二頁,創(chuàng)作于2022年6月b. 間接遞歸調(diào)用: int f1(int x) int y,z; z=f2(y); return(z*z); int f2(int a ) int c; c=f1(a); return(3+c); 兩種調(diào)用都是無休至的自我調(diào)用??梢杂胕f語句來控制這種情況. 第五十七張,PPT共七十二頁,創(chuàng)作于2022年6月 通常用求一個數(shù)的階乘為例來說明遞歸函數(shù)。 1 (n=0,1) n!= n*(n-1)! (n1)例:10.18第五十八張,PPT共七十二頁,創(chuàng)作于202
34、2年6月 float fac(int n) float f; if (n0) printf (“n0, data error!”); exit(0); else if(n=0|n=1) f=1; else f=fac(n-1)*n; return(f) ; int main( ) int n ;float y; printf(“input a integer number:”); scanf(“%d”,&n); y=fac(n); printf(“%d!=%f”, n, y); n n-1 下面設(shè) n=3,進(jìn)行調(diào)用:ch10_10_18.c第五十九張,PPT共七十二頁,創(chuàng)作于2022年6月fa
35、c(int n) else if (n=1|n=0) f =1; else f=fac(n-1)*3; return(f); main() . ( n= =3 ) y=fac(n); . fac(int n) . ( n= =2)else if (n=1|n=0) f = 1; else f=fac(n-1)*2; return(f); fac(int n) . ( n= =1)else if (n=1|n=0) f = 1; else f=fac(n-1)*n; return(f); 11*2第六十張,PPT共七十二頁,創(chuàng)作于2022年6月 調(diào)用fac函數(shù)計算3的階乘時的情況: f=fac(
36、2)*3 1. 這時函數(shù)將調(diào)用自己,因此仍然要理解為調(diào)用一個單 獨的函數(shù)。 2. 每一次當(dāng)C語言中的任意函數(shù)被調(diào)用(不管是否遞歸), 函數(shù)都將獲得自己的一套局部變量和形式參數(shù)。 3. 函數(shù)遞歸時,必須有個if語句,迫使函數(shù)返回,進(jìn)而結(jié) 束遞歸.第六十一張,PPT共七十二頁,創(chuàng)作于2022年6月 1.數(shù)組名作函數(shù)參數(shù): 如:main( ) int array10; f1(array,10); f1(int arr,int n) .array0,arr0array, arr函數(shù)的應(yīng)用第六十二張,PPT共七十二頁,創(chuàng)作于2022年6月 實際上,實參數(shù)組與形參數(shù)組共同占用一段內(nèi)存空間. 在函數(shù)調(diào)用過程
37、中,如果形參數(shù)組arr的元素值發(fā)生變化,相應(yīng)實參數(shù)組的元素也發(fā)生同樣變化. .array0,arr0array, arr第六十三張,PPT共七十二頁,創(chuàng)作于2022年6月2.用多維數(shù)組名作函數(shù)參數(shù): 在被調(diào)用函數(shù)中對形參數(shù)組的定義時, 可以指定每一維的大小,也可以省略第一維的大小說明: 如 int array310; 或: int array 10;第六十四張,PPT共七十二頁,創(chuàng)作于2022年6月例: 有一個3*4 的數(shù)組,求所有元素中的最大值.ch10_10_18_1.c#include int max_value(int array4) int i,j,max; max=array00; for(i=0;i3;i+) for(j=0;jmax) max=arrayij; return (max); int main() int a34=1,3,5,7,2,4,6,8,15,17,34,12; printf(max_value is %dn,max_value(a); return 1; 第六十五張,PPT共七十二頁,創(chuàng)作于2022年6月例21: 建立一個數(shù)組a,有10個元素,通過函數(shù)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年四川制藥制劑有限公司招聘筆試參考題庫含答案解析
- 2025年安徽中瀚測繪有限公司招聘筆試參考題庫含答案解析
- 2025年西藏建設(shè)投資有限公司招聘筆試參考題庫含答案解析
- 年度三唑類殺菌劑市場分析及競爭策略分析報告
- 2025年福州貨運從業(yè)資格證題目答案解析
- 2025年廣西考貨運上崗證試答題
- 二零二五年度房地產(chǎn)公司項目掛靠合作合同6篇
- 2024版正式勞動合同協(xié)議
- 2024版健康產(chǎn)業(yè)園代建與健康管理合同3篇
- 二零二五年度智慧城市基礎(chǔ)設(shè)施安裝服務(wù)協(xié)議3篇
- 完整版:美制螺紋尺寸對照表(牙數(shù)、牙高、螺距、小徑、中徑外徑、鉆孔)
- TCI 373-2024 中老年人免散瞳眼底疾病篩查規(guī)范
- 2024四川太陽能輻射量數(shù)據(jù)
- 石油鉆采專用設(shè)備制造考核試卷
- 法人變更股權(quán)轉(zhuǎn)讓協(xié)議書(2024版)
- 研究生中期考核匯報模板幻燈片
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術(shù)規(guī)范(正式版)
- 培訓(xùn)機(jī)構(gòu)與學(xué)校合作協(xié)議書范本
- 留置導(dǎo)尿法操作評分標(biāo)準(zhǔn)
- 2024年高考數(shù)學(xué)經(jīng)典解答題-立體幾何專項復(fù)習(xí)17題(附答案)
- 麻醉管理-血氣分析在手術(shù)中的應(yīng)用
評論
0/150
提交評論