《C語(yǔ)言程序設(shè)計(jì)教程》課件--第9章_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第9章_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第9章_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第9章_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)教程》課件--第9章_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、12022-3-2722022-3-273 一個(gè)學(xué)生的信息有一個(gè)學(xué)生的信息有學(xué)號(hào)學(xué)號(hào)、姓名姓名、性別性別、年齡年齡、住住址址、成績(jī)成績(jī)等。等。 一本圖書(shū)的信息有一本圖書(shū)的信息有分類(lèi)編號(hào)分類(lèi)編號(hào)、書(shū)名書(shū)名、作者作者、出版出版社社、出版日期出版日期、價(jià)格價(jià)格、庫(kù)存量庫(kù)存量等。等。 如何描述這些類(lèi)型不同的相關(guān)數(shù)據(jù)?如何描述這些類(lèi)型不同的相關(guān)數(shù)據(jù)?一種構(gòu)造類(lèi)型數(shù)據(jù)一種構(gòu)造類(lèi)型數(shù)據(jù) 結(jié)構(gòu)體結(jié)構(gòu)體由若干不同類(lèi)型的數(shù)據(jù)項(xiàng)組成,由若干不同類(lèi)型的數(shù)據(jù)項(xiàng)組成, 構(gòu)成結(jié)構(gòu)體的各個(gè)數(shù)據(jù)項(xiàng)稱(chēng)為構(gòu)成結(jié)構(gòu)體的各個(gè)數(shù)據(jù)項(xiàng)稱(chēng)為結(jié)構(gòu)體成員結(jié)構(gòu)體成員。 2022-3-274 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型1 成員名成員名1; 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型2

2、 成員名成員名2; 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型n 成員名成員名n; ;lstructstruct為關(guān)鍵字;為關(guān)鍵字;l結(jié)構(gòu)體名結(jié)構(gòu)體名是用戶(hù)定義是用戶(hù)定義的的類(lèi)型標(biāo)識(shí)類(lèi)型標(biāo)識(shí)。l 中是組成該結(jié)構(gòu)體中是組成該結(jié)構(gòu)體的的成員成員。成員的。成員的數(shù)據(jù)數(shù)據(jù)類(lèi)型類(lèi)型可以是可以是C語(yǔ)言所允語(yǔ)言所允許的任何數(shù)據(jù)類(lèi)型許的任何數(shù)據(jù)類(lèi)型。2022-3-275例如圖書(shū)類(lèi)型的定義:例如圖書(shū)類(lèi)型的定義: struct bookcard char num10; /*圖書(shū)圖書(shū)分類(lèi)編號(hào)是字符數(shù)組類(lèi)型分類(lèi)編號(hào)是字符數(shù)組類(lèi)型*/ char name30; /*書(shū)名是字符數(shù)組類(lèi)型書(shū)名是字符數(shù)組類(lèi)型*/ char author30; /*作者

3、是字符數(shù)組類(lèi)型作者是字符數(shù)組類(lèi)型*/ char publisher60; /*出版社是字符數(shù)組類(lèi)型出版社是字符數(shù)組類(lèi)型*/ float price; /*價(jià)格是單精度實(shí)型價(jià)格是單精度實(shí)型*/ int n; /*庫(kù)存量是整型庫(kù)存量是整型*/ ;例如學(xué)生類(lèi)型的定義:例如學(xué)生類(lèi)型的定義:struct student char num8; /* 學(xué)號(hào)是學(xué)號(hào)是字符數(shù)組字符數(shù)組類(lèi)型類(lèi)型 */ char name30; /* 姓名是姓名是字符數(shù)組字符數(shù)組類(lèi)型類(lèi)型 */ char sex; /* 性別是性別是字符型字符型 */ int age; /* 年齡是年齡是整型整型 */ char addr60; /*

4、 住址是住址是字符數(shù)組字符數(shù)組類(lèi)型類(lèi)型 */ int score6; /* 成績(jī)是成績(jī)是整型數(shù)組整型數(shù)組類(lèi)型類(lèi)型 */ ;2022-3-276 按照結(jié)構(gòu)體類(lèi)型的組成,系統(tǒng)為定義的結(jié)構(gòu)體按照結(jié)構(gòu)體類(lèi)型的組成,系統(tǒng)為定義的結(jié)構(gòu)體變量分配內(nèi)存單元。結(jié)構(gòu)體變量的各個(gè)成員在內(nèi)存變量分配內(nèi)存單元。結(jié)構(gòu)體變量的各個(gè)成員在內(nèi)存中占用連續(xù)存儲(chǔ)區(qū)域,中占用連續(xù)存儲(chǔ)區(qū)域,結(jié)構(gòu)體變量結(jié)構(gòu)體變量所占內(nèi)存所占內(nèi)存結(jié)構(gòu)體中結(jié)構(gòu)體中每個(gè)成員每個(gè)成員所占用內(nèi)存的所占用內(nèi)存的長(zhǎng)度之和長(zhǎng)度之和。2022-3-277應(yīng)先定義一個(gè)應(yīng)先定義一個(gè),而后再定義,而后再定義。系統(tǒng)對(duì)系統(tǒng)對(duì)不分配空間,僅對(duì)不分配空間,僅對(duì)分配空間。分配空間。只能

