【正文】
遞歸函數(shù) fact(n) 遞歸式 遞歸出口 例 93分析 求 n! 遞歸定義 n! = n * (n1)! (n 1) n! = 1 (n = 0,1) include double fact(int n); int main(void) { int n。 i = n。 return result。 if (n==1 || n == 0) /* 遞歸出口 */ result = 1。 return 0。n)。 include double fact(int n); int main(void) { int n。 int main(void) { ……… f1( )。 int main(void) { ……… f1( )。 只起說(shuō)明作用,不分配存儲(chǔ)單元,對(duì)應(yīng)的存儲(chǔ)單元在全局變量定義處分配。 /*使用 局變量 x */ int f1( ) { ……… } 文件名 無(wú)法引用 靜態(tài)全局變量 寄存器變量和外部變量 ? 寄存器變量 register int 變量表 。 } } voi d c al(i nt s el) { ?? } 例 102 ? 字符處理 ? 與數(shù)學(xué)處理函數(shù)有關(guān)的說(shuō)明與定義 ? 輸入輸出函數(shù)中使用的有關(guān)說(shuō)明和定義 ? 字符串函數(shù)的有關(guān)說(shuō)明和定義 ? 定義某些常用內(nèi)容 ? 雜項(xiàng)說(shuō)明 ? 支持系統(tǒng)時(shí)間函數(shù) 常用標(biāo)準(zhǔn)頭文件 全局變量與程序文件模塊 ?局部變量 ?作用范圍:函數(shù)(復(fù)合語(yǔ)句)內(nèi)部 ?生命周期:從 函數(shù) 調(diào)用開(kāi)始-函數(shù) 調(diào)用結(jié)束 ?全局變量 ?作用范圍:從定義處到源文件結(jié)束 ?生命周期: 從 程序 執(zhí)行開(kāi)始-程序運(yùn)行結(jié)束 ?靜態(tài)局部變量 ?作用范圍:局部變量 ?生命周期:全局變量 外部變量( extern) ?在某個(gè)程序文件模塊中定義了全局變量 ?該全局變量可以在整個(gè)程序的所有文件模塊中起作用 ?在其他模塊中如果要使用該全局變量 , 必須將它聲明為外部變量 說(shuō)明這是一個(gè)在其他模塊中定義的全局變量 int x; void main() {……… } 文件名 extern int x。sel )。 } } v o id c a l( int s e l) { ?? } 文件模塊名: prog do u ble v o l _b all ( ) { ?? } do u ble v o l _c y li nd ( ) { ?? } do u ble v o l _c on e ( ) { ?? } 編譯連接后包含的內(nèi)容 double vol _ba ll ( ) { ?? } double vol _c y lind ( ) { ?? } double vol _cone ( ) { ?? } int ma in( voi d ) { int s el 。se l) 。 文件模塊名: p r o g 1 .c inc lud e “ p r o g 2 .c ” int ma in( v o id ) { int sel 。 ?在程序編譯時(shí)起作用 , 不是真正的 C語(yǔ)句 , 行尾沒(méi)有分號(hào) 。 文件包含 ? 格式 ? include 需包含的文件名 ? include “需包含的文件名 ” ? 作用 把指定的文件模塊內(nèi)容插入到 include 所在的位置 , 當(dāng)程序編譯連接時(shí) , 系統(tǒng)會(huì)把所有 include 指定的文件拼接生成可執(zhí)行代碼 。 ?程序-文件-函數(shù) ?大程序-若干程序文件模塊 各程序文件模塊分別編譯 , 再連接 ?整個(gè)程序只允許有一個(gè) main()函數(shù) ? 問(wèn)題:如何把若干程序文件模塊連接成一個(gè)完整的可執(zhí)行程序? ?當(dāng)一個(gè)C語(yǔ)言程序由多個(gè)文件模塊組成時(shí),整個(gè)程序只允許有一個(gè) main()函數(shù)。 一個(gè)大程序會(huì)由幾個(gè)文件組成 , 每一個(gè)文件又可能包含若干個(gè)函數(shù) 。 具有嵌套調(diào)用函數(shù)的程序,需要分別定義多個(gè)不同的函數(shù)體,每個(gè)函數(shù)體完成不同的功能,它們合起來(lái)解決復(fù)雜的問(wèn)題。 } double vol_ball( ) { …… } double vol_cylind( ) { …… } double vol_cone( ) { …… } main( ) cal ( ) vol_ball ( ) vol_cylind ( ) vol_cone ( ) 函數(shù)的嵌套調(diào)用 在一個(gè)函數(shù)中再調(diào)用其它函數(shù)的情況稱為函數(shù)的 嵌套調(diào)用 。 vol_cylind()。 …… } void cal (int sel) { …… vol_ball() …