版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 數(shù)組和指針,一維數(shù)組的聲明、實(shí)例化、初始化和訪問(wèn) 多維數(shù)組的聲明、實(shí)例化、初始化和訪問(wèn) 數(shù)組的基本操作和排序 System.Array類的使用 C# 語(yǔ)言中不安全代碼的基本概念 C# 語(yǔ)言中指針的使用,1956,1960,1978,1982,1990,1998,a0,a1,a2,a3,a4,a5,數(shù)組是一些具有相同類型的數(shù)據(jù)按一定順序組成的序列,初步認(rèn)識(shí)數(shù)組,問(wèn)題:輸入100個(gè)學(xué)生的成績(jī),計(jì)算100個(gè)學(xué)生的平均分,以及統(tǒng)計(jì)超過(guò)平均分的人數(shù)。,分析: 1 循環(huán),求出平均分 2 循環(huán),求出超過(guò)平均分的人數(shù),一種算法,sum = 0.0; int count2 = 0; for(i=1; i
2、 avg) count2+; 輸出 avg, count2;,第一次循環(huán)計(jì)算平均值,第二次循環(huán)計(jì)算超出平均分人數(shù),你讓我輸入兩次成績(jī)?,更好的解決辦法:先把所有數(shù)據(jù)暫存起來(lái),定義 100 個(gè)變量?,定義變量 x1, x2, , x100; 輸入x1, x2, , x100 sum = sum + x1; sum = sum + x2; sum = sum + x100; avg = sum / 100; count2 = 0; if(x1avg) count2+; if(x2avg) count2+; . if(x100avg) count2+; 輸出count2,變量名看起來(lái)很有規(guī)律, 卻無(wú)
3、法利用循環(huán)的好處,for(i=1; i=100; i+) sum = sum + xi;,X,需要使用“數(shù)組”,5.1 數(shù)組,具有相同類型的數(shù)據(jù)按一定順序組成的序列,數(shù)組中的每一個(gè)數(shù)據(jù)都可以通過(guò)數(shù)組名及下標(biāo)來(lái)存取,a0,a1,a2,a3,a4,a5,a6,a7,數(shù)組的所有元素按順序分配在連續(xù)的空間,注意: 可用下標(biāo)范圍: 0 數(shù)組長(zhǎng)度-1,int a=new int8;,每一個(gè)數(shù)組元素可以當(dāng)作獨(dú)立的變量使用,數(shù)組用于存儲(chǔ)和表示既與取值有關(guān), 又與位置(順序)有關(guān)的數(shù)據(jù)。,數(shù)組的類型 在C#中,數(shù)組屬于引用類型。 1 數(shù)組元素在內(nèi)存中是連續(xù)存放的,這是數(shù)組元素用下標(biāo)表示其在數(shù)組中位置的根據(jù)。 2
4、 C#中的數(shù)組類型可以對(duì)應(yīng)任何數(shù)據(jù)類型,即數(shù)組可以是基本數(shù)據(jù)類型,也可以是類類型,例如,可以聲明一個(gè)文本框(TextBox)類型的數(shù)組。 3 C#通過(guò).NET框架中的System.Array類來(lái)支持?jǐn)?shù)組,因此,可以使用該類的屬性與方法操作數(shù)組。,5.1.1 一維數(shù)組,聲明、實(shí)例化和初始化一維數(shù)組的各種形式參見(jiàn)表5-1 一般通過(guò)數(shù)組下標(biāo)來(lái)訪問(wèn)數(shù)組中的數(shù)據(jù)元素。C#語(yǔ)言還可以通過(guò)foreach語(yǔ)句來(lái)枚舉數(shù)組的各個(gè)元素 【例5.1】一維數(shù)組的使用示例:隨機(jī)產(chǎn)生100個(gè)學(xué)生的成績(jī),計(jì)算學(xué)生的平均成績(jī),并統(tǒng)計(jì)高于平均成績(jī)的學(xué)生人數(shù) 【例5.2】利用一維數(shù)組顯示Fibonacii數(shù)列:1、1、2、3、5、
5、8、的前20項(xiàng)。要求每行顯示5項(xiàng),聲明一維數(shù)組,例: char CharArr; / 字符型一維數(shù)組 int intArr; / 整型一維數(shù)組 string StringArray; / 字符串一維數(shù)組,數(shù)據(jù)類型 數(shù)組名;,表示數(shù)組每個(gè)元素的類型,現(xiàn)在還不能使用數(shù)組元素,必須經(jīng)過(guò)實(shí)例化才可以使用,動(dòng)態(tài)實(shí)例化-使用new 運(yùn)算符,int a; /聲明 a = new int5; /實(shí)例化 int IntArr = new int5; int IntArr = new int53,6,9,2,18;,數(shù)組名 = new 數(shù)據(jù)類型數(shù)組長(zhǎng)度,可以將數(shù)組定義和實(shí)例化合寫在一起,例:定義并初始化一個(gè)100
6、個(gè)元素的浮點(diǎn)數(shù)數(shù)組score,float score; score = new float100;,float score=new float100;,兩種方式都正確,數(shù)組長(zhǎng)度可以是無(wú)符號(hào)整型表達(dá)式,即非負(fù)整數(shù) 也可以是一個(gè)常量表達(dá)式,或者變量表達(dá)式。 int Size=5; int A=new intSize; C#允許聲明元素個(gè)數(shù)為0的數(shù)組,例如: int A=new int0;,靜態(tài)初始化(實(shí)例化),例子: int IntArr=3,6,9,2,18; string StringArr=English, Computer, Maths, Chinese;,數(shù)據(jù)類型 數(shù)組名=元素1, 元素
7、2, .,靜態(tài)初始化數(shù)組必須與數(shù)組定義結(jié)合在一條語(yǔ)句中,數(shù)組在實(shí)例化時(shí),可以為元素指定初始化值。,如果為數(shù)組指定初始化值,可以省略對(duì)元素個(gè)數(shù)的說(shuō)明: int A= new int 1,2,3,4,5; 可以將聲明數(shù)組的語(yǔ)句 “int A= new int51,2,3,4,5;” 簡(jiǎn)化為:int A= 1,2,3,4,5;,為數(shù)組指定初始化的值可以是變量表達(dá)式,例如: int x=1,y=2; int A= new int5x,y,x+y,y+y,y*y+1; 一旦要為數(shù)組指定初始化值,就必須為數(shù)組的所有元素指定初始化值,指定值的個(gè)數(shù)既不能多于數(shù)組的元素個(gè)數(shù),也不能少于數(shù)組的元素個(gè)數(shù)。,訪問(wèn)一維
8、數(shù)組 使用數(shù)組名與下標(biāo)(索引)可以唯一確定數(shù)組中的某個(gè)元素,從而實(shí)現(xiàn)對(duì)該元素的訪問(wèn)。,數(shù)組名下標(biāo),可以是任何整型表達(dá)式,例如: int x=4,y=5; int A=new int31,2,3; / 使用數(shù)組第1個(gè)元素的值為其他變量賦值 x=A 0; A 1=y; / 為數(shù)組第2個(gè)元素賦值,在訪問(wèn)數(shù)組元素時(shí),要注意不要使下標(biāo)越界,例如: int A=new int5; A5=15; / 下標(biāo)越界 可以在實(shí)例化數(shù)組時(shí)為數(shù)組的所有元素初始化指定的值,但不能在賦值語(yǔ)句中使用一個(gè)賦值運(yùn)算符為整個(gè)數(shù)組賦值,例如: int A=new int31,2,3; / 正確 A=4,5,6; / 錯(cuò)誤,試圖為整個(gè)
9、數(shù)組賦值,int a=new int8; a2=10; int i=5; Console.Write(ai-3); for(i=0; i8; i+) ai = i*i;,這樣用當(dāng)然沒(méi)有問(wèn)題,下標(biāo)可以是表達(dá)式,便于使用循環(huán)變量控制下標(biāo),這樣的for循環(huán)變量最適合做數(shù)組下標(biāo) for(i=0; iN; i+),例:數(shù)組聲明與訪問(wèn),using System; class ArrayTest static void Main(string args) int numbers; / 定義一個(gè)一維數(shù)組 numbers = new int6; / 動(dòng)態(tài)初始化數(shù)組 for (int i = 0; i numbe
10、rs.Length; i+) numbersi = i * i; Console.WriteLine(numbers0=1, i, numbersi); ,例: 定義一個(gè)數(shù)組,使其元素值為對(duì)應(yīng)下標(biāo)值的平方,并輸出數(shù)組中的元素,使用 數(shù)組名.Length 可以獲取數(shù)組的長(zhǎng)度,練習(xí)題:,定義一個(gè)長(zhǎng)度為10的浮點(diǎn)數(shù)數(shù)組 x 進(jìn)行動(dòng)態(tài)或者靜態(tài)初始化 將每個(gè)元素賦值為下標(biāo)的開(kāi)方 Math.Sqrt(),foreach循環(huán)語(yǔ)句 C#專門提供了一種用于遍歷數(shù)組的foreach循環(huán)語(yǔ)句。 foreach循環(huán)語(yǔ)句的格式為: foreach(類型名稱 變量名稱 in 數(shù)組名稱)循環(huán)體 語(yǔ)句中的“變量名稱”是一個(gè)循
11、環(huán)變量,在循環(huán)中,該變量依次獲取數(shù)組中各元素的值。因此,對(duì)于依次獲取數(shù)組中各元素值的操作,使用這種循環(huán)語(yǔ)句就很方便。要注意,“變量名稱”的類型必須與數(shù)組的類型一致。,例如,假定有一個(gè)整型數(shù)組A,則用foreach語(yǔ)句獲取數(shù)組中和元素的值并輸出到label1控件的Text屬性中的代碼為: foreach(int i in A) label1.Text = label1.Text + i + ; foreach語(yǔ)句遍歷數(shù)組雖然很方便,但其功能受一定的限制,例如,如果想為數(shù)組各元素依次有規(guī)律賦值,foreach循環(huán)將無(wú)能為力。,5.1.2 多維數(shù)組,多維數(shù)組的聲明、實(shí)例化和初始化與一維數(shù)組的聲明、實(shí)
12、例化和初始化相類似。聲明多維數(shù)組時(shí),用逗號(hào)表示維數(shù),一個(gè)逗號(hào)表示兩維數(shù)組,兩個(gè)逗號(hào)表示三維數(shù)組,以此類推。注意:在聲明數(shù)組聲明中即使沒(méi)有指定維數(shù)的實(shí)際大小,也必須使用逗號(hào)分隔各個(gè)維 例1例5 C#支持兩種類型的多維數(shù)組。第一種是矩形數(shù)組,也稱等長(zhǎng)數(shù)組 【例5.3】二維數(shù)組的使用,聲明多維數(shù)組 在多維數(shù)組中,比較常用的是二維數(shù)組,二維數(shù)組可以保存二行二列的同類型數(shù)據(jù),6行4列的同類數(shù)據(jù),可以使用64的二維數(shù)組保存,int, data = new int6,4; data0,0 = 98; .,定義數(shù)組和分配空間,訪問(wèn)數(shù)組元素,使用兩個(gè)下標(biāo)指定行和列,聲明二維數(shù)組與聲明一維數(shù)組格式類似,例如: c
13、har, CharArr; int, A;,數(shù)據(jù)類型 , 數(shù)組名,數(shù)組元素類型,聲明多維數(shù)組時(shí),用逗號(hào)表示維數(shù),一個(gè)逗號(hào)表示二維數(shù)組,兩個(gè)逗號(hào)表示三維數(shù)組,依次類推。,二維數(shù)組的初始化,數(shù)組名 = new 數(shù)據(jù)類型長(zhǎng)度1,長(zhǎng)度2; 例: int, IntArr = new int3,2; int, A = new int2,21,2,3,4; 注意: 上面定義的數(shù)組IntArr中包含3X2=6個(gè)元素,下標(biāo)分別為 0,0, 0,1, 1,0,1,1,2,0,2,1,訪問(wèn)多維數(shù)組需要用多個(gè)下標(biāo)唯一確定數(shù)組中某個(gè)元素,例如: / 聲明一個(gè)4行4列的二維數(shù)組 int , Ar=new int4,4;
14、Ar1,2=15; / 為第2行第3列的元素賦值 int a=Ar1,2; / 用第2行第3列的元素為其他變量賦值 也可以”行基準(zhǔn)”給二維數(shù)組靜態(tài)賦值,但一般不用靜態(tài)賦值給超過(guò)二維的多維數(shù)組.要訪問(wèn)二維數(shù)組中的所有元素可以使用雙重循環(huán)來(lái)實(shí)現(xiàn),通常外循環(huán)控制行,內(nèi)循環(huán)控制列。,例:通過(guò)二重循環(huán),將1-12賦值給一個(gè)二維數(shù)組,并顯示數(shù)組內(nèi)容,static void Main(string args) int t, i; int, table = new int3, 4; for (t = 0; t 3; t+) /給二維數(shù)組賦值 for (i = 0; i 4; i+) tablet, i = (
15、t * 4) + i + 1;/填數(shù) for (t = 0; t 3; t+) /顯示二維數(shù)組的值 for (i = 0; i 4; i+) Console.Write(tablet, i + “t”);/橫向跳格 Console.WriteLine(); ,練習(xí):,定義一個(gè)4行4列的double 型數(shù)組 將數(shù)組所有元素按圖設(shè)置: 輸出該數(shù)組在對(duì)角線上的元素值,多維數(shù)組介紹,C#可以使用多維數(shù)組 3維數(shù)組的下標(biāo)有三個(gè)整數(shù),4維數(shù)組的下標(biāo)有4個(gè)整數(shù),依次類推 多維數(shù)組的使用和二維數(shù)組的使用方法類似,根據(jù)數(shù)組的維數(shù)確定方括號(hào)中的逗號(hào)的個(gè)數(shù) 例: 定義一個(gè)三維數(shù)組: string , , Strin
16、gArr = new string3,2,4;,數(shù)組總結(jié),數(shù)組(array)是一種數(shù)據(jù)結(jié)構(gòu),它包含相同類型的一組數(shù)據(jù) 數(shù)組有一個(gè)“秩(rank)”,它確定和每個(gè)數(shù)組元素(element)關(guān)聯(lián)的索引個(gè)數(shù),其值是數(shù)組類型的方括號(hào)之間逗號(hào)個(gè)數(shù)加上1。數(shù)組的秩又稱為數(shù)組的維度。“秩”為 1 的數(shù)組稱為一維數(shù)組(single-dimensional array),“秩”大于 1 的數(shù)組稱為多維數(shù)組(multi-dimensional array)。維度大小確定的多維數(shù)組通常稱為兩維數(shù)組、三維數(shù)組等 數(shù)組的每個(gè)維度都有一個(gè)關(guān)聯(lián)的長(zhǎng)度(length),它是一個(gè)大于或等于零的整數(shù)。創(chuàng)建數(shù)組實(shí)例時(shí),將確定維度和
17、各維度的長(zhǎng)度,它們?cè)谠搶?shí)例的整個(gè)生存期內(nèi)保持不變。換而言之,對(duì)于一個(gè)已存在的數(shù)組實(shí)例,既不能更改它的維度,也不可能調(diào)整它的維度大小,數(shù)組屬性,(1)數(shù)組使用類型聲明,通過(guò)數(shù)組下標(biāo)(或稱索引)來(lái)訪問(wèn)數(shù)組中的數(shù)據(jù)元素。 (2)數(shù)組可以是一維數(shù)組、多維數(shù)組。 (3)數(shù)組元素可以為任何數(shù)據(jù)類型,包括數(shù)組類型。 (4)數(shù)組下標(biāo)(索引)從0開(kāi)始:具有 n 個(gè)元素(即維度長(zhǎng)度為n)的數(shù)組的下標(biāo)是從 0 到 n-1。 (5)數(shù)值數(shù)組元素的默認(rèn)值設(shè)置為零,而引用元素的默認(rèn)值設(shè)置為 null。 (6)數(shù)組中的元素總數(shù)是數(shù)組中各維度長(zhǎng)度的乘積。 (7)通過(guò).NET框架中的System Array類來(lái)支持?jǐn)?shù)組。因此,可以利用該類的屬性與方法來(lái)操作數(shù)組,數(shù)組注意事項(xiàng),數(shù)組必須先聲明:類型名稱 數(shù)組名; 數(shù)組在聲明后必須實(shí)例化才能使用: 數(shù)組名稱 =
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 不動(dòng)產(chǎn)抵押借款示范協(xié)議2024年版版B版
- 二零二四年度航油供應(yīng)與物流服務(wù)全面合作協(xié)議
- 2024年規(guī)范:鐵路貨物運(yùn)輸勞務(wù)合同2篇
- 2024年高層管理崗位人才聘用協(xié)議
- 2024試用期勞動(dòng)協(xié)議書(shū)模板:新材料產(chǎn)業(yè)專用版3篇
- 2024權(quán)買賣合同協(xié)議書(shū):醫(yī)療設(shè)備使用權(quán)轉(zhuǎn)讓協(xié)議3篇
- 2024年高新技術(shù)企業(yè)研發(fā)項(xiàng)目不可撤銷風(fēng)險(xiǎn)擔(dān)保書(shū)3篇
- 中國(guó)傳媒大學(xué)《動(dòng)物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江同濟(jì)科技職業(yè)學(xué)院《生物實(shí)驗(yàn)安全概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 長(zhǎng)江工程職業(yè)技術(shù)學(xué)院《證券從業(yè)知識(shí)技能》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023-2024學(xué)年安徽省安慶市高一上學(xué)期期末聯(lián)考生物試題(解析版)
- 危險(xiǎn)化學(xué)品目錄2023
- 粵教版地理七年級(jí)下冊(cè)全冊(cè)課件
- 小學(xué)科學(xué)蘇教版六年級(jí)上冊(cè)全冊(cè)精華知識(shí)點(diǎn)(2022新版)
- 萎縮性胃炎共識(shí)解讀
- 《中外資產(chǎn)評(píng)估準(zhǔn)則》課件第8章 澳大利亞與新西蘭資產(chǎn)評(píng)估準(zhǔn)則
- 2022版義務(wù)教育語(yǔ)文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
- 授課課件國(guó)家衛(wèi)健委發(fā)布《猴痘診療指南(2022年版)》全文內(nèi)容PPT通用課件
- 朱東潤(rùn)《中國(guó)歷代文學(xué)作品選》目錄簡(jiǎn)體字版
- 銀行授信前須問(wèn)企業(yè)的100個(gè)問(wèn)題
評(píng)論
0/150
提交評(píng)論