數(shù)學(xué)第6章-數(shù)組課件_第1頁
數(shù)學(xué)第6章-數(shù)組課件_第2頁
數(shù)學(xué)第6章-數(shù)組課件_第3頁
數(shù)學(xué)第6章-數(shù)組課件_第4頁
數(shù)學(xué)第6章-數(shù)組課件_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 數(shù)組C程序設(shè)計教程南京審計學(xué)院計算機(jī)科學(xué)與技術(shù)系孫玉星第1頁,共82頁。內(nèi)容提要數(shù)組類型;常用算法:排序、求最大最小值等;用字符數(shù)組存取字符串;使用字符串處理函數(shù)處理字符串第2頁,共82頁。為什么使用數(shù)組例子:要讀入某班全體50位同學(xué)某科學(xué)習(xí)成績,然后進(jìn)行簡單處理(求平均成績、最高分、最低分、排序)若用簡單變量,需50個不同變量名,要用很多個scanf命令 int score1,score2,score50; scanf(%d,%d,%d,&score1,&score2,&score3); scanf(%d,%d,%d,&score4,&score5,&score6);而用數(shù)組,可共用

2、一個scanf命令并利用循環(huán)結(jié)構(gòu)讀取 int score50,i; for (i=0;i50;i+) scorei=i; scanf(%d,&scorei); 保存大量同類型的相關(guān)數(shù)據(jù)第3頁,共82頁。數(shù)組(Array)的定義 定義 存儲類型 數(shù)據(jù)類型 數(shù)組名 整數(shù)1 整數(shù)2 整數(shù)n;a9a8a7a1a0數(shù)組首地址int a10;定義一個有10個int型元素的數(shù)組系統(tǒng)會在內(nèi)存分配連續(xù)的10個int空間給此數(shù)組直接對a的訪問,就是訪問此數(shù)組的首地址第4頁,共82頁。數(shù)組(Array)的定義 定義 存儲類型 數(shù)據(jù)類型 數(shù)組名 整數(shù)1 整數(shù)2 整數(shù)n;a9a8a7a1a0int a10;數(shù)組大小必須

3、是常量表達(dá)式(常量或符號常量),其值必須為正,不能為變量。數(shù)組一旦定義,不能改變大小數(shù)組大小最好用宏來定義,以適應(yīng)未來可能的變化#define SIZE 10 int aSIZE;第5頁,共82頁。一維數(shù)組和多維數(shù)組一維數(shù)組用一個下標(biāo)確定各元素在數(shù)組中的順序可用排列成一行的元素組來表示如 int a5; 二維數(shù)組用兩個下標(biāo)確定各元素在數(shù)組中的順序可用排列成i行,j列的元素組來表示如 int b23; n維數(shù)組用n個下標(biāo)來確定各元素在數(shù)組中的順序如 int c324;n3時,維數(shù)組無法在平面上表示其各元素的位置a0a1a2a3a4b00b01b02b10b11b12第6頁,共82頁。數(shù)組的初始化

4、數(shù)組定義后的初值仍然是隨機(jī)數(shù),一般需要我們來初始化 int a5 = 12, 34, 56 ,78 ,9 ; int a5 = 0 ; int a = 11, 22, 33, 44, 55 ; int a5; a5 = 12, 34, 56 ,78 ,9 ;第7頁,共82頁?!纠弧恳韵鲁绦虻倪\(yùn)行結(jié)果是什么?main() int a3=1,2,3,4,5,6,0; printf(%d,%d,%dn,a11,a21,a31);1 2 34 5 06 0 00 0 0結(jié)果:5, 0, 0【例二】若int a 3=1, 2, 3, 4, 5, 6, 7,則a數(shù)組的第一維大小是多少? 1 2 34 5

5、 67 0 0二維數(shù)組的初始化示例第8頁,共82頁。習(xí)題6.1以下能對外部的一維數(shù)組a進(jìn)行正確初始化的語句是: 。A) int a10 = (0,0,0,0,0);B) int a10 = ;C) int a = 0;D) int a10 = 10*1;以下能對外部的二維數(shù)組a進(jìn)行正確初始化的語句是: 。A) int a2 = 1,0,1,5,2,3;B) int a3 = 1,2,1,5,2,3;C) int a24 = 1,2,1,5,2,6;D) int a3 = 1,0,2,2,3;書上錯誤 P152第9頁,共82頁。從類型的角度理解數(shù)組int a10;定義一個有10個int型元素的數(shù)

