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

正文內(nèi)容

[高等教育]第6章利用數(shù)組處理批量數(shù)據(jù)-資料下載頁

2025-01-19 18:53本頁面
  

【正文】 為非空格而其前面的字符也是非空格,則 num不應(yīng)再累加 1。 字符數(shù)組應(yīng)用舉例 ?用變量 word作為判別當(dāng)前是否開始了一個(gè)新單詞的標(biāo)志,若 word=0表示未出現(xiàn)新單詞,如出現(xiàn)了新單詞,就把word置成 1。 ?前面一個(gè)字符是否空格可以從 word的值看出來,若 word等于 0,則表示前一個(gè)字符是空格;如果 word等于 1,意味著前一個(gè)字符為非空格 。 字符數(shù)組應(yīng)用舉例 Y c=空格 word=0 N word=0 Y word=1 num++ N if(c==39。 39。) word=0。 else if(word==0) { word=1。 num++。 } 當(dāng)前字符 I a m a b o y . 是否空格 否 是 否 否 是 否 是 否 否 否 否 word原值 0 1 0 1 1 0 1 0 1 1 1 新單詞開始否 是 否 是 否 否 是 否 是 否 否 否 word新值 1 0 1 1 0 1 0 1 1 1 1 num值 1 1 2 2 2 3 3 4 4 4 4 …… char string[81],c。 int i,num=0,word=0。 gets(string)。 for (i=0。(c=string[i])!=?\0?。i++) if(c==? ?) word=0。 else if(word==0) { word=1。 num++。 } printf(“%d words\n”,num)。 …… 一定要設(shè)初始值 …… char string[81],c。 int i,num=0,word=0。 gets(string)。 for (i=0。(c=string[i])!=?\0?。i++) if(c==? ?) word=0。 else if(word==0) { word=1。 num++。 } printf(“%d words\n”,num)。 …… 相當(dāng)于 c=string[i]。 c!=?\0? 分析: 3個(gè)字符串可以放在一個(gè)二維字符數(shù)組,如 str[3][10]。C語言把二維數(shù)組當(dāng)成多個(gè)一維數(shù)組處理,因此 str[3][10]相當(dāng)于 3個(gè)一維數(shù)組(或 3個(gè)字符串)。 for (i=0。i3。i++) gets (str[i])。 例 有 3個(gè)字符串 ,要求找出其中最大者 C h i n a \0 \0 \0 \0 \0 str[0] J a p a n \0 \0 \0 \0 \0 str[1] I n d i a \0 \0 \0 \0 \0 str[2] ?經(jīng)過三次兩兩比較 ,就可得到值最大者 ,把它放在一維字符數(shù)組 string中 if (strcmp(str[0],str[1])0) strcpy(string,str[0])。 else strcpy(string,str[1])。 if (strcmp(str[2],string)0) strcpy(string,str[2])。 正確解法 include include int main ( ) {char str[3][10]。 char string[10]。 int i。 for (i=0。i3。i++) gets (str[i])。 if (strcmp(str[0],str[1])0) strcpy(string,str[0])。 else strcpy(string,str[1])。 if (strcmp(str[2],string)0) strcpy(string,str[2])。 printf(\nthe largest:\n%s\n,string)。 return 0。 } 考慮如果是求 10個(gè)字符串中的最大值應(yīng)該如何處理? √例 10:選擇法排序 分析:選擇法在兩兩比較后并不馬上交換,而是找到最小數(shù)后記下其下標(biāo)。在一輪比較完畢后,再將最小的數(shù)一次交換到位。比較次數(shù)不變,交換次數(shù)減少。 假設(shè)有 n個(gè)數(shù)的序列 ,要求按遞增的次序排序 。 算法如下: ① 從 n個(gè)數(shù)中挑選出最小數(shù) , 并與第 1個(gè)數(shù)交換位置; ② 除第 1數(shù)外 , 在其余 n1個(gè)數(shù)中挑選出最小數(shù) , 并與第 2個(gè)數(shù)交換位置; ③ 除第 2數(shù)外 , 在其余 n2個(gè)數(shù)中挑選出最小數(shù) , 并與第 3個(gè)數(shù)交換位置; ④ 重復(fù)步驟 ③ n1次 , 這 n個(gè)數(shù)構(gòu)成遞增序列 。 根據(jù)以上的步驟,數(shù)組的排序需要兩重循環(huán),內(nèi)循環(huán)表示在一組數(shù)中選擇最小數(shù)后交換位置,外循環(huán)變量表示存放最小數(shù)的位置。 將 23, 45, 11, 90, 49五個(gè)數(shù)按遞增次序排序, 原始數(shù)據(jù): 90 49 23 45 11 第 1輪交換后: 11 49 23 45 90 a(1)位置為最小數(shù) 第 2輪交換后: 11 23 49 45 90 a(2)位置為最小數(shù) 第 3輪交換后: 11 23 45 49 90 a(3)位置為最小數(shù) 第 4輪交換后: 11 23 45 49 90 a(4)位置為最小數(shù) define N 10 for(i=0。 i=N1。 i++) scanf(%d,amp。a[i])。 for(i=0。 iN1。 i++) { min=i。 for(j=i+1。 jN。 j++) if(a[j]a[min]) min=j。 if(i !=j) { t=a[i]。 a[i]=a[min]。 a[min]=t。 } } 插入 在有序數(shù)組 a(1 to n)(原有 n1個(gè)元素 )插入一個(gè)值 Key元素 ,算法 : 查找要插入的位置 k( 1=k=n1) 騰出位置 ,把最后一個(gè)元素開始到第 K個(gè)元素往后移動(dòng)一個(gè)位置 第 k個(gè)元素的位置騰出,就可將數(shù)據(jù) Key插入 刪除 刪除操作首先也是要找到欲刪除的元素的位置 K,然后從K+1到 N個(gè)位置開始向前移動(dòng);最后將數(shù)組減 1。 1 4 7 10 13 16 19 22 2514 k數(shù)組中元素的插入和刪除操作 : 數(shù)組中元素的插入與刪除一般是在已排好序的數(shù)組中插入或刪除一個(gè)元素,使得插入或刪除后數(shù)組還是有序的。這先要涉及到查找問題,在數(shù)組中首先找到插入的位置或要?jiǎng)h除的元素,然后進(jìn)行插入或刪除操作。 1 4 7 10 13 14 16 19 22 25 k二分法查找 只適合于在已排好序的數(shù)組中進(jìn)行。 設(shè) a[low]和 a[high]是有序數(shù)組中最小和最大元素,待查找的數(shù)為 x。 算法描述如下: ① 開始假設(shè)待查區(qū)間的下界 low為 0,上界 high為 N1。 ② 求待查區(qū)間中間元素的下標(biāo) mid = (low+high)/2, x和 a[mid]比較。 ③ 若 x==a[mid],則查找完畢,結(jié)束程序;若 xa[mid],則繼續(xù)查找的范圍應(yīng)為 a[mid]后面的元素,修改查找區(qū)間的下界 low = mid+1;若 xa[mid],則繼續(xù)查找的范圍應(yīng)為a[mid]前面的元素,修改查找區(qū)間的上界 high = mid1; ④ 重復(fù)第 3步,直到找到 x; 或 lowhigh無查找區(qū)域,找不到。 √例 12:把輸入的字符串逆序排列如輸入ABCDE,輸出為 EDCBA main() { char str[80]。 int c,i,j。 printf(Enter a string:\n)。 scanf(%s,str)。 for(i=0,j=strlen(str)1。ij。i++,j) { c=str[i]。 str[i]=str[j]。 str[j]=c。 } printf(\nReversed string:\n%s\n,str)。 } √例 13:打印如下圖楊輝三角形( 10行)。 ( ) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 分析: 使第一列和對角線元素為 1; 其它各元素為 a[i1][j1]+a[i1][j](用雙重 for循環(huán) ) 輸出二維數(shù)組的對角線以下的內(nèi)容 define N 11 main() {int i,j,a[N][N]。 for(i=1。iN。i++) {a[i][i]=1。 a[i][1]=1。 } for(i=3。iN。i++) for(j=2。j=i1。j++) a[i][j]=a[i1][j1]+a[i1][j]。 for(i=1。iN。i++) { for(j=1。j=i。j++) printf(%6d,a[i][j])。 printf(\n)。 } } static int b[5]。 for(i=0。i=4。i++) printf(%3d,b[i])。 static int d[5]={1,2,3,4,5}。 for(i=0。i=4。i++) printf(%3d,d[i])。 例:以下幾組程序片段的輸出結(jié)果是什么? static int f[5]={1,2,3}。 for(i=0。i=4。i++) printf(%3d,f[i])。 static int h[5]={,1,2,3}。 for(i=0。i=4。i++) printf(%3d,h[i])。 0 0 0 0 0 1 2 3 4 5 1 2 3 0 0 出錯(cuò)! 作業(yè): √如果要求打印出的形狀如下圖所示,應(yīng)該如何處理? 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 √ 定義一個(gè)含有 30個(gè)整型元素的數(shù)組,按順序分別賦予從 2 開始的偶數(shù);然后按順序每五個(gè)數(shù)求出一個(gè)平均值,放在另一個(gè)數(shù)組中一并輸出。 設(shè)有一個(gè) 4行 3列的整型矩陣,從鍵盤上輸入矩陣元素的值,計(jì)算并輸出每行元素的平均值。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1