c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第1頁(yè)
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第2頁(yè)
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第3頁(yè)
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第4頁(yè)
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第5頁(yè)
已閱讀5頁(yè),還剩37頁(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)介

第5章 數(shù)組、結(jié)構(gòu)和枚舉,內(nèi)容提要: 數(shù)組、結(jié)構(gòu)和枚舉的概念 一維數(shù)組、二維數(shù)組的定義及使用 結(jié)構(gòu)和枚舉的定義及使用 目的要求: 理解數(shù)組的含義 掌握一維數(shù)組、二維數(shù)組的用法 掌握結(jié)構(gòu)和枚舉的定義及使用 重點(diǎn)難點(diǎn): 一維數(shù)組、二維數(shù)組和結(jié)構(gòu),5. 1 數(shù)組 5.1.1 數(shù)組的概念 數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),是一組具有相同數(shù)據(jù)結(jié)構(gòu)的元素組成的有序的數(shù)據(jù)集合。組成數(shù)組的元素統(tǒng)稱(chēng)為數(shù)組元素。數(shù)組用一個(gè)統(tǒng)一的名稱(chēng)來(lái)標(biāo)識(shí)這些元素,這個(gè)名稱(chēng)就是數(shù)組名。它包含大量相同類(lèi)型的變量,這些變量可以通過(guò)一個(gè)數(shù)組名和數(shù)組下標(biāo)(或者叫索引),來(lái)訪問(wèn)。包含在數(shù)組中的變量,也稱(chēng)為數(shù)組元素。 在C#中,數(shù)組有一維(只有一個(gè)下標(biāo))或者多維(有多個(gè)下標(biāo))。 對(duì)于每一維中,數(shù)組中數(shù)組元素的個(gè)數(shù)叫這個(gè)維的數(shù)組長(zhǎng)度。無(wú)論是一維數(shù)組還是多維數(shù)組,每個(gè)維的下標(biāo)都是從0開(kāi)始,結(jié)束于這個(gè)維的數(shù)組長(zhǎng)度減1。,5.1.2 一維數(shù)組 1一維數(shù)組的定義 格式: 數(shù)組類(lèi)型 數(shù)組名; 例:int a; string arr; char carr;,2動(dòng)態(tài)初始化 動(dòng)態(tài)初始化需要借助new運(yùn)算符,為數(shù)組元素分配內(nèi)存空間,并為數(shù)組元素賦初值,數(shù)值類(lèi)型初始化為0,布爾類(lèi)型初始化為false,字符串類(lèi)型初始化為null。 格式: 數(shù)組名=new 數(shù)據(jù)類(lèi)型數(shù)組長(zhǎng)度; 例:a =new int6; 也可以將定義和動(dòng)態(tài)初始化寫(xiě)在一起: 例: string arr=new string3 “as”,”vb”,”23”;,using System; class zy4 static void Main() bool a=new bool2; char b=new char3; double c=new double4; string d=new string5; Console.WriteLine(a0); Console.WriteLine(b0); Console.WriteLine(c0); Console.WriteLine(d0); ,3靜態(tài)初始化 靜態(tài)初始化數(shù)組的格式如下: 數(shù)據(jù)類(lèi)型 數(shù)組名=元素1,元素2.; 用這種方法對(duì)數(shù)組進(jìn)行初始化時(shí),無(wú)須說(shuō)明數(shù)組元素的個(gè)數(shù),只需按順序列出數(shù)組中的全部元素即可,系統(tǒng)會(huì)自動(dòng)計(jì)算并分配數(shù)組所需的內(nèi)存空間。 例如: int IntArr=-45,9,29,32,46; char StringArr=a,b, c, d;,4關(guān)于一維數(shù)組初始化的幾點(diǎn)說(shuō)明 在C#中,數(shù)組初始化是程序設(shè)計(jì)中經(jīng)常容易出錯(cuò)的 部分,為加深讀者對(duì)C#中數(shù)組的理解,下面列出一些需 要讀者注意的方面: (1)動(dòng)態(tài)初始化數(shù)組時(shí),可以把定義與初始化分開(kāi)在 不同的語(yǔ)句中進(jìn)行 ; (2)靜態(tài)初始化數(shù)組必須與數(shù)組定義結(jié)合在一條語(yǔ)句 中,否則程序就會(huì)出錯(cuò) ; (3)在數(shù)組初始化語(yǔ)句中,如果大括號(hào)中已明確列出 了數(shù)組中的元素, 即確定了元素個(gè)數(shù), 則表示數(shù)組元素 個(gè)數(shù)的數(shù)值(即方括號(hào)中的數(shù)值)必須是常量, 并且該 數(shù)值必須與數(shù)組元素個(gè)數(shù)一致 。,5訪問(wèn)一維數(shù)組中的元素 在C#中是通過(guò)數(shù)組名和下標(biāo)來(lái)訪問(wèn)數(shù)組元素的。 例:int a=new int12; int c=5; int b=6; ab+c+=2; 每一個(gè)C#的數(shù)組都知道自己的長(zhǎng)度,數(shù)組的長(zhǎng)度由 Length 決定。 int i=a.Length; /i=12,例:計(jì)算a數(shù)組中前3個(gè)元素的總和,并且把結(jié)果保存到變量sum中。 int sum=a0+1+a2; 如果要把數(shù)組中的元素全部相加,則用循環(huán)比較方便。 例: for(int i=0;ia.Length; i+) sum+=ai; / 注意:不能寫(xiě)成i=a.Length。,例:寫(xiě)出下列程序的結(jié)果。 using System; class Arraysort static void Main( ) int nums=new int10,8,36,12,24; foreach(int j in nums) Console.Write(“00”, j); Console.WriteLine(); for(int j=nums.Length-1;j=0;j-) Console.Write (“00”, numsj); Console.WriteLine(); ,運(yùn)行結(jié)果如下:,using System; class Rnd_36_7 static void Main( ) int a=new int7; Random ran=new Random(); for(int i=0;ia.Length;i+) one_num: ai=(int)ran.Next(36)+1; for(int j=0;ji;j+) if(ai=aj) goto one_num; foreach(int n in a) Console.Write(“00“,n); ,編程:36選7。隨機(jī)產(chǎn)生7個(gè)數(shù),每個(gè)數(shù)在136范圍內(nèi),要求每個(gè)數(shù)不同。,1下面是幾條動(dòng)態(tài)初始化一維數(shù)組的語(yǔ)句,其中正確的是( ) A. int arr2=new int ; B. int arr2=new int4 ; C. int arr2=new inti 6,5,1,2,3; D. int arr2=new int4 6,5,1,2,3;,練習(xí):,5.1.3 二維數(shù)組 在多維數(shù)組中,二維數(shù)組是最簡(jiǎn)單也是最常用的數(shù)組。 1二維數(shù)組的定義 數(shù)據(jù)類(lèi)型 , 數(shù)組名; 例如: double , dArr; /定義一個(gè)double型二維數(shù)組,2二維數(shù)組的初始化 格式: 數(shù)組名=new 數(shù)據(jù)類(lèi)型數(shù)組長(zhǎng)度1,數(shù)組長(zhǎng)度2; 例如: dArr=new double 3, 4 ; 也可以將二維數(shù)組的定義與動(dòng)態(tài)初始化合并在一條語(yǔ)句中。 例如: double , dArr=new double 3, 4 ; 在動(dòng)態(tài)初始化二維數(shù)組時(shí),也可以直接為其賦予初始化值。 例如: int , IntArr=new int , 1, 3, 2, 4, 5,6; 二維數(shù)組也可以進(jìn)行靜態(tài)初始化 : char , c=a, b, c, x, y, z;,寫(xiě)出下列程序的結(jié)果: class myClass static void Main() double, a=1.2,2.3,3.4,4.5, 5.6,6.7,7.8,8.9; double b=1.2,6.7,5.4; bool exist; foreach(double i in a) exist=false; foreach(double k in b) if(i=k) exist=true; if(exist=false) Console.WriteLine(“0“,i); ,運(yùn)行結(jié)果:,using System; class YHtriangle static void Main() int, a=new int6,6; a0,0=1; for(int i=1;i=5;i+) ai,0=1; ai,i=1; for(int j=1;j=i;j+) ai,j=ai-1,j-1+ai-1,j; for(int i=0;i=5;i+) for(int j=0;j=i;j+) Console.Write(“0 0“,ai,j); Console.WriteLine(); ,編程:輸出如右圖所示的楊輝三角。,1下面是幾條定義并初始化二維數(shù)組的語(yǔ)句,指出其中正確的是( ) Aint arr3 =new int2, 3 ; Bint arr3=new int2, 3 ; Cint arr3 , =new int2, 3 ; Dint , arr3=new int2, 3;,練習(xí):,2寫(xiě)出下列程序的輸出結(jié)果。 int , a=new int2, 2; for(int i=0;i3;i+) for(int j=0;j3;j+) if(i=j) ai,j=1; else ai,j=0; Console.WriteLine(); ,結(jié)果:,結(jié)構(gòu)是用戶(hù)自定義的數(shù)據(jù)類(lèi)型。結(jié)構(gòu)類(lèi)型是指把各種不同類(lèi)型數(shù)據(jù)信息組合在一起形成的組合類(lèi)型。,5. 2 結(jié)構(gòu)類(lèi)型,5.2.1 結(jié)構(gòu)的聲明 結(jié)構(gòu)類(lèi)型也是先聲明后使用。 聲明結(jié)構(gòu)類(lèi)型時(shí)要使用struct關(guān)鍵字,聲明結(jié)構(gòu)類(lèi)型的一般語(yǔ)法格式如下: struct 標(biāo)識(shí)符 /結(jié)構(gòu)成員定義 ,例:定義一個(gè)表示矩形的結(jié)構(gòu)。 struct Rectangle /定義名為Rectangle的結(jié)構(gòu) public double 長(zhǎng); public double 寬; public代表這個(gè)成員是公有成員,可以被外界訪問(wèn)。,結(jié)構(gòu)體中也可以放方法成員,如可以在結(jié)構(gòu)體中計(jì)算面積。 例: struct Rectangle /定義名為Student的結(jié)構(gòu) public double 長(zhǎng); public double 寬; public void 面積( ) Console.WriteLine(“面積=0”,長(zhǎng)*寬); ,5.2.2 結(jié)構(gòu)成員的訪問(wèn) 結(jié)構(gòu)成員可分為兩類(lèi),一是實(shí)例成員,一是靜態(tài)成員。 若成員名前有static關(guān)鍵字,則該成員為靜態(tài)成員,否則為實(shí)例成員。靜態(tài)成員通過(guò)結(jié)構(gòu)名來(lái)訪問(wèn),格式: 結(jié)構(gòu)名.靜態(tài)成員名 實(shí)例成員的訪問(wèn)是通過(guò)創(chuàng)建結(jié)構(gòu)類(lèi)型的變量來(lái)訪問(wèn)結(jié)構(gòu)的實(shí)例成員。格式: 結(jié)構(gòu)名 標(biāo)識(shí)符; 實(shí)例成員訪問(wèn)格式為: 結(jié)構(gòu)變量名.實(shí)例成員名,練習(xí): 1. 聲明結(jié)構(gòu)類(lèi)型的關(guān)鍵字為( ) A class B double C struct D int ,枚舉類(lèi)型是用戶(hù)自定義的數(shù)據(jù)類(lèi)型,是一種允許用符號(hào)代表數(shù)據(jù)的值類(lèi)型。 枚舉是指程序中某個(gè)變量具有一組確定的值,通過(guò)“枚舉”可以將其值一一列出來(lái)。 例如:將一個(gè)星期的7天分別用符號(hào)Monday、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday來(lái)表示。,5. 3 枚舉,5.3.1 枚舉類(lèi)型的定義 枚舉類(lèi)型是一種用戶(hù)自己定義的由一組指定常量集合組 成的獨(dú)特類(lèi)型。 格式: enum 枚舉名 枚舉成員表;,例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 注意:兩個(gè)枚舉成員名不能完全相同。,5.3.2 枚舉成員的賦值 在定義的枚舉類(lèi)型中,每一個(gè)枚舉成員都有一個(gè)相對(duì)應(yīng)的整數(shù)值,對(duì)于枚舉成員對(duì)應(yīng)的整數(shù)值,默認(rèn)情況下C#規(guī)定第1個(gè)枚舉成員的值取0,它后面的每一個(gè)枚舉成員的值按加上1遞增。 例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 中,其枚舉成員Sun、Mon、Tue、Wed、Thu、Fri和Sat在執(zhí)行程序時(shí),分別被賦予整數(shù)值0、1、2、3、4、5和6。,例:輸出枚舉成員對(duì)應(yīng)的整數(shù)值。 using System; enum color yellow, brown, blue, black, purple class EnumDemo static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,注意:枚舉成員的值在不經(jīng)過(guò)顯式轉(zhuǎn)換前,是不會(huì)變換成整數(shù)值的。,1. 為第1個(gè)枚舉成員賦值 在定義枚舉類(lèi)型時(shí),為第1個(gè)枚舉成員賦值,它后面的每一個(gè)枚舉成員的值按加1遞增。 例: using System; enum color yellow=-1, brown, blue, black, purple class EnumDemo static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,2. 為某一個(gè)枚舉成員賦值 如果在定義枚舉類(lèi)型時(shí),直接為某個(gè)枚舉成員賦值,則其他枚舉成員依次取值,如: enum color yellow, brown, blue, black=6, purple;,例: using System; enum color yellow, brown, blue, black=6, purple class EnumDemo static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,3. 為多個(gè)枚舉成員賦值 在定義枚舉類(lèi)型時(shí),還可以為多個(gè)枚舉成員賦值。 例如: enum color yellow, brown=3, blue, black=-3, purple;,例:輸出枚舉成員對(duì)應(yīng)的整數(shù)值。 using System; enum color yellow, brown=3, blue, black=-3, purple class EnumDemo static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,4. 為多個(gè)枚舉成員賦同樣的值 在定義枚舉類(lèi)型時(shí),可以讓多個(gè)枚舉成員具有同樣的整數(shù)值,如: enum color yellow, brown=3, blue, black= blue, purple; /這里black的整數(shù)值就為4,例:輸出枚舉成員對(duì)應(yīng)的整數(shù)值。 using System; class EnumDemo enum color yellow, brown=3, blue, black= blue, purple static void Main( ) Console.WriteLine(“yellow=0”, color.yellow); Console.WriteLine(“yellow=0”, (int)color.yellow); Console.WriteLine(“brown=0”, (int)color.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple); ,5.3.3 枚舉成員的訪問(wèn) 可以通過(guò)枚舉型變量和枚舉名兩種方式來(lái)訪問(wèn)枚舉成員。 1. 通過(guò)變量訪問(wèn)枚舉成員 先要聲明一個(gè)枚舉型變量,形式如下: 枚舉類(lèi)型名 變量名; 例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat ;

溫馨提示

  • 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)論