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

正文內(nèi)容

c程序設(shè)計函數(shù)ppt課件-資料下載頁

2024-10-19 04:35本頁面
  

【正文】 程序如下: float average( float array[ 10]) { int i; float aver, sum= array[ 0]; for( i= 1; i< 10; i++) sum= sum+ array[ i]; aver= sum/ 10; return( aver); } main() { float score[ 10], aver; int i; printf( input 10 scores:\ n); for( i= 0; i< 10; i++) scanf( % f,& score[ i]); printf( \ n); aver= average( score); printf( average score is % 5. 2f, aver); } 運行情況如下: input 10 scores: 100567898. 576879967. 57597 average score is 83. 40 說明: (1) 用數(shù)組名作函數(shù)參數(shù),應(yīng)該在主調(diào)函數(shù)和被調(diào)用函數(shù)分別定義數(shù)組,例中 array是形參數(shù)組名,score是實參數(shù)組名,分別在其所在函數(shù)中定義,不能只在一方定義。 (2) 實參數(shù)組與形參數(shù)組類型應(yīng)一致(今都為 float型),如不一致,結(jié)果將出錯。 (3) 在被調(diào)用函數(shù)中聲明了形參數(shù)組的大小為 10,但在實際上,指定其大小是不起任何作用的,因為C編譯對形參數(shù)組大小不做檢查,只是將實參數(shù)組的首地址傳給形參數(shù)組。因此, score[ n]和array[ n]指的是同一單元。 (4) 形參數(shù)組也可以不指定大小,在定義數(shù)組時在數(shù)組名后面跟一個空的方括弧,為了在被調(diào)用函數(shù)中處理數(shù)組元素的需要,可以另設(shè)一個參數(shù),傳遞數(shù)組元素的個數(shù),例 。 例 float average( float array[ ] , int n) { int i; float aver, sum= array[ 0]; for( i= 1; i< n; i++) sum= sum+ array[ i]; aver= sum/ n; return( aver); } main() { float score1[ 5]={ 98. 5, 97, 91. 5, 60,55}; float score2[ 10] ={, , 99, , 77, , 54, 60, }。 printf(the average of class A is %\ n,average(score1, 5))。 printf(the average of class B is %\ n,average(score2, 10))。 } 運行結(jié)果如下: the average of class A is 80. 40 the average of class B is 78. 20 可以看出,兩次調(diào)用 average函數(shù)時需要處理的數(shù)組元素個數(shù)是不同的,在第一次調(diào)用時用一個實參 5傳遞給形參 n,表示求前面 5個學生的平均分。第 2次調(diào)用時,求 10個學生平均分。 (5) 最后應(yīng)當說明一點 : 用數(shù)組名作函數(shù)實參時 ,不是把數(shù)組的值傳遞給形參,而是把實參數(shù)組的起始地址傳遞給形參數(shù)組,這樣兩個數(shù)組就共占同一段內(nèi)存單元。見圖 。假若 a的起始地址為 1000,則 b數(shù)組的起始地址也是 1000,顯然, a和 b同占一段內(nèi) 存單元, a[ 0]與 b[ 0]同占一個單元 …… 。由此可以看到,形參數(shù)組中各元素的值如發(fā)生變化會使實參數(shù)組元素的值同時發(fā)生變化,從圖 容易理解的。這一點是與變量做函數(shù)參數(shù)的情況不相同的,務(wù)請注意。在程序設(shè)計中可以有意識地利用這一特點改變實參數(shù)組元素的值 (如排序 )。 關(guān)于數(shù)組名作為函數(shù)參數(shù),將在第 9章介紹完指針變量后作進一步的說明。 起始地址 1000 a[ 0] a[ 1] a[ 2] a[ 3] a[ 4] a[ 5] a[ 6] a[ 7] a[ 8] a[ 9] 2468101214161820 b[ 0] b[ 1] b[ 2] b[ 3] b[ 4] b[ 5] b[ 6] b[ 7] b[ 8] b[ 9] 圖 例 用選擇法對數(shù)組中 10個整數(shù)按由小到大排序。所謂選擇法就是先將 10個數(shù)中最小的數(shù)與 a[ 0]對換 。再將a[ 1]到 a[ 9]中最小的數(shù)與 a[ 1]對換 …… 每比較一輪 ,找出一個未經(jīng)排序的數(shù)中最小的一個。共比較 9輪。 下面以 5個數(shù)為例說明選擇法的步驟。 a[ 0] a[ 1] a[ 2] a[ 3] a[ 4] 3 6 1 9 4 未排序時的情況 1 6 3 9 4 將 5個數(shù)中最小的數(shù) 1與 a[ 0]對換 1 3 6 9 4 將余下的 4個數(shù)中最小的數(shù) 3與 a[ 1]對換 1 3 4 9 6 將余下的 3個數(shù)中最小的數(shù) 4與 a[ 2]對換 1 3 4 6 9 將余下的 2個數(shù)中最小的數(shù) 6與 a[ 3]對換,至此完成排序根據(jù)此思路編寫程序如下: void sort( int array[], int n) { int i,j, k, t; for( i= 0; i< n- 1; i++) { k= i; for(j= i+ 1;j< n;j++) if( array[j]< array[ k]) k=j; t= array[ k]; array[ k]= array[ i]; arra y[ i]= t;} } main() { int a[ 10], i; printf( enter the array\ n); for( i= 0; i< 10; i++) scanf( % d,& a[ i]); sort( a, 10); printf( the sorted array∶ \ n); for( i= 0; i< 10; i++) printf( % d, a[ i]); printf( \ n); } 可以看到在執(zhí)行函數(shù)調(diào)用語句 sort( a, 10);之前和之后, a數(shù)組中各元素的值是不同的。原來是無序的,執(zhí)行 sort( a, 10);后, a數(shù)組已經(jīng)排好序了,這是由于形參數(shù)組 array已用選擇法進行排序了,形參數(shù)組改變也使實參數(shù)組隨之改變。 3. 用多維數(shù)組名作函數(shù)參數(shù) 多維數(shù)組元素可以作為實參,這點與前述相同。 可以用多維數(shù)組名作為實參和形參,在被調(diào)用函數(shù)中對形參數(shù)組定義時可以指定每一維的大小,也可以省略第一維的大小說明。如 int array[ 3][ 10];或 int array[ ][ 10];二者都合法而且等價。但是不能把第二維以及其他高維的大小說明省略。如下面是不合法的: int array[ ][ ]; 因為從實參傳送來的是數(shù)組起始地址,在內(nèi)存中各元素是一行接一行地順序存放的,而并不區(qū)分行和列,如果在形參中不說明列數(shù),則系統(tǒng)無法決定應(yīng)為多少行多少列。不能只指定第一維而省略第二維,下面寫法是錯誤的: int array[ 3][]; 形參數(shù)組第一維的大小可以是任意的。例如,實參數(shù)組定義為 int score[ 5][ 10];而形參數(shù)組定義為int array[ 3][ 10];均可以, C編譯不檢查第一維的大小。請讀者從“傳遞地址”這一特點出發(fā)來思考這個問題。 例 3 4的矩陣,求所有元素中的最大值。 解此題的算法是:先使變量 max的初值為矩陣中第一個元素的值,然后將矩陣中各個元素的值與 max相比,每次比較后都把“大者”存放在 max中,全部元素比較完后, max 的值就是所有元素的最大值。 程序如下: maxvalue( int array[ ][ 4]) { int i,j, max; max= array[ 0][ 0]; for( i= 0; i< 3; i++) for(j= 0;j< 4;j++) if( array[ i][j]> max) max= array[ i] [ j]; return( max); } main() { int a[ 3][ 4]={{ 1, 3, 5, 7},{ 2, 4,6, 8},{ 15, 17, 34, 12}}; printf( max value is% d\ n, maxvalue( a)); } 運行結(jié)果如下: max value is 34 局部變量 在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不能使用這些變量的。這稱為“局部變量”。如: float f1( int a)/*函數(shù) f1*/ {int b,c。 … a、 b、 c有效 } char f2(int x,int y)/*函數(shù) f2*/ 局部變量和全局變量 {int i,j。 } x、 y、 i、 j有效 main( )/*主函數(shù) */ {int m,n。 … m、 n有效 } 說明 : (1) 主函數(shù) main中定義的變量 (m,n)也只在主函數(shù)中有效 ,而不因為在主函數(shù)中定義而在整個文件或程序中有效 ,這是和 PASCAL不同的。主函數(shù)也不能使用其他函數(shù)中定義的變量。 (2) 不同函數(shù)中可以使用相同名字的變量 ,它們代表不同的對象 ,互不干擾。例如 ,在 f1函數(shù)中定義了變量b,c,倘若在 f2函數(shù)中也定義變量 b和 c,它們在內(nèi)存中占不同的單元 ,互不混淆。 (3) 形式參數(shù)也是局部變量。例如 f1函數(shù)中的形參 a,也只在 f1函數(shù)中有效。其他函數(shù)不能調(diào)用。 (4) 在一個函數(shù)內(nèi)部 ,可以在復(fù)合語句中定義變量 ,這些變量只在本復(fù)合語句中有效 ,這種復(fù)合語句也可稱為“分程序”或“程序塊”。 main ( ) {int a,b。 … {int c。 c=a+b。 c在此范圍內(nèi)有效 a,b在此范圍內(nèi)有效 … } … } 變量 c只在復(fù)合語句 (分程序 )內(nèi)有效 ,離開該復(fù)合語句該變量就無效 ,釋放內(nèi)存單元。 全局變量 前已介紹 ,程序的編譯單位是源程序文件 ,一個源文件可以包含一個或若干個函數(shù) \.在函數(shù)內(nèi)定義的變量是局部變量 ,而在函數(shù)之外定義的變量稱為外部變量 ,外部變量是全局變量 (也稱全程變量 )。全局變量可以為本文件中其他函數(shù)所共用。它的有效范圍為從定義變量的位置開始到本源文件結(jié)束。如 : int p=1,q=5。/ / float f1(a)/ 定義函數(shù) f1 / int a。 {int b,c。 … } char c1,c2。/ / 全局變量 p,q char f2 (int x, int y)/*定義函數(shù) f2/ 的作用范圍 {int i,j。 全局變量 c1, … c2 的作用范圍 } main ( )/ / {int m,n。 … } p、 q、 c c2都是全局變量,但它們的作用范圍不同,在 main函數(shù)和 f2函數(shù)中可以使用全局變量 p、q、 c c2,但在函數(shù) f1中只能使用全局變量 p、 q,而不能使用 c1和 c2。 在一個函數(shù)中既可以使用本函數(shù)中的局部變量,又可以使用有效的全局變量。打個通俗的比方:國家有統(tǒng)一的法律和法令,各省還可以根據(jù)需要制定地方的法律、法令。在甲省,國家統(tǒng)一的法律法令和甲省的法律法令都是有效的,而在乙省,則國家統(tǒng)一的和乙省的法律法令有效。顯然,甲省的法律法令在乙省無效。 說明: (1) 設(shè)全局變量的作用是增加了函數(shù)間數(shù)據(jù)聯(lián)系的渠道。由于同一文件中的所有函數(shù)都能引用全局變
點擊復(fù)制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1