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

正文內(nèi)容

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

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

【正文】 第五章 程序的數(shù)據(jù)描述( II)--構(gòu)造數(shù)據(jù)類型 主講人:侯海良 通信與控制工程系 本章內(nèi)容 ? 構(gòu)造數(shù)據(jù)類型概述 ? 枚舉類型 ? 數(shù)組類型 ? 結(jié)構(gòu)與聯(lián)合類型 ? 指針類型(參數(shù)傳遞和動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)) ? 引用類型 構(gòu)造數(shù)據(jù)類型 ? 有些數(shù)據(jù)不適合用基本數(shù)據(jù)類型來(lái)表示。 如 :矩陣、向量 ? 語(yǔ)言往往提供了由基本數(shù)據(jù)類型來(lái)構(gòu)造新類型的手段。 ? 構(gòu)造數(shù)據(jù)類型屬于用戶自定義數(shù)據(jù)類型。 ?枚舉類型 ?數(shù)組類型 ?結(jié)構(gòu) /聯(lián)合類型 ?指針 /引用類型 枚舉類型 ? 如何描述一個(gè)星期的每一天這樣的數(shù)據(jù)?如果用 int來(lái)描述,將會(huì)面臨: ?1表示什么意思? ?星期天用什么整數(shù)表示? 0還是 7? ?如果用 0~6表示一個(gè)星期的每一天,則對(duì)于一個(gè)取值為一個(gè)星期某一天的 int型變量 day,如何防止下面的邏輯錯(cuò)誤: ? day = 10 ? day = day*2 ? 在 C++中用枚舉類型來(lái)解決上面的問(wèn)題。 枚舉類型的定義 ? 枚舉類型是由用戶自定義的一種簡(jiǎn)單數(shù)據(jù)類型。在定義一個(gè)枚舉類型時(shí),需要列出其值集中的每個(gè)值(枚舉值)。 ? 枚舉類型的定義格式為: ? enum 枚舉類型名 {枚舉值表 }; ? 枚舉值表 為用逗號(hào)隔開的若干個(gè) 標(biāo)識(shí)符 。 例如: ? enum Day {SUN,MON,TUE,WED,THU,FRI,SAT}。 ? enum Color {RED,GREEN,BLUE}。 ? enum Month {JAN,FEB,MAR,APR,MAY,JUN,JUL, AUG,SEP,OCT,NOV,DEC}。 ? 每一個(gè)枚舉值都對(duì)應(yīng)著一個(gè)整數(shù) 。 默認(rèn)情況下 ,第一個(gè)枚舉值對(duì)應(yīng)常量值 0, 其它的值為前一個(gè)值加 1。 ? 在定義枚舉類型時(shí),也可給枚舉值指定對(duì)應(yīng)的整數(shù)值。例如: ? enum Day {SUN=7,MON=1,TUE,WED,THU,FRI,SAT}。 ? TUE:2,... ? bool類型可看成是 C++語(yǔ)言提供的一個(gè)預(yù)定義的枚舉類型: ? enum bool { false, true }。 ? 枚舉類型變量的定義格式為: ( 1) 枚舉類型名 枚舉類型變量名 。 例: enum Day{SUN,MON,TUE,WED,THU,FRI,SAT}。 Day d1。 ( 2) enum 枚舉類型名 枚舉類型變量名 例: enum Day{SUN,MON,TUE,WED,THU,FRI,SAT}。 enum Day d1,d2。 //C語(yǔ)言風(fēng)格 ( 3) enum 枚舉類型名 {枚舉值表 } 枚舉類型變量名 。 例: enum Day{SUN,MON,TUE,WED,THU,FRI,SAT}d1,d2。 ( 4) enum {枚舉值表 }枚舉類型變量名 。 例: enum {SUN,MON,TUE,WED,THU,FRI,SAT}d1,d2。 注意 :第四種方法無(wú)法再定義變量 , 除非再一次重聲明枚舉類型 枚舉類型的運(yùn)算 ? 賦值 ? 一個(gè)枚舉類型的變量只能在相應(yīng)枚舉類型的值集中取值。例如: ? Day day。 ? day = SUN。 //OK ? day = 1。 //Error。 ? day = RED。 //Error ? 相同枚舉類型之間可以進(jìn)行賦值操作,例如: ? Day d1,d2。 ? d2 = d1。 ? 可以把一個(gè)枚舉值賦值給一個(gè)整型變量,但不能把一個(gè)整型數(shù)賦值給枚舉類型的變量,例如: ? int a。 ? a = d1。 //OK ? d1 = a。 //Error ? d1 = (Day)a。 //OK,但不安全 = day=(day)1。 //OK ? 比較 ? 枚舉值之間的比較為枚舉值所對(duì)應(yīng)的整數(shù)之間的比較。例: MON TUE(結(jié)果為 true) ? 算術(shù)運(yùn)算 ? 運(yùn)算時(shí),枚舉值將轉(zhuǎn)換成對(duì)應(yīng)的整型值。 ? 對(duì)枚舉類型進(jìn)行算術(shù)運(yùn)算的結(jié)果類型為算術(shù)類型。例如: Day d。 d = d+1。 //Error,因?yàn)?d+1的結(jié)果為 int類型。 d = (Day)(d+1) //OK ? 不能對(duì)枚舉類型的值直接進(jìn)行輸入 ,可以進(jìn)行輸出 。例如: Day d。 cin d。 //Error cout d。 //OK,將把 d轉(zhuǎn)換成 int 例 1:枚舉類型輸入 /輸出 include iostream using namespace std。 enum day {SUN, MON, TUE, WED, THU, FRI, SAT}。 int main() { Day d。 int i。 cin i。 switch (i) { case 0: d = SUN。 break。 case 1: d = MON。 break。 case 2: d = TUE。 break。 case 3: d = WED。 break。 case 4: d = THU。 break。 case 5: d = FRI。 break。 case 6: d = SAT。 break。 default: cout Input Error! endl。 exit(1)。 } ...... switch (d) { case SUN: cout SUN endl。 break。 case MON: cout MON endl。 break。 case TUE: cout TUE endl。 break。 case WED: cout WED endl。 break。 case THU: cout THU endl。 break。 case FRI: cout FRI endl。 break。 case SAT: cout SAT endl。 break。 } return 0。 } 數(shù)組類型 ? 如何表示一個(gè)向量和矩陣這樣的復(fù)合數(shù)據(jù)?如果用獨(dú)立的變量來(lái)分別表示它們的元素,則會(huì)面臨: ? 變量數(shù)量太多。 ? 變量之間缺乏顯式的聯(lián)系。 ? C++提供了數(shù)組類型來(lái)表示上述的數(shù)據(jù): ? 數(shù)組類型是一種由 固定 多個(gè) 同類型 的元素按一定次序所構(gòu)成的復(fù)合數(shù)據(jù)類型。 ? 數(shù)組類型是一種用戶自定義的數(shù)據(jù)類型。 ? 數(shù)組類型可分為: ? 一維數(shù)組:表示向量和線性表等 ? 二維數(shù)組:表示矩陣等 ? 多維數(shù)組(三維及三維以上) 一維數(shù)組 ? 用于表示由 固定多個(gè) 同類型的具有線性次序關(guān)系的數(shù)據(jù)所構(gòu)成的復(fù)合數(shù)據(jù)類型。如:向量、某門課程的成績(jī)表、學(xué)生的姓名表等。 ? 數(shù)組類型定義格式為: typedef 元素類型 一維數(shù)組類型名 [元素個(gè)數(shù) ]。 ? 元素類型 為任意 C++類型( void除外) ?元素個(gè)數(shù) 為 整型常量表達(dá)式 ?例如: ? typedef int A[10]。 //由 10個(gè) int型元素所構(gòu)成的 //一維數(shù)組類型 ? 一維數(shù)組類型變量定義格式為: ?一維數(shù)組類型名 一維數(shù)組變量名 ; 或 ?元素類型 一維數(shù)組變量名 [元素個(gè)數(shù) ]。 ? 元素類型 為任意 C++類型( void除外) ? 元素個(gè)數(shù) 為 整型常量表達(dá)式 ? 例如: ? typedef int A[10]。 ? A a。 //由 10個(gè) int型元素所構(gòu)成的數(shù)組。 或 ? int a[10]。 //由 10個(gè) int型元素所構(gòu)成的數(shù)組。 一維數(shù)組的操作 ? 通常情況下,對(duì)數(shù)組類型數(shù)據(jù)的操作要通過(guò)其元素來(lái)進(jìn)行。 ? 訪問(wèn)一維數(shù)組元素 ?格式: 一維數(shù)組變量名 [下標(biāo) ] ? 下標(biāo) 為整型表達(dá)式 ? 第一個(gè)元素的下標(biāo)為: 0 ?例如: ? int a[10]。 //數(shù)組 a ? a[0]、 a[1]、 ...、 a[9] //數(shù)組元素 ? C++語(yǔ)言 不對(duì)數(shù)組元素下標(biāo)越界進(jìn)行檢查 。程序員必須仔細(xì)處置這個(gè)問(wèn)題!如: a[i]中 i的取值 ? 可把數(shù)組的每個(gè)元素看成是獨(dú)立的變量 。 例如: int a[10]。 int sum=0,i。 ...... for (i=0。 i10。 i++) sum += a[i]。 ? 不能對(duì)兩個(gè)數(shù)組進(jìn)行整體賦值, 需要通過(guò)元素來(lái)進(jìn)行: int a[10],b[10]。 ..... a = b。 //Error for (int i=0。 i10。 i++) a[i] = b[i]。 //OK 例 2:用一維數(shù)組實(shí)現(xiàn)求第 n個(gè)費(fèi)波那契 (Fibonacci)數(shù) include iostream using namespace std。 int main() { const int MAX_N=40。 int fibs[MAX_N]。 int n,i。 cout 請(qǐng)輸入 n(1 MAX_N ):。 cin n。 if (n MAX_N) { cout n太大 ! 應(yīng)不大于 MAX_N endl。 return 1。 } fibs[0] = fibs[1] = 1。 //初始化第 2個(gè)費(fèi)波那契數(shù) for (i=2。 in。 i++) //計(jì)算其它的費(fèi)波那契數(shù) fibs[i] = fibs[i1] + fibs[i2]。 cout 第 n 個(gè)費(fèi)波那契數(shù)是: fibs[n1] endl。 return 0。 } 例 3:從鍵盤輸入 10個(gè)數(shù),輸出其中的最大值 ...... int main() { int a[10]。 for (int i=0。 i10。 i++) cin a[i]。 int max=a[0]。 //首先假設(shè)第 0個(gè)元素最大 for (i=1。 i10。 i++) if (a[i] max) max = a[i]。 cout max endl。 } 例 4:從鍵盤輸入 10個(gè)數(shù),把它們從小到大排序后輸出 從 n個(gè)數(shù)中找出最大者,與第 n個(gè)數(shù)交換位置;然后,從剩余的 n1個(gè)數(shù)中再找出最大者,與第 n1個(gè)數(shù)交換位置; … ,一直到剩下的數(shù)只有一個(gè)為止。 int main() { int a[10]。 int i。 for (i=0。 i10。 i++) cin a[i]。 for (int n=10。 n1。 n) //n為元素個(gè)數(shù) { int j=0。 //用 j記住最大元素的下標(biāo),首先假設(shè)第 0個(gè)元素最大 for (i=1。 in。 i++) if (a[i]a[j]) j = i。 //保持 j為最大元素的下標(biāo) //交換 a[j]和 a[n1]的值 int temp=a[n1]。 a[n1] = a[j]。 a[j] = temp。 } for (i=0。 i10。 i++) cout a[i]。 } 例 4:統(tǒng)計(jì)某地區(qū)某年中濕度最大和最小的月份 分析: 濕度數(shù)據(jù)有鍵盤輸入,把每月的濕度數(shù)據(jù)放在一個(gè)數(shù)組中,然后找出濕度最大和最小的月份。 顯示枚舉數(shù)據(jù)通過(guò) switch語(yǔ)句實(shí)現(xiàn): 具體程序如下: 程序 一維數(shù)組變量的初始化 ? 用一對(duì)花括號(hào)把元素的初始值括起來(lái) 。 例如: ?int a[10]={1,2,3,4,5,6,7,8,9,10}。 ? 初始化表中的值可以少于數(shù)組元素個(gè)數(shù),不足部分的數(shù)組元素初始化成 0。例如 : ?int b[10]={1,2,3,4}。 //b[4]~b[9]為 0 ? 如果每個(gè)元素都進(jìn)行了初始化 , 則數(shù)組元素個(gè)數(shù)可以省略 。 例如: ?int c[]={1,2,3}。 //隱含著 c由三個(gè)元素構(gòu)成 一維數(shù)組的存儲(chǔ)分配 ? 對(duì)于一維數(shù)組類型的數(shù)據(jù),編譯程序?qū)?huì)在內(nèi)存中給其分配連續(xù)的存儲(chǔ)空間來(lái)存儲(chǔ)數(shù)組元素。例如: int a[10]。 ? 其內(nèi)存空間分配如下: a[0] a[1] ... a[9] ? 一維數(shù)組所占的內(nèi)存空間大小可以用 sizeof操作符來(lái)計(jì)算。例如: ? int a[10]。 ? cout sizeof(a)。 //輸出數(shù)組 a所占的內(nèi)存字節(jié)數(shù)。 向函數(shù)傳遞一維數(shù)組 ? 被調(diào)用函數(shù)的形參一般為不帶數(shù)組大小的一維數(shù)組定義以及數(shù)組元素的個(gè)數(shù)。 ? 例:求一維數(shù)組中最大元素的位置 int max(int x[],int num)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1