6、組a的類型可以看作int10只是看作,語法并不允許這么定義: int10 a;int a2010;看作定義一個有20個int10型元素的數(shù)組a0、 a1a19的類型是int10所以a00a199的類型是int此原理決定了數(shù)組在內(nèi)存的分布規(guī)律,也解釋了數(shù)組的很多語法現(xiàn)象第10頁,共82頁。數(shù)組的存儲結(jié)構(gòu)根據(jù)數(shù)組的數(shù)據(jù)類型,為每一元素安排相同長度的存儲單元根據(jù)數(shù)組的存儲類型,將其安排在內(nèi)存的動態(tài)、靜態(tài)存儲區(qū)或寄存器區(qū)用sizeof(a)來獲得數(shù)組a所占字節(jié)數(shù)short第11頁,共82頁。數(shù)組的引用數(shù)組名 下標(biāo)1 下標(biāo)2 下標(biāo)n下標(biāo)都是從0開始,養(yǎng)成從0開始查數(shù)的職業(yè)病使用a0、a1、a2、a9這樣

7、的形式訪問每個元素數(shù)組下標(biāo)(index)既可以是常量,也可以是整型表達(dá)式,允許快速地隨機(jī)訪問,如ai可以像使用普通變量一樣使用他們第12頁,共82頁。數(shù)組的引用數(shù)組名 下標(biāo)1 下標(biāo)2 下標(biāo)n下標(biāo)越界是大忌!編譯程序不檢查是否越界下標(biāo)越界,將訪問數(shù)組以外的空間那里的數(shù)據(jù)是未知的,不受我們掌控,可能帶來嚴(yán)重后果第13頁,共82頁。b0b1b2b3b4b5b6b7b8b9ca如果下標(biāo)值小于0或超過數(shù)組長度時會出現(xiàn)什么情況?運(yùn)行程序或單步執(zhí)行觀察變量變化情況可以看到,變量c和a的值因數(shù)組越界而被悄悄破壞了12345612078910114044484c5054585c6064686c第14頁,共82頁

8、。二維數(shù)組的存儲結(jié)構(gòu)short int a23;a0a1a10a11a12a00a01a02存放順序:按行存放先順序存放第0行的元素再存放第1行的元素a00a01a02a10a11a12所以需要知道數(shù)組的每一行 有多少列,這樣從起始地址開始,才能正確的讀出數(shù)組的元素第15頁,共82頁。如何使兩個數(shù)組的值相等main() int a4 = 1,2,3,4, b4; b = a; 解決方法法1:逐個元素賦值 b0=a0; b1=a1; b2=a2; b3=a3;法2:通過循環(huán)賦值 int i; for (i=0;i4;i+) bi = ai; 原因:數(shù)組名表示數(shù)組的首地址,其值不可改變!第16頁,

9、共82頁。如何使兩個數(shù)組的值相等如何使兩個二維數(shù)組的值相等?通過雙重循環(huán)賦值 int a42=1,2,3,4,5,6,7,8; int b42; int i,j; for (i=0; i4; i+) for (j=0; j2; j+) bij = aij; 第17頁,共82頁。如何輸入數(shù)組的值如何輸入二維數(shù)組的值?使用雙重循環(huán) int a42; int i,j; for (i=0; i4; i+) for (j=0; j2; j+) scanf(%d, &aij); 第18頁,共82頁。例6.1 兔子繁殖問題打印每個月和年底時的總的兔子對數(shù)Fibonacci數(shù)列 123581321345589

10、144233, 第19頁,共82頁。#include #define YEAR_MONTH 12main()int fYEAR_MONTH+1 = 0,1,2;int month;for (month=3; month=YEAR_MONTH; month+)fmonth = fmonth-1 + fmonth-2; for (month=1; month=YEAR_MONTH; month+)printf(%dt, fmonth); printf(nsum = %dn, fYEAR_MONTH); 例6.1第20頁,共82頁。例6.2 打印最高分從鍵盤輸入學(xué)生人數(shù)n;從鍵盤輸入所有學(xué)生的學(xué)號和