5、對(duì)只能對(duì)賦值、存取或運(yùn)算,而不能對(duì)一個(gè)賦值、存取或運(yùn)算,而不能對(duì)一個(gè)賦值、存取或運(yùn)算。賦值、存取或運(yùn)算。不不同結(jié)構(gòu)體類(lèi)型的成員名相同,同結(jié)構(gòu)體類(lèi)型的成員名相同, struct date int year,month,day; struct student char num8; char name30; char sex; birthday; /* 成員為結(jié)構(gòu)體類(lèi)型成員為結(jié)構(gòu)體類(lèi)型 */ char addr60; int score6; ;2022-3-278例如:例如:2022-3-279例如:例如:2022-3-2710 如果初值個(gè)數(shù)少于結(jié)構(gòu)體成員個(gè)數(shù),如果初值個(gè)數(shù)少于結(jié)構(gòu)體成員個(gè)數(shù),則將無(wú)

6、初值對(duì)應(yīng)的成員賦以則將無(wú)初值對(duì)應(yīng)的成員賦以0值。值。 如果初值個(gè)數(shù)多于結(jié)構(gòu)體成員個(gè)數(shù),如果初值個(gè)數(shù)多于結(jié)構(gòu)體成員個(gè)數(shù),則編譯出錯(cuò)。則編譯出錯(cuò)。2022-3-2711 元素的個(gè)數(shù)可以省略,根據(jù)賦初值時(shí)元素的個(gè)數(shù)可以省略,根據(jù)賦初值時(shí)結(jié)構(gòu)體常量的個(gè)數(shù)確定數(shù)組元素的個(gè)數(shù)結(jié)構(gòu)體常量的個(gè)數(shù)確定數(shù)組元素的個(gè)數(shù) 2022-3-27122022-3-27132022-3-27142022-3-2715 結(jié)構(gòu)體變量結(jié)構(gòu)體變量a的各成員可分別表示為的各成員可分別表示為a.num、、a.sex、a.birthday、a.score a.birthday.yeara.birthday.montha.bir

7、thday.day 2022-3-2716【例例9.6】編寫(xiě)一個(gè)統(tǒng)計(jì)選票的程序?!烤帉?xiě)一個(gè)統(tǒng)計(jì)選票的程序。 struct candidate char name20; /* name為候選人姓名為候選人姓名 */ int count; /* count為候選人得票數(shù)為候選人得票數(shù) */ list =invalid,0,Zhao,0,Qian,0, Sun,0,Li,0,Zhou,0;2022-3-2717main( ) int i,n; printf(Enter voten); scanf(%d,&n); /* 輸入所投候選人編號(hào),編號(hào)從輸入所投候選人編號(hào),編號(hào)從1 1開(kāi)始開(kāi)始 */

