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

正文內(nèi)容

[計算機(jī)軟件及應(yīng)用]第5章數(shù)組-資料下載頁

2025-10-10 04:18本頁面
  

【正文】 k。 } if(flag==0) printf(No found)。 else printf(y[%d]=%d,i,y[i])。 } 查找 【 例 5_15】 有一個 3 4的矩陣,要求編程求出其中值最大的那個元素及所在的行號和列號。 程序如下: /* */ include ”” void main( ) {int a[3][4],i,j,row,col,max。 for(i=0。i3。i++) for(j=0。j4。j++) scanf(”%d”,amp。a[i][j])。 max=a[0][0]。 row=0。 col=0。 for(i=0。i3。i++) for(j=0。j4。j++) if(a[i][j]max) {max=a[i][j]。 row=i。 col=j。 } printf(”max=%d,row=%d,col=%d\n”,max,row,col)。 } 查找 二、折半查找法 順序查找的程序算法簡單,但查找效率不高,當(dāng)數(shù)據(jù)量很大時不宜采用。對具有大量數(shù)據(jù)的數(shù)組則宜采用折半查找法。采用折半查找法時,數(shù)組應(yīng)是已排好序的。 折半查找的基本思想是:首先找出數(shù)組的中項(xiàng),若該元素就是要查的那個元素,則查找結(jié)束。否則,應(yīng)判斷所查元素位于數(shù)組中那個部分,然后保留可能的這一半,舍棄另一半。再找出保留的那一半中項(xiàng),重復(fù)上述的判斷操作。按這樣一次次地繼續(xù)下去,直到查找完為止。 查找 【 例 5_16】 若有一數(shù)組 y[k]已按升序排列,要查找與給定值 x 相等的元素值: 解題算法思路: (1)確定查找范圍, n=0, m=k1。 (2)計算中項(xiàng), i=(n+m)/2。 (3)若 y[i]=x或 m=n,則查找結(jié)束;否則,向下繼續(xù) (4)若 y[i]x,說明與給定值 x相等的元素值只可能在比中項(xiàng)元素大的范圍內(nèi),則把 i+1的值賦給 n,轉(zhuǎn)去執(zhí)行步驟 (2);若 y[i]x,說明與給定值 x相等的元素值只可能在比中項(xiàng)元素小的范圍內(nèi),則把 i1的值賦給 m,轉(zhuǎn)去執(zhí)行 (2)。 查找 程序如下: /* */ include ”” void main( ) { static int y[10]={5,7,8,14,25, 36,44,50,69,80}。 int i,n,m,x。 n=0。m=9。 scanf(%d,amp。x)。 i=(n+m)/2。 while(nmamp。amp。y[i]!=x) { if(y[i]x) n=i+1。 if(y[i]x) m=i1。 i=(n+m)/2。 } if(y[i]!=x) printf(No found)。 else printf(%d,%d,i,y[i])。 } 程序設(shè)計舉例 【 例 5_17】 從鍵盤輸入一個整數(shù),將其插入到升序數(shù)組中,且插入操作完成后的數(shù)組仍按升序排列。該題目可以采用如下兩種方法來編程。 方法 1: /* */ include ”” void main( ) { int value,t1,t2,i,j。 static int a[11]={1,10,20,30,40,50,60,70,80,90}。 /*在 a數(shù)組中多設(shè)一個元素的位置,以便進(jìn)行插入操作 */ 程序設(shè)計舉例 for(i=0。i10。i++) printf(”%3d”,a[i])。 putchar(’\n’)。 scanf(”%d”,amp。value)。 /*讀人待插入的數(shù)據(jù) */ if(value=a[9]) /*若 value大于等于原數(shù)組中最后一個元素 */ a[10]=value。 /*則將其插入數(shù)組中的最后一個位置 */ else for(i=0。i10。i++) if(a[i]value) {t1=a[i]。 a[i]=value。 程序設(shè)計舉例 for(j=i+1。j11。j++) {t2=a[j]。 a[j]=t1。 t1=t2。 /*t1保存下次插入的數(shù)據(jù) */ } break。 /*插入完成后,直接跳出外層循環(huán) */ } for(i=0。i11。i++) printf(”%3d”,a[i])。 } 程序設(shè)計舉例 方法 2: /* */ include ”” void main( ) {int value,t,i,j。 static int a[11]={1,10,20,30,40,50,60,70,80,90}。 for(i=0。i10。i++) printf(”%3d”,a[i])。 putchar(’\n’)。 scanf(”%d”,amp。value)。 a[10]=value。 for(i=10。i0。i) if(a[i]a[i1]) {t=a[i]。 a[i]=a[i1]。 a[i1]=t。 } else break。 for(i=0。i11。i++) printf(”%3d”,a[i])。 } 程序設(shè)計舉例 說明: 此程序采用的方法是,首先將待插入元素存入數(shù)組中最后一個元素的位置處,然后,從數(shù)組的最后一個元素開始,將相鄰的兩個元素進(jìn)行比較,當(dāng)后面的元素小于前面的元素時,進(jìn)行交換操作,當(dāng)后面的元素不小于前面的元素時,表明插入操作結(jié)束。 程序設(shè)計舉例 【 例 5_18】 從鍵盤上輸入兩個字符串,比較這兩個字符串是否相等。 程序如下 : /* */ include ”” void main( ) {char str1[10],str2[10]。 int i,flag=1。 gets(str1)。 gets(str2)。 i=0。 while(str1[i]==str2[i]) { if(str1[i]==’\0’amp。amp。str2[i]==’\0’) {flag=0。break。} i++。 } if(flag) printf(”The two strings are not equal”)。 else printf(”The two strings are equal”)。 } 程序設(shè)計舉例 【 例 5_19】 利用冒泡法將數(shù)組元素值按從小到大的順序排列。 冒泡法排序的基本思想 : 將第一個數(shù)和第二個數(shù)進(jìn)行比較,小的放在前面,大的放在后面,然后,將第二個數(shù)和第三個數(shù)進(jìn)行比較,同樣是將小的放在前面,大的放在后面,依此類推,這樣;第一遍掃描后,將找出最大的數(shù),且被放在整個數(shù)據(jù)的最后;第二遍掃描仍從第一個數(shù)開始,相鄰兩個數(shù)進(jìn)行比較,并將小的放在前面,大的放在后面,這一遍掃描完成后,將找到除最大數(shù)之外的剩余數(shù)據(jù)中的最大數(shù),并將其放在倒數(shù)第二的位置上;依此類推,直到排序結(jié)束為止 程序設(shè)計舉例 根據(jù)冒泡排序方法,每次選擇后,各元素的次序可表述如下: 數(shù)組初始狀態(tài): [4, 5, 9, 12, 17, 3, 1] 第一次冒泡后: [4, 5, 9, 12, 3, 1], 17 第二次冒泡后: [4, 5, 9, 3, 1], 12, 17 第三次冒泡后: [4, 5, 3, 1], 9, 12, 17 第四次冒泡后: [4, 3, 1], 5, 9, 12, 17 第五次冒泡后: [3, 1], 4, 5, 9, 12, 17 第六次冒泡后: [1], 3, 4, 5, 9, 12, 17 至此該數(shù)組排序完畢。方括號中的內(nèi)容是待排序的數(shù)組元素值。 程序設(shè)計舉例 從以上分析不難看出,對于 n個數(shù)的排序,需進(jìn)行 n1次比較,對第 i次比較需進(jìn)行 ni次兩兩比較。 歸納起來,冒泡法排序(按升序)的基本方法是:將范圍內(nèi)的數(shù)組元素值從左到右兩兩比較,選出小值元素置于左邊位置,大值元素置于右邊位置,直到將找出的最大的元素值置于最右邊;然后,再對剩下的 n1個元素重復(fù)這樣的交換處理,這樣不斷重復(fù)直到所有的元素都被排序?yàn)橹埂? 程序設(shè)計舉例 程序如下: /* */ include ”” void main( ) {int a[10],i,j,temp。 printf(”Input l0 integer numbers:”)。 for(i=0。i10。i++) scanf(”%d”,amp。a[i])。 for(i=0。i9。i++) for(j=0。j9i。j++) if(a[j]a[j+1]) { temp=a[j]。 a[j]=a[j+1]。 a[j+1]=temp。 } for(i=0。i10。i++) printf(”%d”,a[i])。 } 程序設(shè)計舉例 【 例 5_20】 輸入一行字符 , 統(tǒng)計其中有多少個單詞 。 ( 單詞間以空格分隔 , 例如:輸入 “ I am a boy.”, 有 4個單詞 。 ) 算法 :單詞的數(shù)目由空格出現(xiàn)的次數(shù)決定 ( 連續(xù)出現(xiàn)的空格記為出現(xiàn)一次;一行開頭的空格不算 。 ) 。 應(yīng)逐個檢測每一個字符是否為空格 。 用 num表示單詞數(shù) ( 初值為 0) 。word=0表示前一字符為空格 , word=1表示前一字符不是空格 , word初值為 0。 如果前一字符是空格 , 當(dāng)前字符不是空格 , 說明出現(xiàn)新單詞 , num加 1。 當(dāng)前字符為空格否 ? 則未出現(xiàn)新單詞 , 使word=0, num不累加 。 前一字符為空格否 ? ( word=0) , 新單詞出現(xiàn) ,num++ ,word=1。 ( word=1) , 未出現(xiàn)新單詞 ,num不加 。 圖 程序設(shè)計流程圖 程序設(shè)計舉例 程序如下: /* */ include /* gets()函數(shù)在該頭文件定義 */ void main( ) { char string[81]。 int i,num=0,word=0。 char c。 gets(string)。 for(i=0。(c=string[i])!=’\0’。i++) 程序設(shè)計舉例 if(c==’ ’) word=0。 else if(word==0) { word=1。 num++。 } printf(There are %d words in the line\n,num)。 } 小結(jié) 在 C語言中數(shù)組是最重要而且是最基本的數(shù)據(jù)類型。使用數(shù)組時應(yīng)注意以下幾點(diǎn) : ① 數(shù)組是由若干數(shù)據(jù)類型相同的元素的有序集合。數(shù)組元素在內(nèi)存中按行的次序連續(xù)存放。 ② C語言的數(shù)組元素下標(biāo)從 0開始。 ③ 數(shù)組名表示數(shù)組存儲的首地址 , 數(shù)組的首地址也是數(shù)組中第一個數(shù)組元素的地址。 小結(jié) ④ 排序和查找是數(shù)組典型的操作,實(shí)際應(yīng)用中較廣泛。 ⑤ C語言中不使用字符串變量的概念 , 而是使用字符數(shù)組對字符串進(jìn)行存儲和處理 。 字符數(shù)組中一個元素對應(yīng)字符串的一個字符 。 C語言的字符串末尾都帶有隱含的 null(即 ’ \0’)字符 , 通常由系統(tǒng)自動地添加在字符串的后面 。 因此 , 對于字符數(shù)為 n的字符串其占用內(nèi)存空間為 n+1個字節(jié) 。 在對字符串操作時 , 經(jīng)常用 ’ \0’字符來檢測字符串是否結(jié)束 , 而不是一定要以數(shù)組的長度來判斷 。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1