11、成績分別存入數(shù)組num和score假設(shè)其中的一個學(xué)生成績?yōu)樽罡適axScore = score0;對所有學(xué)生成績進(jìn)行比較,即 for (i=1; i maxScore則修改maxScore值為scorei 打印最高分maxScore第21頁,共82頁。.main() .for (i=0; in; i+) scanf(%ld%f, &numi, &scorei); maxScore = score0;for (i=1; i maxScore) maxScore = scorei; printf(maxScore = %.0fn, maxScore); 例6.2 打印最高分第22頁,共82頁。思考

12、題#include main()int a10, n, max, min, maxPos, minPos;for (n=0; n10; n+) scanf(%d,&an);max = min = ;maxPos = minPos = ;for (n=0; nmax n anmin n 輸入10個數(shù), 輸出最小值最大值和它們所對應(yīng)的下標(biāo)。思考:能否取消max,min這兩個變量?用minPox記錄最小值對應(yīng)的下標(biāo)aminPox就是最小值 a0 0 /輸入10個數(shù)第23頁,共82頁。max(i=0)max(i=2)max(i=3)計算最大值算法第24頁,共82頁。排序算法選擇法排序冒泡排序第25頁,

13、共82頁。選擇法排序k=1k=2k=0k=1第26頁,共82頁。選擇法排序k=3k=4k=3k=4第27頁,共82頁。例初始: 49 38 65 97 76 13 27 kji=11349一趟: 13 38 65 97 76 49 27 i=22738二趟: 13 27 65 97 76 49 38 三趟: 13 27 38 97 76 49 65 四趟: 13 27 38 49 76 97 65 五趟: 13 27 38 49 65 97 76 六趟: 13 27 38 49 65 76 97 kkkkjjjjjjjjjj從小到大排序第28頁,共82頁。i=0 in-1akajk=j假假真真

14、j=j+1交換ai和ak輸出數(shù)組ak=i, j=i+1i=i+1jn假從大到小排序流程圖for(i = 0; i n-1; i+) k = i; for(j = i + 1; j ak) k = j; temp = ak; /*交換*/ ak = ai; ai = temp; 第29頁,共82頁。選擇法排序選擇法排序 for (i=0; in-1; i+) k = i; for (j=i+1; j scorek) 記錄此輪比較中最高分的元素下標(biāo) k = j; 若k中記錄的最大數(shù)不在位置i,則 “交換成績scorek和scorei”, 交換學(xué)號numk和numi;第30頁,共82頁。冒泡排序算法

15、排序過程:(1)比較第一個數(shù)與第二個數(shù),若為逆序a0a1,則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上(2)對前n-1個數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置(3)重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束第31頁,共82頁。38 49 65 76 13 27 30 97第二趟排序38 49 65 13 27 30 76第三趟排序38 49 13 27 30 65第四趟 排序38 13 27 30 49第五趟 排序 13 27 30 38第六趟 排序13 27 30第七趟 排

16、序49 38 65 97 76 13 27 30第一趟排序 n=83849769713972797309713767676273013652765306513134949304927382738303813 27結(jié)束第32頁,共82頁。i=1i=2i=3i=4i=5ajaj+1j=0 to 4j=0 to 3j=0 to 2j=0 to 6-1-i9 8 8 8 8 8 5 4 4 0 8 9 5 5 5 5 4 5 0 45 5 9 4 4 4 6 0 54 4 4 9 6 6 0 66 6 6 6 9 0 80 0 0 0 0 9 第33頁,共82頁。冒泡排序算法 9 8 5 4 6 0i

17、=1j=0: 8 9 5 4 6 0j=1: 8 5 9 4 6 0j=2: 8 5 4 9 6 0j=3: 8 5 4 6 9 0j=4: 8 5 4 6 0 9int main(void ) int i, j, n, t, a10; n = 6; for(i = 0; i n; i+) scanf(%d, &ai); for(i = 1; i n; i+) for(j = 0; j aj+1) t = aj; aj = aj+1; aj+1 = t; return 0;第34頁,共82頁。查找算法順序查找不需排序折半查找(數(shù)據(jù)結(jié)構(gòu))需要先排序第35頁,共82頁。順序查找哈,找到了!事先不必

18、排序 flag = 0; for(i = 0; i =5)第36頁,共82頁。折半查找數(shù)組下標(biāo) 0 1 2 3 4 5 6 第一次循環(huán):99011 99013 99015 99017 99019 查找值x=99017 low mid high xamid, low=mid+1第二次循環(huán):99011 99013 99015 99017 99019 low=mid high x=amid,找到哈,找到了!按升序排序99011 99013 99015 99017 99019第37頁,共82頁。int low, high, mid, find=-1;low = 0; high = n - 1; whi

19、le (low amid) low = mid + 1; else if (x amid) high = mid - 1; else find=mid; if (find=-1) printf(“未找到!”);else printf(“%d在數(shù)組下標(biāo)為%d位置”,x,find);找到時find賦值為找到位置找不到時 輸出未找到如果按降序排序,那么如何修改程序?第38頁,共82頁。字符串(String)與字符數(shù)組用雙引號括起的一串字符是字符串常量,C語言自動為其添加0結(jié)束符How are youH o w a r e y o u 0一串以0結(jié)尾的字符在C語言中被看作字符串第39頁,共82頁。字符

20、串(String)與字符數(shù)組C語言并沒有為字符串提供任何專門的表示法,完全使用字符數(shù)組和字符指針來處理字符數(shù)組每個元素都是字符類型的數(shù)組char str80;H o w a r e y o u 0H o w a r e y o u 0是字符數(shù)組,但不代表字符串?dāng)?shù)組的最后一個元素必須是0第40頁,共82頁。字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進(jìn)行初始化 char str6 = C,h,i,n,a,0; 用字符串常量直接對數(shù)組初始化 char str6 = China; char str6 = China;第41頁,共82頁。逐個輸入輸出for (i=0; stri!=0; i+) putchar(

21、stri);putchar(n);char str10;字符數(shù)組的輸入輸出 一般不用字符串長度控制第42頁,共82頁。一次性輸入輸出scanf(%s,str); printf(%s,str);char str10;字符數(shù)組的輸入輸出 gets(str); puts(str);不能輸入帶空格的字符串可以輸入帶空格的字符串第43頁,共82頁。一次性輸入輸出scanf(%s,str); printf(%s,str);char str10;字符數(shù)組的輸入輸出 gets(str); puts(str);空格、回車或跳格(Tab)符作為輸入數(shù)據(jù)的分隔符,因而不能被讀入,輸入遇到這些字符時,系統(tǒng)認(rèn)為字符串輸