8、while (n!=-1) /* 當(dāng)輸入編號(hào)為當(dāng)輸入編號(hào)為-1-1時(shí),表示投票結(jié)束時(shí),表示投票結(jié)束 */ if (n=1 & n=5) listn.count+; /* 有效票,則相應(yīng)候選人計(jì)票成員加有效票,則相應(yīng)候選人計(jì)票成員加1 1 */ else printf(invalidn); list0.count+; /* 無(wú)效票無(wú)效票,list0的計(jì)票成員加的計(jì)票成員加1 */ scanf(%d,&n); /* 輸入所投候選人編號(hào)輸入所投候選人編號(hào) */ 2022-3-2718for (i=1; i-”是指向結(jié)構(gòu)體成員是指向結(jié)構(gòu)體成員運(yùn)算符,優(yōu)先級(jí)為一級(jí)運(yùn)算符,優(yōu)先級(jí)為一級(jí) p

9、=&d.year2022-3-2721輸入今天的日期,然后輸出該日期。輸入今天的日期,然后輸出該日期。main( ) struct date / /* * 在函數(shù)中定義結(jié)構(gòu)體類(lèi)型在函數(shù)中定義結(jié)構(gòu)體類(lèi)型 * */ / int year, month, day; today,*p=&today; / /* * 定義結(jié)構(gòu)體變量及其指針定義結(jié)構(gòu)體變量及其指針 * */ / printf (Enter today date(YYYY/MM/DD):); scanf(%d/%d/%d,&today.year,&today.month, &today.day); pr

10、intf(Today:%d/%d/%dn,p-year,p-month, p-day); 2022-3-27222022-3-2723ppppp1 H 1.0082 He 4.00263 Li 6.9414 Be 9.012182022-3-27242022-3-2725p101301101B200D3003012022-3-27262022-3-27272022-3-27282022-3-2729 形參是結(jié)構(gòu)體變量。調(diào)用此函數(shù)時(shí),形參是結(jié)構(gòu)體變量。調(diào)用此函數(shù)時(shí),系統(tǒng)將分別為形參系統(tǒng)將分別為形參cx和和cy各分配一個(gè)各分配一個(gè)sizeof(struct complex) 大小的內(nèi)存空間,大小的

11、內(nèi)存空間,每個(gè)成員都要一一傳遞。每個(gè)成員都要一一傳遞。 2022-3-27302022-3-2731 形參定義為指針型參數(shù)。函數(shù)調(diào)用時(shí),實(shí)參傳遞的形參定義為指針型參數(shù)。函數(shù)調(diào)用時(shí),實(shí)參傳遞的是結(jié)構(gòu)體指針(地址),因此形參是結(jié)構(gòu)體指針(地址),因此形參px、py可讀取主調(diào)函可讀取主調(diào)函數(shù)中變量的內(nèi)容,乘積結(jié)果也可通過(guò)形參數(shù)中變量的內(nèi)容,乘積結(jié)果也可通過(guò)形參pz指針存到主指針存到主調(diào)函數(shù)中的目標(biāo)變量。調(diào)函數(shù)中的目標(biāo)變量。這樣實(shí)參與形參之間的數(shù)據(jù)傳遞由多值(每個(gè)成員的值)這樣實(shí)參與形參之間的數(shù)據(jù)傳遞由多值(每個(gè)成員的值)變成了單值(結(jié)構(gòu)體變量的首地址)。變成了單值(結(jié)構(gòu)體變量的首地址)。 2022-

12、3-27322022-3-2733 鏈表是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),可根據(jù)需要鏈表是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),可根據(jù)需要?jiǎng)討B(tài)地分配存儲(chǔ)單元。在數(shù)組中,插入或刪動(dòng)態(tài)地分配存儲(chǔ)單元。在數(shù)組中,插入或刪除一個(gè)元素都比較繁瑣,而用鏈表則相對(duì)容除一個(gè)元素都比較繁瑣,而用鏈表則相對(duì)容易。但是數(shù)組元素的引用比較簡(jiǎn)單,對(duì)于鏈易。但是數(shù)組元素的引用比較簡(jiǎn)單,對(duì)于鏈表中結(jié)點(diǎn)數(shù)據(jù)的存取操作則相對(duì)復(fù)雜。表中結(jié)點(diǎn)數(shù)據(jù)的存取操作則相對(duì)復(fù)雜。 head 1000 1032 3284 1296 1382 2008圖圖9.2 動(dòng)態(tài)單向鏈表示意圖動(dòng)態(tài)單向鏈表示意圖C3284H1296A1382I2008NNULLNULL10001032stru

