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

正文內(nèi)容

構(gòu)造數(shù)據(jù)類型ppt課件(編輯修改稿)

2024-11-30 23:07 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ,其初始值為 N //變量 count來(lái)對(duì)成功的報(bào)數(shù)進(jìn)行計(jì)數(shù) //變量 index表示要報(bào)數(shù)的小孩的位置 include iostream using namespace std。 const int N=20,M=5。 int main() { bool in_circle[N]。 int num_of_children_remained, index。 //初始化數(shù)組 in_circle。 for (index=0。 indexN。 index++) in_circle[index] = true。 //開(kāi)始報(bào)數(shù) index = N1。 //從編號(hào)為 0的小孩開(kāi)始報(bào)數(shù), //index為前一個(gè)小孩的位置。 num_of_children_remained = N。 //報(bào)數(shù)前的圈子中小孩個(gè)數(shù) while (num_of_children_remained 1) { int count = 0。 while (count M) //對(duì)成功的報(bào)數(shù)進(jìn)行計(jì)數(shù),直到 M。 { index = (index+1)%N。 //計(jì)算要報(bào)數(shù)的小孩的編號(hào)。 if (in_circle[index]) count++。 //如果編號(hào)為 index的 //小孩在圈子中,該報(bào)數(shù)為成功的報(bào)數(shù)。 } in_circle[index] = false。 //小孩離開(kāi)圈子。 num_of_children_remained。 //圈中小孩數(shù)減 1。 } //找最后一個(gè)小孩 for (index=0。 indexN。 index++) if (in_circle[index]) break。 cout The winner is No. index .\n。 return 0。 } 報(bào)數(shù)一 報(bào)數(shù)二 報(bào)數(shù)三 報(bào)數(shù)四 結(jié)構(gòu) (struct)類型 ? 結(jié)構(gòu)類型 用于表示由固定多個(gè)類型可以不同的元素所構(gòu)成的復(fù)合數(shù)據(jù),它是一種用戶自定義類型。 ? 結(jié)構(gòu)類型定義格式: struct 結(jié)構(gòu)類型名 {成員表 }; ?成員表 為結(jié)構(gòu)類型的元素(成員) 類型說(shuō)明 ? 可以是任意的 C++類型( void和本結(jié)構(gòu)除外) ?結(jié)構(gòu)成員之間在邏輯上沒(méi)有先后次序關(guān)系 ?結(jié)構(gòu)成員的說(shuō)明次序會(huì)影響成員的存儲(chǔ)安排 ? 例如: struct Student { int no。 char name[20]。 Sex sex。 Date birth_date。 char birth_place[40]。 Major major。 }。 enum Sex { MALE, FEMALE }。 struct Date { int year,month,day。 }。 enum Major { MATHEMATICS, PHYSICS, CHEMISTRY,COMPUTER, GEOGRAPHY, ASTRONOMY,ENGLISH, CHINESE,PHILOSOPHY}。 ? 結(jié)構(gòu)類型變量的定義格式如下: ( 1) 結(jié)構(gòu)類型名 結(jié)構(gòu)類型 變量名 。 例: Student st; ( 2) struct 結(jié)構(gòu)類型名 結(jié)構(gòu)類型 變量名 。 例: struct Student st; //c語(yǔ)言風(fēng)格 ( 3) struct 結(jié)構(gòu)類型名 {成員表 } 結(jié)構(gòu)類型 變量名 。 例: struct Student{…… } st, st1; ( 4) struct {成員表 } 結(jié)構(gòu)類型 變量名 。 例: struct {…… } st,st1; 注意與 enum的變量定義方式進(jìn)行比較記憶。 結(jié)構(gòu)類型的操作 ? 訪問(wèn)結(jié)構(gòu)成員 ?結(jié)構(gòu)成員的訪問(wèn)要通過(guò)結(jié)構(gòu)變量名來(lái) “ 受限 ” ? 結(jié)構(gòu)類型變量 .結(jié)構(gòu)成員名 ?例如: ? Student st。 ? , ,.... ?每個(gè)成員都可以看作是一個(gè)獨(dú)立的變量 , 可以分別操作它們 , 例如: ? = 1。 ? strcpy(,張三 )。 ? = MALE。 ? ...... ? 不同結(jié)構(gòu)類型的成員的名字可以相同,并且,它們還可以與程序中非結(jié)構(gòu)成員的名字相同: struct A { char name[10]。 //OK ...... }。 struct B { char name[5]。 //OK ...... }。 char name[20]。 //OK int main() { A a。 B b。 ... ... //結(jié)構(gòu)變量 a的成員變量 name。 ... ... //結(jié)構(gòu)變量 b的成員變量 name。 ... name ... //全局變量 name。 } ? 賦值 ?可以對(duì)結(jié)構(gòu)類型數(shù)據(jù)進(jìn)行整體結(jié)構(gòu)賦值 , 例如: ? Student st1,st2。 ? st1 = st2。 //OK ?不同的結(jié)構(gòu)類型之間不能相互賦值 , 例如: ? Student st。 ? Date today。 ? st = today。 //Error 結(jié)構(gòu)類型變量的初始化 ? 在定義結(jié)構(gòu)類型的變量時(shí),依次給出成員的初始化 . 例: Student some_student={2,李四 , FEMALE, {1970,12,20},北京 , MATHEMATICS}。 ? 在定義一個(gè)結(jié)構(gòu)類型時(shí) ,不能對(duì)其成員進(jìn)行初始化 ,例如: struct A { int i=1。 //Error = double d=。 //Error } ? 也可以一個(gè)成員一個(gè)成員初始化 。 如: A a; =1。 =。 struct A { int i。 double d。 } a={1, }。 結(jié)構(gòu)類型的存儲(chǔ) ? 結(jié)構(gòu)類型的變量在內(nèi)存中占用一塊連續(xù)的存儲(chǔ)空間,其各個(gè)元素依它們?cè)诮Y(jié)構(gòu)類型中的定義次序存儲(chǔ)在這塊內(nèi)存空間中。例如 : ?Student st。 ?其內(nèi)存空間安排如下: ?結(jié)構(gòu)成員的內(nèi)存空間之間可能會(huì)存在 “ 空隙 ” ! (一般遵循偶字節(jié)對(duì)齊原則, vc遵循 4字節(jié)對(duì)齊) 例 ?可用 sizeof計(jì)算結(jié)構(gòu)類型的大小 向函數(shù)傳遞結(jié)構(gòu)數(shù)據(jù) ? 可作為參數(shù)傳給函數(shù) , 默認(rèn)參數(shù)傳遞方式為 值傳遞 , 例如: void f(Student st) { ....... } ...... Student st1。 ...... f(st1)。 ? 可作為函數(shù)返回值返回給調(diào)用者 , 例如: Student g() { ...... return ...。 } ...... Student st1=g()。 例 :針對(duì)一批學(xué)生信息實(shí)現(xiàn)以下功能 ? 統(tǒng)計(jì)計(jì)算機(jī)專業(yè)男生人數(shù) ? 統(tǒng)計(jì)出生地為 “ 南京 ” 的學(xué)生人數(shù) ? 按學(xué)號(hào)由小到大輸出學(xué)生信息 程序如下: 程序 聯(lián)合( union)類型 ? 聯(lián)合類型 用于實(shí)現(xiàn) 用一個(gè)類型表示多種類型的數(shù)據(jù) 。例如: union A { int i。 char c。 double d。 }。 ? 上面的聯(lián)合類型 A既可以描述 int型數(shù)據(jù),也可以描述 char和 double類型數(shù)據(jù)。 ? 聯(lián)合類型的所有成員占有同一塊內(nèi)存空間,該內(nèi)存空間的大小為其最大成員所需要的內(nèi)存空間的大小。 ? A a。 ? cout sizeof(a)。 //輸出: 8 ? 作用 :在程序運(yùn)行的不同時(shí)刻中,可以給一個(gè)聯(lián)合類型的變量賦予不同類型的數(shù)據(jù),例如: A a。 = 1。 //變量 a賦一個(gè) int型的值 ...... //把 a當(dāng)作 int型來(lái)用 = 39。A39。 //給變量 a賦一個(gè) char型的值 ...... //把 a當(dāng)作 char型來(lái)用。 = 。 //給變量 a賦一個(gè) double型的值 ...... //把 a當(dāng)作 double型來(lái)用。 ? 對(duì)于一個(gè)聯(lián)合類型的變量,在程序中將會(huì)分階段地把它作為不同的類型來(lái)使用,而不會(huì)同時(shí)把它作為幾種類型來(lái)用。 ? 當(dāng)給一個(gè)聯(lián)合類型的變量賦了一個(gè)某種類型的值之后,如果以另外一種類型來(lái)使用這個(gè)值,將得不到原來(lái)的值。例如: = 12。 cout 。 //輸出什么呢? ? 也可利用聯(lián)合類型來(lái)實(shí)現(xiàn)多種數(shù)據(jù)共享內(nèi)存空間。例如: union AB { int a[100]。 double b[100]。 }。 AB buffer。 ... ... //使用數(shù)組 a ...... ... ... //使用數(shù)組 b ...... 例 13:從鍵盤輸入一組圖形數(shù)據(jù),然后輸出相應(yīng)的圖形。其中的圖形可以是:線段、矩形和圓。 ? 一組圖形數(shù)據(jù)可用一個(gè)一維數(shù)組表示: const int MAX_NUM_OF_FIGURES=100。 Figure figures[MAX_NUM_OF_FIGURES]。 ? 數(shù)組元素的類型 Figure是一個(gè)聯(lián)合類型。 struct Line { double x1,y1,x2,y2。 }。 struct Rectangle { double left, top, right, bottom。 }。 struct Circle { double x, y, r。 }。 union Figure { Line line。 Rectangle rect。 Circle circle。 }。 ? 上面的表示存在問(wèn)題: ? 無(wú)法區(qū)分存儲(chǔ)在 figures[i]中的是什么圖形! ? 解決上面問(wèn)題的辦法是: enum FigureShape { LINE, RECTANGLE, CIRCLE }。 struct Line { FigureShape place_holder。 double x1,y1,x2,y2。 }。 struct Rectangle { FigureShape place_holder。 double left,top,right,bottom。 }。 struct Circle { FigureShape place_holder。 double x,y,r。 }。 union Figure { FigureShape shape。 Line line。 Rectangle rect。 Circle circle。 }。 ? 給一個(gè)數(shù)組元素 figures[i]賦值時(shí),除了圖形的幾何數(shù)據(jù)外,還需給出它為何種圖形。例如: figures[i].shape = LINE。 figures[i]. = 10。 figures[i]. = 20。 figures[i]. = 100。 figures[i]. = 200。 ? 訪問(wèn)數(shù)組元素 figures[i]時(shí),通過(guò) figures[i].shape的值就可知道 figures[i]存儲(chǔ)的是什么圖形。 ? 圖形數(shù)據(jù)的輸入: int count。 for (count=0。 countMAX_NUM_OF_FIGURES。 count++) { int shape。 do { cout 請(qǐng)輸入圖形的種類 (0:線段 ,1:矩形 ,2:圓 ,1:結(jié)束 ):。 cin shape。 } while (shape 1 || shape 2)。 if (shape == 1) break。 //跳出誰(shuí)? switch (shape) { case 0: //線 figures[count].shape = LINE。 cout 請(qǐng)輸入線段的起點(diǎn)和終點(diǎn)坐標(biāo) (x1,y1,x2,y2) : 。 cin figures[count]. figures[count]. figures[count]. figures[count].。 break。 case 1: //矩形 figures[count].shape = RECTANGLE。 cout 請(qǐng)輸入矩形的左上角和右下角坐標(biāo) (x1,y1,x2,y2):。 cin figures[count]. figures[count]. figures[count]. figures[count].。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1