




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第5章 數(shù)組和指針,一維數(shù)組的聲明、實例化、初始化和訪問 多維數(shù)組的聲明、實例化、初始化和訪問 數(shù)組的基本操作和排序 System.Array類的使用 C# 語言中不安全代碼的基本概念 C# 語言中指針的使用,1956,1960,1978,1982,1990,1998,a0,a1,a2,a3,a4,a5,數(shù)組是一些具有相同類型的數(shù)據(jù)按一定順序組成的序列,初步認識數(shù)組,問題:輸入100個學生的成績,計算100個學生的平均分,以及統(tǒng)計超過平均分的人數(shù)。,分析: 1 循環(huán),求出平均分 2 循環(huán),求出超過平均分的人數(shù),一種算法,sum = 0.0; int count2 = 0; for(i=1; i
2、 avg) count2+; 輸出 avg, count2;,第一次循環(huán)計算平均值,第二次循環(huán)計算超出平均分人數(shù),你讓我輸入兩次成績?,更好的解決辦法:先把所有數(shù)據(jù)暫存起來,定義 100 個變量?,定義變量 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,變量名看起來很有規(guī)律, 卻無
3、法利用循環(huán)的好處,for(i=1; i=100; i+) sum = sum + xi;,X,需要使用“數(shù)組”,5.1 數(shù)組,具有相同類型的數(shù)據(jù)按一定順序組成的序列,數(shù)組中的每一個數(shù)據(jù)都可以通過數(shù)組名及下標來存取,a0,a1,a2,a3,a4,a5,a6,a7,數(shù)組的所有元素按順序分配在連續(xù)的空間,注意: 可用下標范圍: 0 數(shù)組長度-1,int a=new int8;,每一個數(shù)組元素可以當作獨立的變量使用,數(shù)組用于存儲和表示既與取值有關, 又與位置(順序)有關的數(shù)據(jù)。,數(shù)組的類型 在C#中,數(shù)組屬于引用類型。 1 數(shù)組元素在內存中是連續(xù)存放的,這是數(shù)組元素用下標表示其在數(shù)組中位置的根據(jù)。 2
4、 C#中的數(shù)組類型可以對應任何數(shù)據(jù)類型,即數(shù)組可以是基本數(shù)據(jù)類型,也可以是類類型,例如,可以聲明一個文本框(TextBox)類型的數(shù)組。 3 C#通過.NET框架中的System.Array類來支持數(shù)組,因此,可以使用該類的屬性與方法操作數(shù)組。,5.1.1 一維數(shù)組,聲明、實例化和初始化一維數(shù)組的各種形式參見表5-1 一般通過數(shù)組下標來訪問數(shù)組中的數(shù)據(jù)元素。C#語言還可以通過foreach語句來枚舉數(shù)組的各個元素 【例5.1】一維數(shù)組的使用示例:隨機產生100個學生的成績,計算學生的平均成績,并統(tǒng)計高于平均成績的學生人數(shù) 【例5.2】利用一維數(shù)組顯示Fibonacii數(shù)列:1、1、2、3、5、
5、8、的前20項。要求每行顯示5項,聲明一維數(shù)組,例: char CharArr; / 字符型一維數(shù)組 int intArr; / 整型一維數(shù)組 string StringArray; / 字符串一維數(shù)組,數(shù)據(jù)類型 數(shù)組名;,表示數(shù)組每個元素的類型,現(xiàn)在還不能使用數(shù)組元素,必須經過實例化才可以使用,動態(tài)實例化-使用new 運算符,int a; /聲明 a = new int5; /實例化 int IntArr = new int5; int IntArr = new int53,6,9,2,18;,數(shù)組名 = new 數(shù)據(jù)類型數(shù)組長度,可以將數(shù)組定義和實例化合寫在一起,例:定義并初始化一個100
6、個元素的浮點數(shù)數(shù)組score,float score; score = new float100;,float score=new float100;,兩種方式都正確,數(shù)組長度可以是無符號整型表達式,即非負整數(shù) 也可以是一個常量表達式,或者變量表達式。 int Size=5; int A=new intSize; C#允許聲明元素個數(shù)為0的數(shù)組,例如: int A=new int0;,靜態(tài)初始化(實例化),例子: int IntArr=3,6,9,2,18; string StringArr=English, Computer, Maths, Chinese;,數(shù)據(jù)類型 數(shù)組名=元素1, 元素
7、2, .,靜態(tài)初始化數(shù)組必須與數(shù)組定義結合在一條語句中,數(shù)組在實例化時,可以為元素指定初始化值。,如果為數(shù)組指定初始化值,可以省略對元素個數(shù)的說明: int A= new int 1,2,3,4,5; 可以將聲明數(shù)組的語句 “int A= new int51,2,3,4,5;” 簡化為:int A= 1,2,3,4,5;,為數(shù)組指定初始化的值可以是變量表達式,例如: int x=1,y=2; int A= new int5x,y,x+y,y+y,y*y+1; 一旦要為數(shù)組指定初始化值,就必須為數(shù)組的所有元素指定初始化值,指定值的個數(shù)既不能多于數(shù)組的元素個數(shù),也不能少于數(shù)組的元素個數(shù)。,訪問一維
8、數(shù)組 使用數(shù)組名與下標(索引)可以唯一確定數(shù)組中的某個元素,從而實現(xiàn)對該元素的訪問。,數(shù)組名下標,可以是任何整型表達式,例如: int x=4,y=5; int A=new int31,2,3; / 使用數(shù)組第1個元素的值為其他變量賦值 x=A 0; A 1=y; / 為數(shù)組第2個元素賦值,在訪問數(shù)組元素時,要注意不要使下標越界,例如: int A=new int5; A5=15; / 下標越界 可以在實例化數(shù)組時為數(shù)組的所有元素初始化指定的值,但不能在賦值語句中使用一個賦值運算符為整個數(shù)組賦值,例如: int A=new int31,2,3; / 正確 A=4,5,6; / 錯誤,試圖為整個
9、數(shù)組賦值,int a=new int8; a2=10; int i=5; Console.Write(ai-3); for(i=0; i8; i+) ai = i*i;,這樣用當然沒有問題,下標可以是表達式,便于使用循環(huán)變量控制下標,這樣的for循環(huán)變量最適合做數(shù)組下標 for(i=0; iN; i+),例:數(shù)組聲明與訪問,using System; class ArrayTest static void Main(string args) int numbers; / 定義一個一維數(shù)組 numbers = new int6; / 動態(tài)初始化數(shù)組 for (int i = 0; i numbe
10、rs.Length; i+) numbersi = i * i; Console.WriteLine(numbers0=1, i, numbersi); ,例: 定義一個數(shù)組,使其元素值為對應下標值的平方,并輸出數(shù)組中的元素,使用 數(shù)組名.Length 可以獲取數(shù)組的長度,練習題:,定義一個長度為10的浮點數(shù)數(shù)組 x 進行動態(tài)或者靜態(tài)初始化 將每個元素賦值為下標的開方 Math.Sqrt(),foreach循環(huán)語句 C#專門提供了一種用于遍歷數(shù)組的foreach循環(huán)語句。 foreach循環(huán)語句的格式為: foreach(類型名稱 變量名稱 in 數(shù)組名稱)循環(huán)體 語句中的“變量名稱”是一個循
11、環(huán)變量,在循環(huán)中,該變量依次獲取數(shù)組中各元素的值。因此,對于依次獲取數(shù)組中各元素值的操作,使用這種循環(huán)語句就很方便。要注意,“變量名稱”的類型必須與數(shù)組的類型一致。,例如,假定有一個整型數(shù)組A,則用foreach語句獲取數(shù)組中和元素的值并輸出到label1控件的Text屬性中的代碼為: foreach(int i in A) label1.Text = label1.Text + i + ; foreach語句遍歷數(shù)組雖然很方便,但其功能受一定的限制,例如,如果想為數(shù)組各元素依次有規(guī)律賦值,foreach循環(huán)將無能為力。,5.1.2 多維數(shù)組,多維數(shù)組的聲明、實例化和初始化與一維數(shù)組的聲明、實
12、例化和初始化相類似。聲明多維數(shù)組時,用逗號表示維數(shù),一個逗號表示兩維數(shù)組,兩個逗號表示三維數(shù)組,以此類推。注意:在聲明數(shù)組聲明中即使沒有指定維數(shù)的實際大小,也必須使用逗號分隔各個維 例1例5 C#支持兩種類型的多維數(shù)組。第一種是矩形數(shù)組,也稱等長數(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ù)組和分配空間,訪問數(shù)組元素,使用兩個下標指定行和列,聲明二維數(shù)組與聲明一維數(shù)組格式類似,例如: c
13、har, CharArr; int, A;,數(shù)據(jù)類型 , 數(shù)組名,數(shù)組元素類型,聲明多維數(shù)組時,用逗號表示維數(shù),一個逗號表示二維數(shù)組,兩個逗號表示三維數(shù)組,依次類推。,二維數(shù)組的初始化,數(shù)組名 = new 數(shù)據(jù)類型長度1,長度2; 例: int, IntArr = new int3,2; int, A = new int2,21,2,3,4; 注意: 上面定義的數(shù)組IntArr中包含3X2=6個元素,下標分別為 0,0, 0,1, 1,0,1,1,2,0,2,1,訪問多維數(shù)組需要用多個下標唯一確定數(shù)組中某個元素,例如: / 聲明一個4行4列的二維數(shù)組 int , Ar=new int4,4;
14、Ar1,2=15; / 為第2行第3列的元素賦值 int a=Ar1,2; / 用第2行第3列的元素為其他變量賦值 也可以”行基準”給二維數(shù)組靜態(tài)賦值,但一般不用靜態(tài)賦值給超過二維的多維數(shù)組.要訪問二維數(shù)組中的所有元素可以使用雙重循環(huán)來實現(xiàn),通常外循環(huán)控制行,內循環(huán)控制列。,例:通過二重循環(huán),將1-12賦值給一個二維數(shù)組,并顯示數(shù)組內容,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(); ,練習:,定義一個4行4列的double 型數(shù)組 將數(shù)組所有元素按圖設置: 輸出該數(shù)組在對角線上的元素值,多維數(shù)組介紹,C#可以使用多維數(shù)組 3維數(shù)組的下標有三個整數(shù),4維數(shù)組的下標有4個整數(shù),依次類推 多維數(shù)組的使用和二維數(shù)組的使用方法類似,根據(jù)數(shù)組的維數(shù)確定方括號中的逗號的個數(shù) 例: 定義一個三維數(shù)組: string , , Strin
16、gArr = new string3,2,4;,數(shù)組總結,數(shù)組(array)是一種數(shù)據(jù)結構,它包含相同類型的一組數(shù)據(jù) 數(shù)組有一個“秩(rank)”,它確定和每個數(shù)組元素(element)關聯(lián)的索引個數(shù),其值是數(shù)組類型的方括號之間逗號個數(shù)加上1。數(shù)組的秩又稱為數(shù)組的維度?!爸取睘?1 的數(shù)組稱為一維數(shù)組(single-dimensional array),“秩”大于 1 的數(shù)組稱為多維數(shù)組(multi-dimensional array)。維度大小確定的多維數(shù)組通常稱為兩維數(shù)組、三維數(shù)組等 數(shù)組的每個維度都有一個關聯(lián)的長度(length),它是一個大于或等于零的整數(shù)。創(chuàng)建數(shù)組實例時,將確定維度和
17、各維度的長度,它們在該實例的整個生存期內保持不變。換而言之,對于一個已存在的數(shù)組實例,既不能更改它的維度,也不可能調整它的維度大小,數(shù)組屬性,(1)數(shù)組使用類型聲明,通過數(shù)組下標(或稱索引)來訪問數(shù)組中的數(shù)據(jù)元素。 (2)數(shù)組可以是一維數(shù)組、多維數(shù)組。 (3)數(shù)組元素可以為任何數(shù)據(jù)類型,包括數(shù)組類型。 (4)數(shù)組下標(索引)從0開始:具有 n 個元素(即維度長度為n)的數(shù)組的下標是從 0 到 n-1。 (5)數(shù)值數(shù)組元素的默認值設置為零,而引用元素的默認值設置為 null。 (6)數(shù)組中的元素總數(shù)是數(shù)組中各維度長度的乘積。 (7)通過.NET框架中的System Array類來支持數(shù)組。因此,可以利用該類的屬性與方法來操作數(shù)組,數(shù)組注意事項,數(shù)組必須先聲明:類型名稱 數(shù)組名; 數(shù)組在聲明后必須實例化才能使用: 數(shù)組名稱 =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 期貨市場品牌建設與維護服務考核試卷
- 木材加工行業(yè)人才培養(yǎng)計劃考核試卷
- 攝影器材行業(yè)市場動態(tài)監(jiān)測與競爭情報分析考核試卷
- 辦公室員工職業(yè)發(fā)展與培訓體系建設案例考核試卷
- 天然氣開采項目財務管理與成本控制考核試卷
- 固體飲料的無添加與天然成分趨勢考核試卷
- 木材貿易風險管理與防范考核試卷
- 搪瓷衛(wèi)生潔具的顧客滿意度調查考核試卷
- 放射性金屬礦選礦實驗方法與技術考核試卷
- 鋼板出售轉讓合同范本
- 2025年度科技園區(qū)委托中介代理出租管理合同
- 2025年人教版新教材英語小學三年級下冊教學計劃(含進度表)
- 軍隊文職備考(面試)近年考試真題(參考300題)
- GB/T 45083-2024再生資源分揀中心建設和管理規(guī)范
- 北京理工大學出版社二年級下冊《勞動》教案
- 相互批評意見500條【5篇】
- 中國食物成分表2018年(標準版)第6版
- 探索2-個人信息資源的防護措施-課件-蘇科版(2023)初中信息技術七年級下冊
- 醫(yī)院信息化建設匯報材料
- E204-1批發(fā)和零售業(yè)商品銷售和庫存(限上、規(guī)上企業(yè)入庫標準及材料)
- 天然氣綜合利用項目中壓燃氣管道吹掃試壓方案
評論
0/150
提交評論