22、入結(jié)束第44頁,共82頁。字符串處理函數(shù)#include strcpy(目的字符串,源字符串);string copystrlen(字符串);string lengthstrcat(目的字符串,源字符串);string combinationstrcmp(字符串1,字符串2);string comparison第45頁,共82頁。計算字符串長度#include strlen(字符串);string lengthchar str10 = China;printf(%d, strlen(str);打印結(jié)果是 5,6,還是10? C h i n a 0 0 0 0 0不包括0的實際字符的個數(shù)第46頁

23、,共82頁。用字符數(shù)組實現(xiàn)的計算字符串長度函數(shù)unsigned int MyStrlen(char str) int i;unsigned int len = 0; for (i=0; stri!=0; i+) len+; return (len); #include strlen(字符串);string length想想這個函數(shù)是如何實現(xiàn)字符串長度計算的?函數(shù)的入口和出口?第47頁,共82頁。用字符數(shù)組實現(xiàn)的計算字符串長度函數(shù)unsigned int MyStrlen(char str) int i;unsigned int len = 0; for (i=0; stri!=0; i+) l

24、en+; return (len); 統(tǒng)計實際字符個數(shù)不含0strii=0i=1i=2i=3i=4i=5stri=0len012345 H e l l o 0 第48頁,共82頁。計算字符串長度#include strlen(字符串);string lengthlen = strlen(str);for (i=0; ilen; i+) putchar(stri);putchar(n);用長度控制字符串輸出第49頁,共82頁。字符串拷貝#include strcpy(目的字符串,源字符串);string copy字符串能否用=整體復(fù)制?str2 = str1;strcpy(str2, str1)

25、;注意復(fù)制的方向!str2必須足夠大!第50頁,共82頁。字符串拷貝#include strcpy(目的字符串,源字符串);string copy字符串能否用=整體復(fù)制?str2 = str1;strcpy(str2, str1);想想這個函數(shù)是如何實現(xiàn)字符串拷貝的?第51頁,共82頁。用字符數(shù)組編程實現(xiàn)的字符串拷貝函數(shù)void MyStrcpy(char dstStr, char srcStr)int i = 0; while (srcStri != 0) dstStri = srcStri; i+; dstStri = 0; H e l l o C h i n a 0 srcStridst

26、StriHi=0ei=1li=2li=3oi=4i=5Ci=6hi=7ii=8ni=9ai=100srcStri=0第52頁,共82頁。字符串連接#include strcat(目的字符串,源字符串);string combinationstrcat(str2, str1);str2必須足夠大!H e l l o 0 0 0 0 0 0 0 C h i n a 0H e l l o C h i n a 0 0第53頁,共82頁。字符串比較#include strcmp(字符串1,字符串2);string comparison字符串能否用,=比較大???if (str2 = str1)if (st