13、ct nodechar c; struct node *next; ;2022-3-2734 C語(yǔ)言提供了相關(guān)的存儲(chǔ)管理庫(kù)函數(shù)。這里語(yǔ)言提供了相關(guān)的存儲(chǔ)管理庫(kù)函數(shù)。這里僅介紹其中三個(gè),它們的原型說(shuō)明在僅介紹其中三個(gè),它們的原型說(shuō)明在“stdlib.h”頭文件和頭文件和“alloc.h”頭文件中,使用頭文件中,使用這三個(gè)函數(shù)時(shí),應(yīng)選擇其中一個(gè)頭文件包含到這三個(gè)函數(shù)時(shí),應(yīng)選擇其中一個(gè)頭文件包含到源程序中。源程序中。2022-3-2735將函數(shù)返回值轉(zhuǎn)換將函數(shù)返回值轉(zhuǎn)換成結(jié)構(gòu)體指針成結(jié)構(gòu)體指針 2022-3-27362022-3-2737動(dòng)態(tài)分配了動(dòng)態(tài)分配了10個(gè)存放整個(gè)存放整型數(shù)據(jù)的存儲(chǔ)單元型數(shù)據(jù)

14、的存儲(chǔ)單元 2022-3-2738 實(shí)參必須是一個(gè)指向動(dòng)態(tài)分配存儲(chǔ)區(qū)實(shí)參必須是一個(gè)指向動(dòng)態(tài)分配存儲(chǔ)區(qū)的指針,它可以是任何類(lèi)型的指針變量。的指針,它可以是任何類(lèi)型的指針變量。2022-3-2739q 建立鏈表就是根據(jù)需要一個(gè)一個(gè)地開(kāi)建立鏈表就是根據(jù)需要一個(gè)一個(gè)地開(kāi)辟新結(jié)點(diǎn),在結(jié)點(diǎn)中存放數(shù)據(jù)并建立結(jié)點(diǎn)辟新結(jié)點(diǎn),在結(jié)點(diǎn)中存放數(shù)據(jù)并建立結(jié)點(diǎn)之間的鏈接關(guān)系。之間的鏈接關(guān)系。 頭指針頭指針h設(shè)為設(shè)為NULL讀入一個(gè)學(xué)生姓名讀入一個(gè)學(xué)生姓名 當(dāng)姓名長(zhǎng)度不為當(dāng)姓名長(zhǎng)度不為0 開(kāi)辟新結(jié)點(diǎn)開(kāi)辟新結(jié)點(diǎn) p=NEW strcpy(p-name,name) gets(p-tel) p-next=NULL h=NULL

15、T F h指向第一個(gè)指向第一個(gè) 連接新結(jié)點(diǎn)連接新結(jié)點(diǎn) 結(jié)點(diǎn)結(jié)點(diǎn) h=p q-next=p q指向新的尾結(jié)點(diǎn)指向新的尾結(jié)點(diǎn) q=p 讀入一個(gè)學(xué)生姓名讀入一個(gè)學(xué)生姓名圖圖9.3 建立單向鏈表建立單向鏈表NULLhppq 2022-3-27402022-3-2741hp p指向第一個(gè)結(jié)點(diǎn)指向第一個(gè)結(jié)點(diǎn) p=head 當(dāng)當(dāng)p不為不為NULL 輸出結(jié)點(diǎn)數(shù)據(jù)輸出結(jié)點(diǎn)數(shù)據(jù) p指向下一個(gè)結(jié)點(diǎn)指向下一個(gè)結(jié)點(diǎn) p=p- -next圖圖9.5 輸出鏈表的輸出鏈表的N-S圖圖pppNULLNULL2022-3-27422022-3-2743hNULLNULL第第i-1個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn) 第第i個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn) 第第i+1個(gè)結(jié)點(diǎn)

