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

正文內(nèi)容

c語言程序設計教程(三)ppt(編輯修改稿)

2024-11-12 16:02 本頁面
 

【文章內(nèi)容簡介】 i。 ? printf(%d\t,a[i])。 ? } ? printf(\n)。 ? m=MaxData(a,N)。 ? /* 調(diào)用 MaxData()函數(shù),得到最大元素下標值 */ ? MoveData(a,m)。 ? /* 調(diào)用 MoveData()函數(shù),完成要求的移動 */ ? printf(移動后數(shù)組元素: )。 ? for(i=0。iN。i++) /* 輸出移動后的數(shù)組 */ ? printf(%d/t,a[i])。 ? printf(\n)。 ? } 指向數(shù)組元素的指針 (續(xù) ) ? /* 定義求最大元素下標值函數(shù),形參 iData[]為虛數(shù)組首指針 */ ? int MaxData (int iData[], int iPosition) ? { ? int max,mi。 ? max=iData[0]。 ? for(int i=1。iiPosition。i++) /* 求最大元素下標 */ ? if(maxiData[i]) ? { ? mi=i。 /* 記下最大的元素下標 */ ? max=iData[i]。 ? } ? return mi。 /* 返回最大元素下標值 */ ? } 指向數(shù)組元素的指針 (續(xù) ) ? /* 定義完成移動最大元素在數(shù)組最前面,其余元素順序后移的函數(shù), ? 形參 iData為指針,準備接受數(shù)組首地址 */ ? int MoveData(int *iData,int iPosition) ? { ? int mx。 ? mx=iData[iPosition]。 /* mx暫存最大元素值 */ ? for(int i=iPosition。 i0。i) /* 順序后移 */ ? iData[i]=iData[i1]。 ? iData[0]=mx。 /* 最大元素放在最前面 */ ? return 0。 ? } ? 運行結果: ? 移動后數(shù)組元素: 0 1 2 3 4 ? 移動后數(shù)組元素: 4 0 1 2 3 二維數(shù)組元素的地址 ? 例 89 輸出二維數(shù)組的數(shù)組元素值。 ? include ? void main() ? { ? int arry[3][4]={ ? {1,2,3,4}, ? {11,12,13,14}, ? {21,22,23,24}}。 ? for(int i=0。i3。i++) ? { ? for(int j=0。j4。j++) ? printf(%4d,*(*(arry+i)+j))。 /* 輸出數(shù)組元素arry[i][j]*/ ? printf(\n)。 ? } ? } 二維數(shù)組元素的地址 (續(xù) ) ? 運行結果: ? 1 2 3 4 ? 11 12 13 14 ? 21 22 23 24 ? 通過例 89我們來說明問題,首先聲明一個二維數(shù)組。 ? 如下所示: ? int arry[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}}。 ? arry為二維數(shù)組名,此數(shù)組有 3行 4列,共 12個元素。換句話說,數(shù)組 arry是由三個元素組成: arry[0],arry[1], arry[2]。而每個元素又是一個一維數(shù)組,且都含有 4個元素 (相當于二維數(shù)組的列 )。 二維數(shù)組元素的地址 (續(xù) ) ? 例如: ? arry[0] ? 所代表的一維數(shù)組包含的 4個元素為: ? arry[0][0], arry[0][1], arry[0][2], arry[0][3]。 ? 如圖 85所示: arry [0] arry [1] arry [2] 1 2 3 4 11 12 13 14 21 22 23 24 arry 二維數(shù)組元素的地址 (續(xù) ) ? 但從二維數(shù)組的角度來看, arry代表二維數(shù)組的首地址,當然也可看成是二維數(shù)組第 0行的首地址。 arry+1就代表第 1行的首地址, arry+2就代表第 2行的首地址。如果此二維數(shù)組的首地址為 1000,由于第 0行有 4個整型元素,所以 arry+1為 1016, arry+2也就為 1032。 ? 如圖 86所示: (1000) (1016) (1032) 1 2 3 4 11 12 13 14 21 22 23 24 二維數(shù)組元素的地址 (續(xù) ) ? 既然把 arry[0], arry[1], arry[2]看成是一維數(shù)組名,可以認為它們分別代表它們所對應的數(shù)組的首地址,也就是說: arry[0]代表第 0行中第 0列元素的地址,即 amp。arry[0][0], arry[1]是第 1行中第 0列元素的地址,即 amp。arry[1][0]。根據(jù)地址運算規(guī)則, arry[0]+1即代表第 0行第 1列元素的地址,即 amp。arry[0][1]。一般而言,arry[i]+j即代表第 i行第 j列元素的地址,即 amp。arry[i][j]。 ? 另外,在二維數(shù)組中,我們還可用指針的形式來表示各元素的地址。如前所述, arry[0]與 *(arry+0)等價, arry[1]與 *(arry+1)等價,因此 arry[i]+j就與 *(arry+i)+j等價,它表示數(shù)組元素 arry[i][j]的地址。 ? 因此,二維數(shù)組元素 arry[i][j]可表示成 *(arry[i]+j)或 *(*(arry +i)+j),它們都與 arry[i][j]等價,或者還可寫成 (*(arry+i))[j]。 二維數(shù)組元素的地址 (續(xù) ) ? 例 810 另一種輸出二維數(shù)組方法。 ? include ? void main() ? { ? int arry[3][4]={ ? {1,2,3,4}, ? {11,12,13,14}, ? {21,22,23,24}}。 ? int *iPoint。 ? iPoint=arry[0]。 ? while(iPointarry[0]+12) ? printf((((iPointarry[0])+1)%4)?%4d:%4d\n,*iPoint++)。 ? } 二維數(shù)組元素的地址 (續(xù) ) ? 運行結果: ? 1 2 3 4 ? 11 12 13 14 ? 21 22 23 24 指向一個由 n個元素所組成的數(shù)組指針 ? 例 811 輸出二維數(shù)組任意行任意列元素值。 ? include ? void main() ? { ? int arry[3][4]={ ? {1,2,3,4}, ? {11,12,13,14}, ? {21,22,23,24}}。 ? int (*iPoint)[4]。 ? /* 聲明 iPoint是一個指向包含 4個元素的一維數(shù)組的指針 */ ? int iRow,iLine。 ? iPoint=arry。 /* iPoint作為行指針 */ ? printf(Enter Row, Line:)。 ? scanf(%d,%d,amp。iRow,amp。iLine)。 ? printf(arry[%d][%d]=%d\n,iRow,iLine,(*(iPoint+iRow))[iLine])。 ? } 指向一個由 n個元素所組成的數(shù)組指針 (續(xù) ) ? 運行結果: ? Enter Row, Line:2,3 ? arry[2][3]=24 ? 分析例 811: ? 聲明指針變量如下: ? int (*iPoint)[4]。 ? 指針 iPoint表示為指向一個由 4個元素所組成的整型數(shù)組的指針。在聲明中, “ () ” 是不能缺少的,否則它是指針數(shù)組,而不是數(shù)組指針。這種數(shù)組的指針不同于前面介紹的整型指針,當整型指針指向一個整型數(shù)組元素時,進行指針 (地址 )加 1運算,表示指向數(shù)組的下一個元素,此時地址值增加了 4(因為整型數(shù)據(jù)類型在 VC++ 4個字節(jié),既放大因子為 4),而如上所聲明的是指向一個由 4個元素組成的數(shù)組的指針,進行地址加 1運算時,其地址值增加了 16(放大因子為 )。 ? 這種數(shù)組指針在 C語言中很少使用,但在處理二維數(shù)組時,還是比較方便的。 ? 例如: ? int arry[5][5],(*p)[5]。 指向一個由 n個元素所組成的數(shù)組指針 (續(xù) ) ? p=arry。 ? 開始時 p指向二維數(shù)組第 0行,當進行 p+1運算時,根據(jù)地址運算規(guī)則,此時放大因子為,所以此時正好指向二維數(shù)組的第 1行。和二維數(shù)組元素地址計算的規(guī)則一樣, *p+1指向 arry[0][1],*(p+i)+j則指向數(shù)組元素 arry[i][j]。 ? 例 812 數(shù)組指針的應用。 ? include ? int arry[5][5]={ ? {2,4,6,8,10}, ? {10,12,14,16,18}, ? {18,20,22,24,26}, ? {26,28,30,32,34}, ? {34,36,38,40,42}, ? }。 指向一個由 n個元素所組成的數(shù)組指針 (續(xù) ) ? void main() ? { ? int i,(*Point)[5]。 ? for(i=0。i4。i++) ? { ? Point=arry+i。 ? printf(%d\t,*(Point[i]+2))。 ? } ? printf(\n)。 ? } ? 運行結果: ? 6 22 38 0 字符指針 ? 我們已經(jīng)知道,字符串常量是由 “ ” 括起來的一組字符序列。 ? 例如: “ a string” ? 就是一個字符串常量,該字符串中因為字符 a后面還有一個空格字符,所以它是由 8個字符序列組成。在程序中如果出現(xiàn)字符串常量, C編譯程序就會給該字符串常量按排一連續(xù)存貯區(qū)域,這個區(qū)域是靜態(tài)的,在整個程序運行的過程中始終占用。平時所講的字符串常量的長度是指該字符串的字符個數(shù),但在按排存貯區(qū)域時, C編譯程序還自動給該字符串序列的末尾加上一個空字符 39。\039。,用來標志字符串的結束,因此一個字符串常量所占的存貯區(qū)域的字節(jié)數(shù)總比它的字符個數(shù)多一個字節(jié)。 ? 讓字符指針與存放字符串的字符數(shù)組關聯(lián),就可以用字符指針表示該字符串。 字符指針 (續(xù) ) ? 例 813 字符指針指向字符數(shù)組 ? include ? void main() ? { ? char str[]=Good morning!。 ? char *chPoint。 ? chPoint=str。 /* chPoint指向 str數(shù)組的首地址 */ ? printf(str string is %s\n,str)。 ? printf((1) chPoint string is %s\n,chPoint)。 ? chPoint=str+5。 ? printf((1) chPoint string is %s\n,chPoint)。 ? } 字符指針 (續(xù) ) ? 運行結果: ? str string is Good morning! ? (1) chPoint string is Good morning! ? (1) chPoint string is morning! ? 例 813中,當 chPoint指向 str字符串首地址時,輸出整個 str字符串;當 chPoint指向 str字符串中某一個字符地址時,輸出以該字符為首字符的后續(xù)字符串。因此,使用字符指針比使用字符數(shù)組名更為靈活。 ? C語言中操作一個字符串常量的方法有如下兩種: ? (1). 把字符串常量存放在一個字符數(shù)組中。 ? 例如: ? char s[]=a string。 字符指針 (續(xù) ) ? 數(shù)組 s共由 9個元素組成,其中 s[8]中的內(nèi)容是 39。\039。實際上,在字符數(shù)組聲明的過程中,編譯程序直接把字符串復制到數(shù)組中,即對數(shù)組 s初始化。 ? (2). 用字符指針指向字符串,然后通過字符指針來訪問字符串存貯區(qū)域。當字符串常量在表達式中出現(xiàn)時,根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則,它被轉(zhuǎn)換成字符指針。因此,若我們聲明了一個字符指針 cp: ? char *cp。 ? 于是可用: ? cp=a string。 ? 使 cp指向字符串常量中的第 0號字符 a。 ? 以后我們可以通過 cp來訪問這一存貯區(qū)域,如 *cp或cp[0]就是字符 a,而 cp[i]或 *(cp+i)就相當于字符串的第 i號字符,但不能通過指針來修改字符串常量。 字符指針 (續(xù) ) ? 例 814 把鍵盤輸入的字符串逆序排列,然后輸出。 ? inc
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1