c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第1頁
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第2頁
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第3頁
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第4頁
c#pp第五章數(shù)組、結(jié)構(gòu)和枚舉.ppt_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第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)稱為數(shù)組元素。數(shù)組用一個統(tǒng)一的名稱來標(biāo)識這些元素,這個名稱就是數(shù)組名。它包含大量相同類型的變量,這些變量可以通過一個數(shù)組名和數(shù)組下標(biāo)(或者叫索引),來訪問。包含在數(shù)組中的變量,也稱為數(shù)組元素。 在C#中,數(shù)組有一維(只有一個下標(biāo))或

2、者多維(有多個下標(biāo))。 對于每一維中,數(shù)組中數(shù)組元素的個數(shù)叫這個維的數(shù)組長度。無論是一維數(shù)組還是多維數(shù)組,每個維的下標(biāo)都是從0開始,結(jié)束于這個維的數(shù)組長度減1,5.1.2 一維數(shù)組 1一維數(shù)組的定義 格式: 數(shù)組類型 數(shù)組名; 例:int a; string arr; char carr,2動態(tài)初始化 動態(tài)初始化需要借助new運(yùn)算符,為數(shù)組元素分配內(nèi)存空間,并為數(shù)組元素賦初值,數(shù)值類型初始化為0,布爾類型初始化為false,字符串類型初始化為null。 格式: 數(shù)組名=new 數(shù)據(jù)類型數(shù)組長度; 例:a =new int6; 也可以將定義和動態(tài)初始化寫在一起: 例: string arr=ne

3、w 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ù)類型 數(shù)組名=元素1,元素2.; 用這種方法對數(shù)組進(jìn)行初始化時,無須說明數(shù)組

4、元素的個數(shù),只需按順序列出數(shù)組中的全部元素即可,系統(tǒng)會自動計算并分配數(shù)組所需的內(nèi)存空間。 例如: int IntArr=-45,9,29,32,46; char StringArr=a,b, c, d,4關(guān)于一維數(shù)組初始化的幾點(diǎn)說明 在C#中,數(shù)組初始化是程序設(shè)計中經(jīng)常容易出錯的 部分,為加深讀者對C#中數(shù)組的理解,下面列出一些需 要讀者注意的方面: (1)動態(tài)初始化數(shù)組時,可以把定義與初始化分開在 不同的語句中進(jìn)行 ; (2)靜態(tài)初始化數(shù)組必須與數(shù)組定義結(jié)合在一條語句 中,否則程序就會出錯 ; (3)在數(shù)組初始化語句中,如果大括號中已明確列出 了數(shù)組中的元素, 即確定了元素個數(shù), 則表示數(shù)組

5、元素 個數(shù)的數(shù)值(即方括號中的數(shù)值)必須是常量, 并且該 數(shù)值必須與數(shù)組元素個數(shù)一致,5訪問一維數(shù)組中的元素 在C#中是通過數(shù)組名和下標(biāo)來訪問數(shù)組元素的。 例:int a=new int12; int c=5; int b=6; ab+c+=2; 每一個C#的數(shù)組都知道自己的長度,數(shù)組的長度由 Length 決定。 int i=a.Length; /i=12,例:計算a數(shù)組中前3個元素的總和,并且把結(jié)果保存到變量sum中。 int sum=a0+1+a2; 如果要把數(shù)組中的元素全部相加,則用循環(huán)比較方便。 例: for(int i=0;ia.Length; i+) sum+=ai; / 注意:

6、不能寫成i=a.Length,例:寫出下列程序的結(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 stati

7、c 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個數(shù),每個數(shù)在136范圍內(nèi),要求每個數(shù)不同,1下面是幾條動態(tài)初始化一維數(shù)組的語句,其中正確的是( ) A. int arr2=new int ; B. int arr2=new

8、 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ù)組是最簡單也是最常用的數(shù)組。 1二維數(shù)組的定義 數(shù)據(jù)類型 , 數(shù)組名; 例如: double , dArr; /定義一個double型二維數(shù)組,2二維數(shù)組的初始化 格式: 數(shù)組名=new 數(shù)據(jù)類型數(shù)組長度1,數(shù)組長度2; 例如: dArr=new double 3, 4 ; 也可以將二維數(shù)組的定義與動態(tài)初始化合并在一條語句中。 例如: double , dArr=new double 3, 4 ; 在動態(tài)初

9、始化二維數(shù)組時,也可以直接為其賦予初始化值。 例如: int , IntArr=new int , 1, 3, 2, 4, 5,6; 二維數(shù)組也可以進(jìn)行靜態(tài)初始化 : char , c=a, b, c, x, y, z,寫出下列程序的結(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) e

10、xist=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();,編程:

11、輸出如右圖所示的楊輝三角,1下面是幾條定義并初始化二維數(shù)組的語句,指出其中正確的是( ) Aint arr3 =new int2, 3 ; Bint arr3=new int2, 3 ; Cint arr3 , =new int2, 3 ; Dint , arr3=new int2, 3,練習(xí),2寫出下列程序的輸出結(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)是用戶自定義的數(shù)據(jù)類型。結(jié)構(gòu)類型是指把各種不同類