16、個(gè)結(jié)點(diǎn) 2022-3-2744 p=head while(strcmp(x,p-name)!=0 & p-next!=NULLNULL) q指針跟隨指針跟隨p指針后移查找指針后移查找 (q=p;p=p-next;) strcmp(x,p-name)=0 T F p=head T F head=p-next q-next=p-next 沒(méi)找到?jīng)]找到 free(p)圖圖9.9 刪除鏈表中指定結(jié)點(diǎn)的刪除鏈表中指定結(jié)點(diǎn)的N-S圖圖刪除刪除第一個(gè)第一個(gè)結(jié)點(diǎn)結(jié)點(diǎn) 刪除中間刪除中間結(jié)點(diǎn)或尾結(jié)點(diǎn)或尾結(jié)點(diǎn)結(jié)點(diǎn) 刪除結(jié)點(diǎn)工刪除結(jié)點(diǎn)工作分兩步:作分兩步:查找結(jié)點(diǎn)查找結(jié)點(diǎn)刪除結(jié)點(diǎn)刪除結(jié)點(diǎn)學(xué)生姓名學(xué)生姓名當(dāng)姓名

17、不同并且當(dāng)姓名不同并且不是尾結(jié)點(diǎn)循環(huán)不是尾結(jié)點(diǎn)循環(huán)2022-3-2745hp2022-3-2746hpp q2022-3-2747hppp qq 2022-3-2748查找結(jié)點(diǎn)查找結(jié)點(diǎn) 2022-3-2749hNULLNULL第第i個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn)ppqqp0p新的第新的第i個(gè)結(jié)點(diǎn)個(gè)結(jié)點(diǎn)2022-3-2750 head=NULL T F p=head head=p0 while(strcmp(x,p-name)!=0 & p-next!=NULLNULL) p0-next q指針跟隨指針跟隨p指針后移查找指針后移查找 (q=p;p=p-next;) =NULL NULL strcmp(x,

18、p-name)=0 T F p=head T F p-next=p0 head=p0 q-next=p0 p0-next=NULLNULL p0-next=p圖圖9.11 在鏈表指定位置前插入結(jié)點(diǎn)的在鏈表指定位置前插入結(jié)點(diǎn)的N-S圖圖當(dāng)姓名不同并且當(dāng)姓名不同并且不是尾結(jié)點(diǎn)循環(huán)不是尾結(jié)點(diǎn)循環(huán)空表時(shí)空表時(shí)插入插入結(jié)點(diǎn)結(jié)點(diǎn)在表尾在表尾追加結(jié)點(diǎn)追加結(jié)點(diǎn) 插入結(jié)點(diǎn)工插入結(jié)點(diǎn)工作分兩步:作分兩步:查找插查找插入位置入位置連接連接新結(jié)點(diǎn)新結(jié)點(diǎn)在表頭在表頭插入結(jié)點(diǎn)插入結(jié)點(diǎn) 在表中間在表中間插入結(jié)點(diǎn)插入結(jié)點(diǎn) 2022-3-2751hpp02022-3-2752hpqp02022-3-2753hppp qq p0

19、2022-3-2754查找插入點(diǎn)查找插入點(diǎn) 2022-3-27552022-3-27562022-3-2757可以先選擇可以先選擇1 1建建立一個(gè)鏈表,然立一個(gè)鏈表,然后根據(jù)需要選擇后根據(jù)需要選擇功能功能2 2、功能、功能3 3、功能功能4 4、直到選、直到選擇擇0 0退出程序的退出程序的運(yùn)行運(yùn)行 2022-3-27582022-3-2759 結(jié)構(gòu)體類(lèi)型解決了如何描述一個(gè)邏輯上相關(guān),但結(jié)構(gòu)體類(lèi)型解決了如何描述一個(gè)邏輯上相關(guān),但數(shù)據(jù)類(lèi)型不同的一組分量的集合。數(shù)據(jù)類(lèi)型不同的一組分量的集合。 在需要節(jié)省內(nèi)存儲(chǔ)空間時(shí),在需要節(jié)省內(nèi)存儲(chǔ)空間時(shí),c c語(yǔ)言還提供了一種語(yǔ)言還提供了一種由若干個(gè)不同類(lèi)型的數(shù)據(jù)