27、rcmp(str2, str1) = 0)第54頁,共82頁。字符串比較#include strcmp(字符串1,字符串2);string comparison字符串是如何比較大小的?當(dāng)出現(xiàn)第一對不相等的字符時,就由這兩個字符決定所在字符串的大小,返回其ASCII碼比較的結(jié)果值comparecomputercompare computer 表示為strcmp(str1, str2) 0為真第55頁,共82頁。#include #include #define ARRA_SIZE 80main()int n, num;char strARRA_SIZE, minARRA_SIZE;printf(

28、Please enter five names:n);gets(str); strcpy(min, str); for (n=1; n5; n+)gets(str); if (strcmp(str, min) 0) strcpy(min, str); printf(The min is:);puts(min); 從鍵盤任意輸入5個學(xué)生的姓名,編程找出并輸出按字典順序排在最前面的學(xué)生姓名 等價于求最小字符串 例6.9 第56頁,共82頁。這一章我們學(xué)習(xí)了數(shù)組數(shù)據(jù)類型在什么情況下使用數(shù)組這種數(shù)據(jù)類型 向函數(shù)傳遞一維數(shù)組和二維數(shù)組的方法 常用算法求最大值,排序,查找第57頁,共82頁。作業(yè)編程實現(xiàn)從

29、鍵盤任意輸入20個整數(shù),統(tǒng)計非負(fù)數(shù)個數(shù),并計算非負(fù)數(shù)之和。從鍵盤任意輸入10個數(shù),實現(xiàn)將其中最大數(shù)和最小數(shù)的位置對換后,再輸出調(diào)整后的數(shù)組P168 5 、 6、8(不參考書上答案)輸入一行字符統(tǒng)計其英文字符、數(shù)字字符、空格及其他字符個數(shù)編程實現(xiàn)將字符數(shù)組中的字符逆序存放(考慮使用一個數(shù)組)P169 11 、 12、15(不參考書上答案)第58頁,共82頁。作業(yè)實驗指導(dǎo)書上機(jī)實驗實驗5數(shù)組編程練習(xí)檢驗并打印魔方矩陣/文曲星猜數(shù)字游戲餐飲服務(wù)質(zhì)量調(diào)查打分C語言實驗指導(dǎo)書實驗八 數(shù)組輸入55的數(shù)組,編寫程序?qū)崿F(xiàn):(1)求出對角線上各元素的和;(2)求出對角線上行、列下標(biāo)均為偶數(shù)的各元素的積;(3)找

30、出對角線上其值最大的元素和它在數(shù)組中的位置。第59頁,共82頁。實驗5-文曲星猜數(shù)游戲由計算機(jī)隨機(jī)生成一個各位相異的4位數(shù)字,由人來猜,每次提示:xAxBA前面的數(shù)字表示有幾個數(shù)字猜對位置也對了B前面的數(shù)字表示有幾個數(shù)字猜對但位置不對提示用數(shù)組a存計算機(jī)隨機(jī)生成的4位數(shù)用數(shù)組b存人猜的4位數(shù)對a和b的相同位置的元素進(jìn)行比較,得到A前面的數(shù)字對a和b的不同位置的元素進(jìn)行比較,得到B前面的數(shù)字第60頁,共82頁。實驗5-文曲星猜數(shù)游戲第一種方法:隨機(jī)生成一個各位相異的4位數(shù)字 srand(time(NULL); a0 = rand()%10; do a1 =rand()%10; while (a0

31、 = a1 ); 第61頁,共82頁。實驗5-文曲星猜數(shù)游戲統(tǒng)計數(shù)字和位置都猜對的個數(shù),對a和b的相同位置的元素進(jìn)行比較,得到A前面的數(shù)字right = 0;for (j=0; j4; j+)if (aj = bj) right = right + 1; j=0j=1j=2j=3ab第62頁,共82頁。實驗5-文曲星猜數(shù)游戲統(tǒng)計人猜對的數(shù)字個數(shù),對a和b的不同位置的元素進(jìn)行比較,得到B前面的數(shù)字k=0k=1k=2k=3j=0abj=1第63頁,共82頁。實驗5-餐飲服務(wù)質(zhì)量調(diào)查打分 有40個學(xué)生被邀請給自助餐廳的食品和服務(wù)質(zhì)量打分(110等級),統(tǒng)計調(diào)查結(jié)果,并用*打印如下形式的統(tǒng)計結(jié)果直方圖

32、 Grade CountHistogram 1 5* 2 10* 3 7* .第64頁,共82頁。實驗5-餐飲服務(wù)質(zhì)量調(diào)查打分 提示定義數(shù)組score存放打分?jǐn)?shù)定義數(shù)組count為計數(shù)器count0不用計算統(tǒng)計結(jié)果設(shè)置一個循環(huán),依次檢查數(shù)組元素值scorei是1則將數(shù)組元素count1加1是2則將數(shù)組元素count2加1依此類推第65頁,共82頁。實驗5-餐飲服務(wù)質(zhì)量調(diào)查打分 提示定義數(shù)組score存放打分?jǐn)?shù)定義數(shù)組count為計數(shù)器count0不用計算統(tǒng)計結(jié)果設(shè)置一個循環(huán),依次檢查數(shù)組元素值scorei,是1則將數(shù)組元素count1加1,是2則將數(shù)組元素count2加1,依此類推打印統(tǒng)計結(jié)果

