freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言程序設(shè)計第2版下ppt-資料下載頁

2025-01-04 08:52本頁面
  

【正文】 /*定義外部變量 */ void main() { int power( int); /*函數(shù)聲明 */ int b=3,c,d,m; printf( ″enter the number a and its power m:\n″); scanf( ″%d,%d ″,& A,&m); c= A*b; printf( ″%d *%d=%d\n ″, A,b,c); d=power(m); printf( ″%d **%d=%d \n″, A,m,d); } 例: 用 extern將外部變量的作用域擴(kuò)展到其他文件 。 本程序的作用是給定b的值 , 輸入a和m , 求a b和 am的值 。文件 file1 .c中的內(nèi)容為: 文件 file2.c中的內(nèi)容為: extern A; /*聲明 A為一個已定義的外部變量 */ int power( int n) 。 { int i,y=1; for(i=1;i<=n;i++) y *= A; return(y); } 關(guān)于變量的聲明和定義: 對變量而言,聲明與定義的關(guān)系稍微復(fù)雜一些。在聲明部分出現(xiàn)的變量有兩種情況:一種是需要建立存儲空間的 (如: int a。 ),另一種是不需要建立存儲空間的(如: extern a;)。前者稱為“ 定義性聲明 ” (defining declaration) ,或簡稱 定義 ( definition)。 后者稱為“ 引用性聲明 ” (referencing declaration)。廣義地說,聲明包括定義,但并非所有的聲明都是定義。對“ int a?!?而言,它既是聲明,又是定義。而對“ extern a。” 而言,它是聲明而不是定義。 一般為了敘述方便,把 建立存儲空間的聲明稱定義 ,而 把不需要建立存儲空間的聲明稱為聲明 。顯然這里指的聲明是狹義的,即非定義性聲明。例如: void main() {extern A。 /*是聲明不是定義。聲明 A是一 個已定義的外部變量 */ … } int A。 作用域和生存期的小結(jié) (1)從作用域角度分,有局部變量和全局變量。它們采用的存儲類別如下: ? 局部變量包括: 自動變量、 靜態(tài)局部變量、寄存器變量。 形式參數(shù)可以定義為自動變量或寄存器變量 ? 全局變量包括: 靜態(tài)外部變量、外部變量 ( 2)從變量存在的時間來區(qū)分,有動態(tài)存儲和靜態(tài)存儲兩種類型。靜態(tài)存儲是程序整個運(yùn)行時間都存在,而動態(tài)存儲則是在調(diào)用函數(shù)時臨時分配單元。 ? 動態(tài)存儲 :自動變量 、 寄存器變量 、 形式參數(shù) ? 靜態(tài)存儲:態(tài)局部變量 、 靜態(tài)外部變量 、 外部變量 (3) 從變量值存放的位置來區(qū)分 ,可分為: ? 內(nèi)存中靜態(tài)存儲區(qū):靜態(tài)局部變量、靜態(tài)外部變量、 外部變量 ? 內(nèi)存中動態(tài)存儲區(qū):自動變量和形式參數(shù) ? CPU中的寄存器:寄存器變量 (4) static對局部變量和全局變量的作用不同。對局部變量來說 ,它使變量由動態(tài)存儲方式改變?yōu)殪o態(tài)存儲方式。而對全局變量來說 ,它使變量局部化,但仍為靜態(tài)存儲方式。從作用域角度看 ,凡有 static聲明的,其作用域都是局限的,或者是局限于本函數(shù)內(nèi),或者局限于本文件內(nèi)。 內(nèi)部函數(shù)和外部函數(shù) 根據(jù)函數(shù)能否被其他源文件調(diào)用 ,將函數(shù)區(qū)分為 內(nèi)部函數(shù) 和 外部函數(shù) 。 如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用 ,它稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時 ,在函數(shù)名和函數(shù)類型的前面加 static。即 static 類型標(biāo)識符 函數(shù)名 (形參表 ) 例如 : static int fun ( int a , int b ) 外部函數(shù) (1) 定義函數(shù)時 ,如果在函數(shù)首部的最左端加關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用。例如,函數(shù)首部可以寫為 extern int fun (int a, int b),這樣,函數(shù) fun就可以為其他文件調(diào)用。如果在定義函數(shù)時省略 extern,則隱含為外部函數(shù)。 (2) 在需要調(diào)用此函數(shù)的文件中 ,用 extern對函數(shù)作聲明,表示該函數(shù)是在其他文件中定義的外部函數(shù) 有一個字符串 ,內(nèi)有若干個字符 ,今輸入一個字符 ,要求程序?qū)⒆址性撟址麆h去 。 用外部函數(shù)實現(xiàn) 。 例題 解題思路 對str數(shù)組的字符逐個檢查,如果不是被刪除的字符(設(shè)刪除空格)就將它存放在數(shù)組中 (文件1) include void main() { extern void enter_string(char str[])。 extern void detele_string(char str[],char ch)。 extern void print_string(char str[])。/ *以上 3行聲明在本函數(shù)中將要調(diào)用的在其他文件中定義的 3個函數(shù) */ char c。 char str[80]。 scanf(%c,amp。c)。 detele_string(str,c)。 print_string(str)。 } 編寫程序 file2.c(文件2) include void enter_string(char str[80]) / * 定義外部函數(shù) enterstring*/ { gets(str)。 / *向字符數(shù)組輸入字符串 */ } file3.c(文件3) void delete_string(char str[],char ch) / *定義外部函數(shù) delete_string */ { int i,j。 for(i=j=0。str[i]!=39。\039。i++) if(str[i]!=ch) str[j++]=str[i]。 str[i]=39。\039。 } file4.c(文件4) include void print_string(char str[]) { printf(%s\n,str)。 } 運(yùn)行情況如下: abcdefgc ↙ (輸入str) c ↙ (輸入要刪去的字符) abdefg (輸出已刪去指定字符的字符串) 提高部分 如果實參表列包括多個實參 , 對實參求值的順序并不是確定的 , 有的系統(tǒng)按自左至右順序求實參的值 , 有的系統(tǒng) (如 Turbo C , Turbo C++ ,VC++ )則按自右至左順序求值 。 例: include void main() { int f(int a,int b)。 /* 函數(shù)聲明 */ int i=2,p。 p=f(i,++i)。 /* 函數(shù)調(diào)用 */ printf(%d\n,p)。 } int f(int a,int b) /* 函數(shù)定義 */ { int c。 if(ab) c=1。 else if(a==b) c=0。 else c=1。 return(c)。 } 如果按自左至右順序求實參的值,則函數(shù)調(diào)用相當(dāng)于f(2,3) 如果按自左至右順序求實參的值,則函數(shù)調(diào)用相當(dāng)于f( 3,3) 對于函數(shù)調(diào)用 int i=2,p。 p=f(i,++i)。 遞歸的典型例子 Hanoi(漢諾)塔問題 Hanoi ( 漢諾 ) 塔問題 。 這是一個古典的數(shù)學(xué)問題 , 是一個用遞歸方法解題的典型例子 。 古印度有一個梵塔 , 塔內(nèi)有3個柱子 A、 B、 C, 開始時A柱上套有64個盤子 , 盤子大小不等 , 大的在下 , 小的在上 ( 見下圖 ) 。 有一個老和尚想把這64個盤子從A柱移到C柱 , 但規(guī)定每次只能移動一個盤 , 且在任何時候 3個柱上的盤子都是大盤在下 , 小盤在上 。 在移動過程中可以利用 B柱 , 據(jù)稱 , 當(dāng)移動完這些盤子時 , 世界末日就到了 。 現(xiàn)在利用計算機(jī)來模擬移動盤的過程 。 要求輸出移動盤子的每一步 。 Hanoi( 漢諾塔 ) 問題 : 由上面的分析可知:將n個盤子從A座移到C座可以分解為以下 3個步驟: -1個盤借助C座先移到B座上。 。 -1個盤從B座借助于A座移到C座上。 程序如下: include void main() { void hanoi(int n,char one,char two,char three)。 /* 對 hanoi函數(shù)的聲明 */ int m。 printf(input the number of diskes:)。 scanf(“%d”,amp。m)。 printf(The step to moveing %d diskes:\n,m)。 hanoi(m,39。A39。,39。B39。,39。C39。)。 } void hanoi(int n,char one,char two,char three) /* 定義 hanoi函數(shù) ,將n個盤從 one座借助 two座,移到three座 */ { void move(char x,char y)。 /* 對 move函數(shù)的聲明 */ if(n==1) move(one,three)。 else { hanoi(n1,one,three,two)。 move(one,three)。 hanoi(n1,two,one,three)。 } } void move(char x,char y) /* 定義 move函數(shù) */ { printf(“%c%c\n,x,y)。 } 運(yùn)行情況如下: input the number of diskes:3↙ The steps to noving 3 diskes: A-->C A-->B C-->B A-->C B-->A B-->C A-->C 本章小結(jié) C語言中,函數(shù)是用來完成某一個特定功能的。 C程序是由一個或多個函數(shù)組成的。函數(shù)是 C程序中的基本單位。 :系統(tǒng)提供的 庫函數(shù) 和用戶根據(jù)需要 自己定義的函數(shù) 。 “定義”和“聲明”不是一回事。 4. (1)函數(shù)類型 函數(shù)名 (參數(shù)類型 1 參數(shù)名 1,參數(shù)類型 2 參數(shù)名2, … ,參數(shù)類型 n 參數(shù)名 n); (2)函數(shù)類型 函數(shù)名 (參數(shù)類型 1,參數(shù)類型 2, … ,參數(shù)類型n); 、類型一致 (或賦值兼容 )。 本章小結(jié) 6. 在調(diào)用一個函數(shù)的過程中,又調(diào)用另外一個函數(shù),稱為函數(shù)的嵌套調(diào)用。在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。 7. 用數(shù)組名作函數(shù)實參,向形參傳遞的是數(shù)組首元素的地址 8. 變量的 作用域是指變量有效的范圍 。根據(jù)定義變量的位置不同,變量分為 局部變量 和 全局變量 。凡是 在函數(shù)內(nèi)或復(fù)合語句中定義的變量都是局部變量 , 在函數(shù)外定義的變量都是全局變量 , 9. 變量的生存期指的是變量存在的時間。 10. 變量的存儲類別共有 4種: auto,static,register,extern。
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1