20、項(xiàng)組成,但由若干個(gè)不同類(lèi)型的數(shù)據(jù)項(xiàng)組成,但共享同一存儲(chǔ)空共享同一存儲(chǔ)空間間的構(gòu)造類(lèi)型。的構(gòu)造類(lèi)型。一種構(gòu)造類(lèi)型數(shù)據(jù)一種構(gòu)造類(lèi)型數(shù)據(jù) 共用體共用體由若干不同類(lèi)型的數(shù)據(jù)項(xiàng)組成,由若干不同類(lèi)型的數(shù)據(jù)項(xiàng)組成, 構(gòu)成共用體的各個(gè)數(shù)據(jù)項(xiàng)稱(chēng)為構(gòu)成共用體的各個(gè)數(shù)據(jù)項(xiàng)稱(chēng)為共用體成員共用體成員。2022-3-2760 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型1 成員名成員名1; 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型2 成員名成員名2; 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型n 成員名成員名n; ;lunionunion為關(guān)鍵字;為關(guān)鍵字;l共用體名共用體名是用戶(hù)定義是用戶(hù)定義的的類(lèi)型標(biāo)識(shí)類(lèi)型標(biāo)識(shí)。l 中是組成該共用體中是組成該共用體的的成員成員。成員的。成員的數(shù)據(jù)數(shù)據(jù)類(lèi)型類(lèi)型可

21、以是可以是C語(yǔ)言所允語(yǔ)言所允許的任何數(shù)據(jù)類(lèi)型許的任何數(shù)據(jù)類(lèi)型。2022-3-2761例如:例如: union utype int i; char ch; long l; char c4; ; 定義了一個(gè)定義了一個(gè)union union utypeutype共用體共用體類(lèi)型,共用體類(lèi)型定義不分配內(nèi)存類(lèi)型,共用體類(lèi)型定義不分配內(nèi)存空間,只是說(shuō)明此類(lèi)型數(shù)據(jù)的組成空間,只是說(shuō)明此類(lèi)型數(shù)據(jù)的組成情況。情況。 2022-3-2762 按照共用體類(lèi)型的組成,系統(tǒng)為定義的共用體按照共用體類(lèi)型的組成,系統(tǒng)為定義的共用體變量分配內(nèi)存單元。變量分配內(nèi)存單元。共用體變量共用體變量所占內(nèi)存所占內(nèi)存共用體中占用內(nèi)存的共用

22、體中占用內(nèi)存的長(zhǎng)度最長(zhǎng)的成員長(zhǎng)度最長(zhǎng)的成員。2022-3-2763例如:例如:union utype int i; char ch; long l; char c4; a, b, c;2022-3-2764例如:例如:union int i; char ch; long l; char c4; 2022-3-2765 union utype int i; char ch; long l; char c4; a, b, c;2022-3-2766 union utype int i; char ch; long l; char c4; a, *p=&a;2022-3-2767例如:例如:

23、2022-3-2768 共用體類(lèi)型變量在定義時(shí)只能對(duì)第一共用體類(lèi)型變量在定義時(shí)只能對(duì)第一個(gè)成員進(jìn)行賦初值。個(gè)成員進(jìn)行賦初值。 由于第一個(gè)成員是字符型,用一個(gè)字由于第一個(gè)成員是字符型,用一個(gè)字節(jié),所以對(duì)于初值節(jié),所以對(duì)于初值0 0 x9741x9741僅能接受僅能接受0 0 x41x41,初值的高字節(jié)被截去。初值的高字節(jié)被截去。 1. A 41A 412. a 61a 61對(duì)對(duì)u2u2成員的引成員的引用是無(wú)意義的用是無(wú)意義的2022-3-27691234567856787830541984122081A低地址低地址高地址高地址高地址高地址低地址低地址2022-3-2770 枚舉枚舉是一個(gè)具有有限

