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

正文內(nèi)容

構造數(shù)據(jù)類型ppt課件-在線瀏覽

2024-12-21 23:07本頁面
  

【正文】 r[j]。 } cout str endl。 } 二維數(shù)組 ? 二維數(shù)組通常用于表示由 固定多個 同類型的具有行列結構的數(shù)據(jù)所構成的復合數(shù)據(jù)。 ? 二維數(shù)組所表示的是一種具有兩維結構的數(shù)據(jù),第一維稱為二維數(shù)組的行,第二維稱為二維數(shù)組的列。 ? 二維數(shù)組類型定義格式: typedef 元素類型 二維數(shù)組類型名 [行數(shù) ][列數(shù) ]。 //由 10行、 5列 int型元素 //所構成的二維數(shù)組類型 ? 二維數(shù)組類型變量的定義格式: ? 二維數(shù)組類型名 二維數(shù)組變量名 。 或 ? 一維數(shù)組類型 一維數(shù)組變量 [元素個數(shù) ] ? 元素類型 為任意 C++類型( void除外) ? 行數(shù) 、 列數(shù) 和 元素個數(shù) 為 整型常量表達式 ? 例如: ?typedef int A[10][5]。 或 ?int a[10][5]。 ?B a[10]。 ? 例如: ? int a[10][5]。 ? a[0]、 a[1]、 ...、 a[9] ? 上面每一個都為一個一維數(shù)組,代表二維數(shù)組中的一行 ? 對二維數(shù)組的操作通常是通過其元素來進行。 ...... for (int i=0。 i++) for (int j=0。 j++) sum += a[i][j]。 int main() { const int N=3。 int i,j。 for (i=0。 i++) for (j=0。 j++) cin a[i][j]。 iN。 jN。 a[i][j] = a[j][i]。 } //輸出轉置后的矩陣 cout 轉置后為: \n。 iN。 jN。 39。 } return 0。 int a[2][3]={1,2,3,4,5,6}。 ? 以上初始化按照數(shù)組的行來進行 int a[2][3]={{1,2},{3,4}}。 ? 行數(shù)為 3 二維數(shù)組的存貯 ? 在 C++中,二維數(shù)組元素是按照行來存儲的,即先是第一行的元素;再是第二行的元素; ... 。 其內(nèi)存空間分配如下: a[0][0] ... a[0][4] a[1][0] ... a[1][4] ...... a[9][0] ... a[9][4] 向函數(shù)傳遞二維數(shù)組 ? 被調(diào)用函數(shù)的形參應為不帶數(shù)組行數(shù)的二維數(shù)組定義及其行數(shù)。 for (int i=0。 i++) for (int j=0。 j++) s += x[i][j]。 } ? 注意: 二維數(shù)組作為函數(shù)參數(shù)傳遞時實際傳遞的也是數(shù)組的首地址 ,因此,二維數(shù)組形參的 列數(shù)必須要寫 ,否則,函數(shù)體中無法計算 x[i][j]的內(nèi)存地址: ? x[i][j]的地址 = x的首地址 + i 列數(shù) + j ? 調(diào)用者需要提供一個二維數(shù)組變量( 列數(shù)要與形參相同 )的名和行數(shù)。 ...... cout a的元素之和為: sum(a,10) endl。 ? 下面的二維數(shù)組 c就不能調(diào)用函數(shù) sum來計算其元素的和,因為 c的列數(shù)與函數(shù) sum要求的列數(shù)不符: int c[40][20]。 //Error 二維數(shù)組降為一維數(shù)組處理 int sum(int x[], int num) { int s=0。 inum。 return s。 ...... cout sum(a[0],10*5) endl。 cout sum(c[0],40*20) endl。矩陣 C中的任意元素Cij=∑aik*bkj ? 程序為: 程序 ? 如果要求將矩陣的輸入與相乘用函數(shù)實現(xiàn),各子函數(shù)如何寫 ? 例 :求解約瑟夫( Josephus)問題 ? 約瑟夫( Josephus)問題是:有 N個小孩圍坐成一圈,從某個小孩開始順時針報數(shù),報到 M的小孩從圈子離開,然后,從下一個小孩開始重新報數(shù),每報到 M,相應的小孩從圈子離開,最后一個離開圈子的小孩為勝者,問勝者是哪一個小孩? ? 采用一個一維的循環(huán)數(shù)組 in_circle來表示小孩圍成一圈: bool in_circle[N]。 ? 圈子中 i的下一個位置 j=(i+1)%N 0 N1 1 N2 ? 報數(shù)采用下面的方法來實現(xiàn): ?從編號為 0的小孩開始報數(shù),用變量 index表示要報數(shù)的小孩的下標,其初始值為 N1(即將報數(shù)的前一個小孩的下標)。 ?用變量 count來對成功的報數(shù)進行計數(shù),每一輪報數(shù)前, count為 0,每成功地報一次數(shù),就把 count加 1,直到 M為止。 ?用變量 num_of_children_remained表示圈中剩下的小孩數(shù)目,其初始值為 N。 const int N=20,M=5。 int num_of_children_remained, index。 for (index=0。 index++) in_circle[index] = true。 //從編號為 0的小孩開始報數(shù), //index為前一個小孩的位置。 //報數(shù)前的圈子中小孩個數(shù) while (num_of_children_remained 1) { int count = 0。 { index = (index+1)%N。 if (in_circle[index]) count++。 } in_circle[index] = false。 num_of_children_remained。 } //找最后一個小孩 for (index=0。 index++) if (in_circle[index]) break。 return 0。 ? 結構類型定義格式: struct 結構類型名 {成員表 }; ?成員表 為結構類型的元素(成員) 類型說明 ? 可以是任意的 C++類型( void和本結構除外) ?結構成員之間在邏輯上沒有先后次序關系 ?結構成員的說明次序會影響成員的存儲安排 ? 例如: struct Student { int no。 Sex sex。 char birth_place[40]。 }。 struct Date { int year,month,day。 enum Major { MATHEMATICS, PHYSICS, CHEMISTRY,COMPUTER, GEOGRAPHY, ASTRONOMY,ENGLISH, CHINESE,PHILOSOPHY}。 例: Student st; ( 2) struct 結構類型名 結構類型 變量名 。 例: struct Student{…… } st, st1; ( 4) struct {成員表 } 結構類型 變量名 。 結構類型的操作 ? 訪問結構成員 ?結構成員的訪問要通過結構變量名來 “ 受限 ” ? 結構類型變量 .結構成員名 ?例如: ? Student st。 ? strcpy(,張三 )。 ? ...... ? 不同結構類型的成員的名字可以相同,并且,它們還可以與程序中非結構成員的名字相同: struct A { char name[10]。 struct B { char name[5]。 char name[20]。 B b。 ... ... //結構變量 b的成員變量 name。 } ? 賦值 ?可以對結構類型數(shù)據(jù)進行整體結構賦值 , 例如: ? Student st1,st2。 //OK ?不同的結構類型之間不能相互賦值 , 例如: ? Student st。 ? st = today。 ? 在定義一個結構類型時 ,不能對其成員進行初始化 ,例如: struct A { int i=1。 //Error } ? 也可以一個成員一個成員初始化 。 =。 double d。 結構類型的存儲 ? 結構類型的變量在內(nèi)存中占用一塊連續(xù)的存儲空間,其各個元素依它們在結構類型中的定義次序存儲在這塊內(nèi)存空間中。 ?其內(nèi)存空間安排如下: ?結構成員的內(nèi)存空間之間可能會存在 “ 空隙 ” ! (一般遵循偶字節(jié)對齊原則, vc遵循 4字節(jié)對齊) 例 ?可用 sizeof計算結構類型的大小 向函數(shù)傳遞結構數(shù)據(jù) ? 可作為參數(shù)傳給函數(shù) , 默認參數(shù)傳遞方式為 值傳遞 , 例如: void f(Student st) { ....... } ...... Student st1。 ? 可作為函數(shù)返回值返回給調(diào)用者 , 例如: Student g() { ...... return ...。 例 :針對一批學生信息實現(xiàn)以下功能 ? 統(tǒng)計計算機專業(yè)男生人數(shù) ? 統(tǒng)計出生地為 “ 南京 ” 的學生人數(shù) ? 按學號由小到大輸出學生信息 程序如下: 程序 聯(lián)合( union)類型 ? 聯(lián)合類型 用于實現(xiàn) 用一個類型表示多種類型的數(shù)據(jù) 。 char c。 }。 ? 聯(lián)合類型的所有成員占有同一塊內(nèi)存空間,該內(nèi)存空間的大小為其最大成員所需要的內(nèi)存空間的大小。 ? cout sizeof(a)。 = 1。A39。 = 。 ? 對于一個聯(lián)合類型的變量,在程序中將會分階段地把它作為不同的類型來使用,而不會同時把它作為幾種類型來用。例如: = 12。 //輸出什么呢? ? 也可利用聯(lián)合類型來實現(xiàn)多種數(shù)據(jù)共享內(nèi)存空間。 double b[100]。 AB buffer。其中的圖形可以是:線段、矩形和圓。 Figure figures[MAX_NUM_OF_FIGURES]。 struct Line { double x1,y1,x2,y2。 struct Rectangle { double left, top, right, bottom。 struct Circle { double x, y, r。 union Figure { Line line。 Circle circle。 ? 上面的表示存在問題: ? 無法區(qū)分存儲在 figures[i]中的是什么圖形! ? 解決上面問題的辦法是: enum FigureShape { LINE, RECTANGLE, CIRCLE }。 double x1,y1,x2,y2。 struct Rectangle { FigureShape place_holder。 }。 double x,y,r。 union Figure { FigureShape shape。 Rectangle rect。 }。例如: figures[i].shape = LINE。 figures[i]. = 20。 figures[i]. = 200。 ? 圖形數(shù)據(jù)的輸入: int count。 countMAX_NUM_OF_FIGURES。 do { cout 請輸入圖形的種類 (0:線段 ,1:矩形 ,2:圓 ,1:結束 ):。 } while (shape 1 || shape 2)。 //跳出誰? switch (shape) { case 0: //線 figures[count].shape = LINE。 cin figures[count]. figures[count]. figures[count]. figures[count].。 case 1: //矩形 figures[count].shape = RECTANGLE。 cin figures[count]. figures[count]. figures[count]. figures[count].。 case 2: //圓形 figures[count].shape = CIRCLE。 cin figures[count]. figures[count]. figures[count].。 } //end of switch } //end of for ? 圖形的輸出: for (int i=0。 i++) { switch (figures[i].shape) { case LINE: draw_line(figures[i].line)。 case RECTANGLE:
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1