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

正文內(nèi)容

[計(jì)算機(jī)軟件及應(yīng)用]第06章數(shù)組-在線瀏覽

2025-03-08 17:34本頁面
  

【正文】 4, 5}。 ? 使用賦值語句來逐一賦值 例 int a[4]。 a[1] = 2。 a[3] = 4。 str[0] = 39。 str[1] = 39。 str[2] = 39。 str[3] = 39。 //將數(shù)組 str賦值為一字符串 bye 這種方法是一種簡單而且行之有效的方法,它適用于長度較小的數(shù)組或?qū)﹂L度較大的數(shù)組部分元素賦值,而且可對每個(gè)數(shù)組元素賦不同的值。 int a[10], i。 i 10。 例如,接受用戶鍵盤輸入賦值給數(shù)組各元素。 for (i = 0。 i++) scanf(%d, amp。 判斷下列賦值是否正確? int a[3]。 這種方法是在編程中普遍使用的一種方法,它適用于對某數(shù)組元素進(jìn)行有規(guī)律的賦值或接受用戶通過鍵盤輸入對數(shù)組元素的賦值 。 例如, 將數(shù)組 str的每個(gè)數(shù)據(jù)單元賦值為 39。 char str[10]。a39。 例如, 將數(shù)組 a的每個(gè)數(shù)據(jù)單元賦值為 0(清 0) 。 memset (a, 0, 10*sizeof(int))。 ? 一維數(shù)組在程序中賦值 ? 使用 memcpy函數(shù)實(shí)現(xiàn)數(shù)組間的賦值 memcpy函數(shù)原型: void *memcpy (void *d, void *s, unsigned n) 功能: 將 s為首地址的一片連續(xù)的 n個(gè)字節(jié)內(nèi)存單元的值拷貝到以 d為首地址的一片連續(xù)的內(nèi)存單元中 。 int a[5] = {1, 2, 3, 4, 5}, b[5], i。 i 5。 memcpy (b, a, 5* sizeof(int))。在 TC或 BC下頭文件也可用 “ ”,在 VC下,則也可用 “ ”。 ? 方式: 函數(shù)調(diào)用時(shí) ,為形參分配單元 ,并將實(shí)參的值 復(fù)制 到形參中;調(diào)用結(jié)束,形參單元被釋放,實(shí)參單元仍保留并維持原值。 void main ( ) { int x = 7, y = 11。 printf (x=%d, y=%d\n, x, y)。 printf (after swapped: )。 } void swap (int a, int b) { int temp。 a = b。 } 運(yùn)行結(jié)果: before swapped: x = 7, y = 11 after swapped: x = 7, y = 11 7 x 11 y ① 調(diào)用前 7 a 11 b ③ swap 7 x 11 y 7 a 11 b temp 7 11 7 7 x 11 y ④ 調(diào)用結(jié)束 Why? 地址傳遞方式 ? 方式: 函數(shù)調(diào)用時(shí),將數(shù)據(jù)的 存儲(chǔ)地址 作為參數(shù)傳遞給形參 ? 特點(diǎn): ① 形參與實(shí)參占用 同樣 的存儲(chǔ)單元 ② 雙向 傳遞 ③ 實(shí)參和形參必須是 地址 常量或變量 用數(shù)組名作為函數(shù)參數(shù)時(shí)還應(yīng)注意以下幾點(diǎn): ? 形參數(shù)組和實(shí)參數(shù)組的類型必須一致,否則將引起錯(cuò)誤。 ? 多維數(shù)組也可以作為函數(shù)的參數(shù)。 除了用數(shù)組名作為函數(shù)參數(shù)來實(shí)現(xiàn)參數(shù)的地址傳遞以外,其實(shí)還有一種應(yīng)用 更廣的地址傳遞方法,那就是用指針變量來作為函數(shù)的形參 ,其具體使用方法將在第 7章作詳細(xì)討論。 include include void main ( void ) { char ch。 memset (num, 0, 26*sizeof(int))。\n39。A39。amp。Z39。A39。 for (i = 0。 i++) //輸出結(jié)果 { if (i % 9 == 0) printf (\n)。A39。 } printf (\n)。 printf (input %d numbers: \n, NUM)。 i NUM。a[i])。 i NUM。 j NUM i。 a[j] = a[j+1]。 } //輸出排好序的數(shù)據(jù) printf (the sorted numbers:\n)。 i NUM。 } 運(yùn)行結(jié)果: input 10 numbers: 10 1 2 7 6 8 9 3 4 5↙ the sorted numbers: 1 2 3 4 5 6 7 8 9 10 不足之處: 對已排好序的序列仍然要進(jìn)行 9輪冒泡操作,盡管不會(huì)有任何數(shù)據(jù)交換操作。為了標(biāo)記在比較過程中是否發(fā)生了數(shù)據(jù)交換,在程序中設(shè)立一個(gè)標(biāo)志變量 flag,在每趟比較前,把 flag變量置為 0,如果在這趟比較過程中發(fā)生了交換,把變量 flag的值置為 1。 include define NUM 10 void main ( ) { int a[NUM], i, j, t, flag。 for (i = 0。 i++) //輸入 NUM個(gè)整數(shù) scanf (%d, amp。 for (i = 1。 i++) //輪次,共 NUM1次 { flag = 0。 j NUM i。 a[j] = a[j+1]。 flag = 1。 } printf (the sorted numbers:\n)。 i NUM。 } include define N 10 void input(int [ ],int n)。 void sort(int [ ],int n)。 input(a,N)。 output(a,N)。 printf(Please input %d data:\n,n)。in。s[i])。 for(i=0。i++) printf(%5d,s[i])。 for(i=0。i++) for(j=0。j++) if(s[j]s[j+1]) { temp=s[j]。 s[j+1]=temp。 初始: [ 49 38 65 97 76 13 27 ] j i = 1 13 49一趟: 13 [ 38 65 97 76 49 27 ] i = 2 27 38二趟: 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 ] k k k k j j j j j j j j j j k 選擇排序圖示效果 輸入 n 個(gè)數(shù)給 a[1] 到 a[n] for i = 1 to n 1 for j = i + 1 to n a[j] a[k] 真 假 k = j 輸出 a[1] 到 a[n] k = i a[i] ? a[k] i != k 真 假 include void main( ) { int a[11], i, j, k, x。 for (i = 1。 i++) scanf (%d, amp。 printf (\n)。 i 10。 for (j = i+1。 j++) if (a[j] a[k]) k = j。 a[i] = a[k]。 } } printf(The sorted numbers:\n)。 i 11。 } [例 4] shell排序(快速排序) ? 思想: – 將 n個(gè)數(shù)的隊(duì)列分成兩段。 – 當(dāng)后一段的所有元素都處理完后,則將比較間隔減小一半,然后從距離第一個(gè)元素為當(dāng)前間隔的那個(gè)元素開始直到隊(duì)列最后一個(gè)元素重復(fù)上述的比較、交換過程; – 在每一輪比較、交換過程中,一旦發(fā)生交換,被交換到前面的那個(gè)值還要繼續(xù)與前面距離為當(dāng)前比較間隔的那些元素進(jìn)行比較和交換,一直進(jìn)行到比較中位于前面的那個(gè)元素距離隊(duì)列的第一個(gè)元素小于當(dāng)前比較間隔為止。 72 73 71 23 94 16 5 68 (1) gap=4 72 16 5 23 94 73 71 68 (2) gap=2 5 16 71 23 72 68 94 73 (3) gap=1 5 16 23 68 71 72 73 94 73 16 5 71 5 72 71 94 71 72 68 73 23 71 68 72 68 71 73 94 //shell排序,從小到大 void shellshort(int v[],int n) { int gap, i, j, temp。 gap0。 in。 j=0amp。v[j]v[j+gap]。 v[j]=v[j+gap]。 } } f[0] f[1] f[2] f[3] f[4] f[5] f[19] ……... 1 f[19] 1 4 5 2 3 19 0 1 【 例 4】 用數(shù)組求 Fibonacci數(shù)列 前 20個(gè)數(shù) 2 3 5 include void main( ) { int i。 for (i = 2。 i++) f[i] = f[i2] + f[i1]。 i 20。 printf (%12d, f[i])。 index=1。 i=0。amp。 index=i。 } return index。如果找到,則返回元素的位置,否則返回 1。否則,在數(shù)組的后一半元素中查找。 ( 5)該過程一直進(jìn)行到所有元素都已被檢查為止。 while(top=bottom) { mid=(top+bottom)/2。 else if(xv[mid]) top=mid+1。 //找到 } return 1。現(xiàn)在發(fā)現(xiàn)有某個(gè)成績被重復(fù)輸入,需要把該成績刪除,使剩下的所有成績依然有序。 – 移動(dòng)部分元素。 ? 程序: ? 問題: – 元素是否可以從最后一個(gè)元素開始向前移動(dòng),最后再移動(dòng)刪除位置后的那個(gè)元素? void del(int x,int v[],int n)//x表示要?jiǎng)h除的元素 { int location。 location=binsearch(x,v,n)。i=n1。 } ? [例 7]假設(shè)成績已經(jīng)輸入,并按照從大到小的順序排列好。 ? 步驟: – 查找待插入數(shù)據(jù)的位置。 ? 注意: – 數(shù)組元素的個(gè)數(shù)要足夠。 while(v[i]x) i++。j=i。 v[i]=x。 float b[2][5]。 int a[3,4]。 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[0] a[1] a[2] 行名 0 1 4 5 2 3 a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[0][0] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[1][2] 6 7 10 11 8 9 a[0] a[1] a[2] 二維數(shù)組 a是由 3個(gè)元素組成 每個(gè)元素 a[i]由包含 4個(gè)元素 的一維
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1