24、個(gè)是一個(gè)具有有限個(gè)整型符號(hào)常量的整型符號(hào)常量的集合集合,這些整型符號(hào)常量稱(chēng)為枚舉常量。,這些整型符號(hào)常量稱(chēng)為枚舉常量。 每個(gè)枚舉類(lèi)型都必須進(jìn)行類(lèi)型的定義,每個(gè)枚舉類(lèi)型都必須進(jìn)行類(lèi)型的定義,定義時(shí)必須將其所有的枚舉常量一一列舉,定義時(shí)必須將其所有的枚舉常量一一列舉,以便限定此枚舉類(lèi)型變量的取值范圍。以便限定此枚舉類(lèi)型變量的取值范圍。 2022-3-2771 在枚舉類(lèi)型中,每個(gè)在枚舉類(lèi)型中,每個(gè)枚舉常量枚舉常量都代表一都代表一個(gè)整型值。在定義枚舉類(lèi)型的同時(shí)可隱式或個(gè)整型值。在定義枚舉類(lèi)型的同時(shí)可隱式或顯式地顯式地定義枚舉常量所代表的值定義枚舉常量所代表的值。 01234562022-3-27722

25、3452022-3-2773 enumenum 枚舉名枚舉名 枚舉變量名表枚舉變量名表; ; enumenum 枚舉名枚舉名 枚舉常量取值表枚舉常量取值表 枚舉變量表枚舉變量表; ; enumenum 枚舉常量取值表枚舉常量取值表 枚舉變量表枚舉變量表; ;2022-3-2774 賦值運(yùn)算賦值運(yùn)算 =true;=red;=yellow;=lightblue; =white; 用用sizeofsizeof運(yùn)算符計(jì)算枚舉變量所占內(nèi)存空間運(yùn)算符計(jì)算枚舉變量所占內(nèi)存空間是是enum color2類(lèi)型的枚舉值類(lèi)型的枚舉值2022-3-2775 取址運(yùn)算取址運(yùn)算 關(guān)系運(yùn)算關(guān)系運(yùn)算truefalse Sun

26、Sat (1) (0) 2022-3-2776 枚舉變量的輸出枚舉變量的輸出 枚舉變量的輸入枚舉變量的輸入 枚舉變量作為整型變量進(jìn)行輸入。例如:枚舉變量作為整型變量進(jìn)行輸入。例如: scanf(%d,&fg);1含義不直觀含義不直觀 2022-3-2777switch(fg) case false: printf(false); break; case true: printf(true); 枚舉變量的輸出枚舉變量的輸出方法二:利用多分支選擇語(yǔ)句輸出枚舉常量對(duì)應(yīng)方法二:利用多分支選擇語(yǔ)句輸出枚舉常量對(duì)應(yīng)的字符串。的字符串。 2022-3-2778enum flag false,true

27、 fg;char *name =false,true; fg=true;printf(%s,namefg); 枚舉變量的輸出枚舉變量的輸出方法三:依據(jù)枚舉值,運(yùn)用指針?lè)椒ㄝ敵鰧?duì)應(yīng)的方法三:依據(jù)枚舉值,運(yùn)用指針?lè)椒ㄝ敵鰧?duì)應(yīng)的字符串。字符串。2022-3-2779fg=true;printf(%s,fg); 枚舉變量的輸出枚舉變量的輸出 枚舉常量是標(biāo)識(shí)符,不是字符串,以輸出字符枚舉常量是標(biāo)識(shí)符,不是字符串,以輸出字符串方式輸出枚舉常量是錯(cuò)誤的。串方式輸出枚舉常量是錯(cuò)誤的。 2022-3-2780【例【例9.20】編制一個(gè)程序。當(dāng)輸入今天的星期序號(hào)后,】編制一個(gè)程序。當(dāng)輸入今天的星期序號(hào)后,輸出明天

28、是星期幾。輸出明天是星期幾。 enum weekday Mon=1,Tue,Wed,Thu,Fri,Sat,Sun ; char *name8=error,Mon,Tue,Wed, Thu,Fri,Sat,Sun;2022-3-2781main( ) enum weekday d; printf(Input todays numeral(1-7):); scanf(%d,&d); if (d0&d7) d+; /* 今天是星期一到星期六的時(shí)候今天是星期一到星期六的時(shí)候 */ else if (d=7) d=1; /* 今天是星期日今天是星期日 */ else d=0; if (d) printf(Tomorrow is %s.n,named); else printf(%sn,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論