資源描述:
《第5章 c#數(shù)組結(jié)構(gòu)與枚舉》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、·89·第5章C#數(shù)組、結(jié)構(gòu)和枚舉聲明一個(gè)變量可以存儲(chǔ)一個(gè)值,當(dāng)遇到要存儲(chǔ)多個(gè)相同類型的值的時(shí)候,變量就顯得無能為力,數(shù)組正是在這種存儲(chǔ)需求下設(shè)計(jì)的一種數(shù)據(jù)結(jié)構(gòu);常量可用來存儲(chǔ)一個(gè)固定值,但是要存儲(chǔ)多個(gè)固定值的時(shí)候,常量也失效了,這時(shí)候就要借助于枚舉來實(shí)現(xiàn);而結(jié)構(gòu)是用來表示更加復(fù)雜的值類型,在結(jié)構(gòu)里,用戶可以聲明不同數(shù)據(jù)類型的變量作為一個(gè)整體。學(xué)完本章后,讀者將了解數(shù)組、結(jié)構(gòu)和枚舉的用法。本章主要涉及到的知識(shí)點(diǎn)有:q數(shù)組:理解數(shù)組的概念,并創(chuàng)建數(shù)組。q使用數(shù)組:包括定位、遍歷、查找、排序等典型操作。q結(jié)構(gòu)
2、:在需要考慮運(yùn)行效率、且?guī)缀醪蛔鲞\(yùn)算的數(shù)據(jù)應(yīng)該作為結(jié)構(gòu)定義。了解結(jié)構(gòu)的用法。q枚舉:用于聲明一組命名的常數(shù)。理解枚舉的好處,并使用枚舉。5.1C#中的數(shù)組在日常生活中,人們用容器來存儲(chǔ)物品,為了方便查找,總是將眾多的物品分門別類地存儲(chǔ)在不同的容器中。在計(jì)算機(jī)程序中,同樣會(huì)遇到處理大量具有相同類型的數(shù)據(jù)的時(shí)候,C#語言提供了“數(shù)組”這一數(shù)據(jù)結(jié)構(gòu),用于處理這樣的數(shù)據(jù)。5.1.1聲明和初始化一維數(shù)組【本節(jié)示例參考:源代碼chapter55.1.1ArrayExample】數(shù)組類似于生活中的容器,可以將一
3、組數(shù)據(jù)類型相同的數(shù)據(jù)按照一定的順序存儲(chǔ)起來,存儲(chǔ)在數(shù)組中的數(shù)據(jù)又叫元素,可以通過“索引”,或叫“下標(biāo)”的整數(shù)來區(qū)分?jǐn)?shù)組中的元素。C#支持一維數(shù)組、多維數(shù)組(矩形數(shù)組)和數(shù)組的數(shù)組(交錯(cuò)數(shù)組)。下面通過一個(gè)例子來學(xué)習(xí)一維數(shù)組。暑期到了,音像店的老板Landy整理了一個(gè)CD架位置,并買了5張碟片放在上面出租,分別是《功夫熊貓》、《不可思議綠巨人》、《赤壁》、《木乃伊3》、《牛仔褲的夏天2》,有客人來租碟的時(shí)候,就從相應(yīng)的位置找到這張碟。如果把這個(gè)CD架理解為一個(gè)“數(shù)組”,它順序存放的“元素”就是碟片。在程序中
4、,可以用以下的語句聲明一個(gè)數(shù)組:string[]movies;聲明以后,需要讓計(jì)算機(jī)內(nèi)存分配指定大小的空間,這叫初始化數(shù)組,如下所示:movies=newstring[5];·89·用new關(guān)鍵字創(chuàng)建一個(gè)數(shù)組,實(shí)際上是在請(qǐng)求分配內(nèi)存空間。數(shù)組初始化成功后,就可以把元素存入數(shù)組,如下所示:movies[0]=“功夫熊貓”;movies[1]=“不可思議綠巨人”;movies[2]=“赤壁”;movies[3]=“木乃伊3”;movies[4]=“牛仔褲的夏天2”;注意:緊跟數(shù)組名的數(shù)字,稱之為“下標(biāo)”或“索
5、引”。同C語言和大部分語言一樣,C#數(shù)組的下標(biāo)是從0開始,而不是從1。如果要聲明一個(gè)大小是5的數(shù)組,其下標(biāo)就是從0~4。通過以上內(nèi)容,完成了數(shù)組的聲明和初始化工作。對(duì)于數(shù)組的聲明和初始化,還可以用以下三種不同的方式簡寫。(1)方式一:string[]movies=newstring[5];計(jì)算機(jī)內(nèi)存將分配5個(gè)連續(xù)的存儲(chǔ)string類型的空間。因?yàn)樽址贑#中是引用類型,所以系統(tǒng)默認(rèn)將每個(gè)元素初始化為NULL。如果是數(shù)值型數(shù)組,將默認(rèn)初始化為0,例如:intnumArr=newint[5];//每個(gè)元素默
6、認(rèn)值為0floatstrArr=newfloat[5];//每個(gè)元素默認(rèn)值為0objectobjArr=newobject[5];//每個(gè)元素默認(rèn)值為NULL(2)方式二:string[]movies=newstring[]{“功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3”,”牛仔褲的夏天2”}這里可以不用顯式指定數(shù)組的大小,數(shù)組大小默認(rèn)為初始化的元素個(gè)數(shù)。(3)方式三:如果在聲明的時(shí)候就初始化,還可以簡化為:string[]movies={“功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3”
7、,”牛仔褲的夏天2”}以上的數(shù)組定義方式都能達(dá)到相同的目的,在定義數(shù)組的時(shí)候,之前如果不知道數(shù)組的元素,應(yīng)采用方式一。如果定義的時(shí)候就知道數(shù)組的元素,那么采取方式三會(huì)使程序更簡潔。數(shù)組定義好以后,就可以通過循環(huán)來訪問數(shù)組的每一個(gè)元素:for(inti=0;i8、其他類型的數(shù)組通過一維數(shù)組的方式,解決了Landy保存部分碟片的問題。但是Landy的煩惱是,隨著碟片不斷增多,查找碟片越來越難,如果能給每張碟片一個(gè)編號(hào),編號(hào)表示碟片存放的位置在第幾排第幾列,這樣會(huì)方便很多,每一張碟片的編號(hào)及其存儲(chǔ)位置如圖5.1所示。111213141521…31·89·41圖5.1碟片編號(hào)現(xiàn)在用程序來實(shí)現(xiàn)。編號(hào)是按照表格方式排列的,即是二維的,所以通過二維數(shù)組可以實(shí)現(xiàn)。二維數(shù)組的聲明方式如下:1//方式一