33、設(shè)置一個循環(huán),按count數(shù)組元素的值,打印相應(yīng)個數(shù)的符號*第66頁,共82頁。附加題編寫程序完成計算行列式完成最簡單的不超過7行的行列式計算?;切畏ㄊ菍⒃辛惺交癁樯希ㄏ拢┤切涡辛惺交?qū)切涡辛惺接嬎愕囊环N方法。第67頁,共82頁。第68頁,共82頁。數(shù)組名作函數(shù)參數(shù)傳遞整個數(shù)組給另一個函數(shù),可以將數(shù)組的首地址作為參數(shù)傳過去用數(shù)組名作函數(shù)參數(shù)只拷貝一個地址自然比拷貝全部數(shù)據(jù)效率高由于首地址相同,故實參數(shù)組與形參數(shù)組占用同一段內(nèi)存在該函數(shù)內(nèi),不僅可以讀這個數(shù)組的元素,還可以修改它們第69頁,共82頁。 簡單變量和數(shù)組作函數(shù)參數(shù)的區(qū)別第70頁,共82頁。 float FindMax(flo

34、at score, int n) float maxScore; int i;maxScore = score0;for (i=1; i maxScore) maxScore = scorei; return maxScore;例6.2 打印最高分確定函數(shù)的入口和出口?第71頁,共82頁。例6.2 打印最高分#include #define ARR_SIZE 40float FindMax(float arr,int n);main() float scoreARR_SIZE, maxScore;int n, i;printf(Please enter total number:);scanf

35、(%d, &n); printf(Please enter the score:n);for (i=0; iamid, low=mid+1第二次循環(huán):99011 99013 99015 99017 99019 low=mid high x=amid,找到哈,找到了!按升序排序99011 99013 99015 99017 99019第73頁,共82頁。折半查找數(shù)組下標(biāo) 0 1 2 3 4 5 6第一次循環(huán):99011 99013 99015 99017 99019 查找值x=99016 low mid high xamid, low=mid+1第二次循環(huán):99011 99013 99015 9

36、9017 99019 low=mid high xamid, high=mid-1第三次循環(huán):99011 99013 99015 99017 99019 high low 不滿足low=high, 循環(huán)結(jié)束,未找到 唉,沒找到!99011 99013 99015 99017 99019第74頁,共82頁。int BinSearch(long a, int n, long x) int low, high, mid;low = 0; high = n - 1; while (low amid) low = mid + 1; else if (x amid) high = mid - 1; els

37、e return (mid); return(-1); 找到時返回下標(biāo)位置找不到時 返回-1函數(shù)入口參數(shù)如果按降序排序,那么如何修改程序?第75頁,共82頁。向函數(shù)傳遞二維數(shù)組a00a01a02a10a11a12a00a01a02a10a11a12實際傳送的是數(shù)組第一個元素的地址short a23;第76頁,共82頁。向函數(shù)傳遞二維數(shù)組在聲明二維數(shù)組形參時,不能省略數(shù)組第二維的長度(列數(shù)),為什么?想想數(shù)組在內(nèi)存中是如何分布的?元素aij在數(shù)組a中的位置是: i * N + j 元素地址: 首地址 + 偏移量a00a01a02a10a11a12a00a01a02a10a11a12實際傳送的是數(shù)組第一個元素的地址short aMN;偏移1*3+2第77頁,共82頁。例6.8 計算每門課程的總分和平均分void Total(int scoreCOURSE, int sum, float aver, int n

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論