12、型數(shù)據(jù)信息組合在一起形成的組合類型,5. 2 結(jié)構(gòu)類型,5.2.1 結(jié)構(gòu)的聲明 結(jié)構(gòu)類型也是先聲明后使用。 聲明結(jié)構(gòu)類型時要使用struct關(guān)鍵字,聲明結(jié)構(gòu)類型的一般語法格式如下: struct 標(biāo)識符 /結(jié)構(gòu)成員定義,例:定義一個表示矩形的結(jié)構(gòu)。 struct Rectangle /定義名為Rectangle的結(jié)構(gòu) public double 長; public double 寬; public代表這個成員是公有成員,可以被外界訪問,結(jié)構(gòu)體中也可以放方法成員,如可以在結(jié)構(gòu)體中計算面積。 例:struct Rectangle /定義名為Student的結(jié)構(gòu) public double 長; p

13、ublic double 寬; public void 面積( ) Console.WriteLine(“面積=0”,長*寬);,5.2.2 結(jié)構(gòu)成員的訪問 結(jié)構(gòu)成員可分為兩類,一是實例成員,一是靜態(tài)成員。 若成員名前有static關(guān)鍵字,則該成員為靜態(tài)成員,否則為實例成員。靜態(tài)成員通過結(jié)構(gòu)名來訪問,格式: 結(jié)構(gòu)名.靜態(tài)成員名 實例成員的訪問是通過創(chuàng)建結(jié)構(gòu)類型的變量來訪問結(jié)構(gòu)的實例成員。格式: 結(jié)構(gòu)名 標(biāo)識符; 實例成員訪問格式為: 結(jié)構(gòu)變量名.實例成員名,練習(xí): 1. 聲明結(jié)構(gòu)類型的關(guān)鍵字為( ) A class B double C struct D int,枚舉類型是用戶自定義的數(shù)據(jù)類型

14、,是一種允許用符號代表數(shù)據(jù)的值類型。 枚舉是指程序中某個變量具有一組確定的值,通過“枚舉”可以將其值一一列出來。 例如:將一個星期的7天分別用符號Monday、Tuesday、Wednesday、Thursday、Friday、Saturday和Sunday來表示,5. 3 枚舉,5.3.1 枚舉類型的定義 枚舉類型是一種用戶自己定義的由一組指定常量集合組 成的獨(dú)特類型。 格式: enum 枚舉名 枚舉成員表,例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 注意:兩個枚舉成員名不能完全相同,5.3.2 枚舉成員的賦值 在定義的枚舉類型中,每

15、一個枚舉成員都有一個相對應(yīng)的整數(shù)值,對于枚舉成員對應(yīng)的整數(shù)值,默認(rèn)情況下C#規(guī)定第1個枚舉成員的值取0,它后面的每一個枚舉成員的值按加上1遞增。 例: enum WeekDay Sun, Mon, Tue, Wed, Thu, Fri, Sat; 中,其枚舉成員Sun、Mon、Tue、Wed、Thu、Fri和Sat在執(zhí)行程序時,分別被賦予整數(shù)值0、1、2、3、4、5和6,例:輸出枚舉成員對應(yīng)的整數(shù)值。 using System; enum color yellow, brown, blue, black, purple class EnumDemo static void Main( ) Co

16、nsole.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)過顯式

17、轉(zhuǎn)換前,是不會變換成整數(shù)值的,1. 為第1個枚舉成員賦值 在定義枚舉類型時,為第1個枚舉成員賦值,它后面的每一個枚舉成員的值按加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)c

18、olor.brown); Console.WriteLine(“blue=0”, (int)color.blue); Console.WriteLine(“black=0”, (int)color.black); Console.WriteLine(“purple=0”, (int)color.purple);,2. 為某一個枚舉成員賦值 如果在定義枚舉類型時,直接為某個枚舉成員賦值,則其他枚舉成員依次取值,如: enum color yellow, brown, blue, black=6, purple,例: using System; enum color yellow, brown,

19、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); Consol

20、e.WriteLine(“purple=0”, (int)color.purple);,3. 為多個枚舉成員賦值 在定義枚舉類型時,還可以為多個枚舉成員賦值。 例如: enum color yellow, brown=3, blue, black=-3, purple,例:輸出枚舉成員對應(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); Cons

21、ole.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. 為多個枚舉成員賦同樣的值 在定義枚舉類型時,可以讓多個枚舉成員具有同樣的整數(shù)值,如: enum color yello

22、w, brown=3, blue, black= blue, purple; /這里black的整數(shù)值就為4,例:輸出枚舉成員對應(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 枚舉成員的訪問 可以通過枚舉型變量和枚舉名兩種方式來訪問枚舉成員。 1. 通過變量訪問枚舉成員 先要聲明一個枚舉型變量,形式如下: 枚舉類型名 變量名; 例: enum WeekDay Sun, Mon, Tue, Wed, Thu, F

溫馨提示

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

評論

0/150

提交評論