版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第6章數(shù)組與集合6.1一維數(shù)組6.2二維數(shù)組6.3交錯數(shù)組6.4遍歷數(shù)組6.5常用集合6.6小結(jié)6.1一維數(shù)組6.1.1一維數(shù)組的創(chuàng)建及初始化一維數(shù)組的聲明與分配語句的語法形式:數(shù)據(jù)類型符[]數(shù)組名=new數(shù)據(jù)類型符[長度];或者數(shù)據(jù)類型福[]數(shù)組名;數(shù)組名=new數(shù)據(jù)類型符[長度];示例:double[]score=newdouble[300];或者形式如下。double[]score;score=newdouble[300];6.1.1一維數(shù)組的創(chuàng)建及初始化為數(shù)組元素賦初值的語法形式:數(shù)據(jù)類型符[]數(shù)組名={初值列表};或者形式如下。數(shù)據(jù)類型符[]數(shù)組名=new數(shù)據(jù)類型符[]{初值列表};示例:int[]x={1,2,3,4};int[]x=newint[]{1,2,3,4};6.1.2一維數(shù)組的簡單應(yīng)用示例:doubleaver=0.0;double[]score=newdouble[300];for(inti=0;i<300;i++)score[i]=i;for(intj=0;j<300;j++)aver=aver+score[j];aver=aver/300;6.2二維數(shù)組6.2.1二維數(shù)組的創(chuàng)建及初始化二維數(shù)組的定義與分配語法形式:數(shù)據(jù)類型符[,]數(shù)組名=new數(shù)據(jù)類型符[長度1,長度2];或者數(shù)據(jù)類型符[,]數(shù)組名;數(shù)組名=new數(shù)據(jù)類型符[長度1,長度2];示例:
int[,]a=newint[3,4];或者
int[,]a;a=newint[3,4];//為數(shù)組分配存儲空間6.2.1二維數(shù)組的創(chuàng)建及初始化為數(shù)組元素賦初值的語法形式:數(shù)據(jù)類型符[,]數(shù)組名=newint[,]{{初始列表1},{初始列表2},…,{初始列表n}};或者形式如下。數(shù)據(jù)類型符[,]數(shù)組名={{初始列表1},{初始列表2},…,{初始列表n}};示例:
int[,]a=newint[,]{{1,2},{3,4},{5,6}};
或者:
int[,]a={{1,2},{3,4},{5,6}};6.2.2二維數(shù)組的簡單應(yīng)用示例:某班有M名同學(xué),本學(xué)期開了N門課,期末考試后,要統(tǒng)計每個學(xué)生的平均分,請編寫程序代碼實現(xiàn)該功能,要求對于每個學(xué)生要輸入學(xué)號和N門課的成績。staticvoidMain(string[]args){constintM=2;constintN=2;int[,]score=newint[M,N+1];inti,j;double[]aver=newdouble[M];for(i=0;i<M;i++){Console.WriteLine("請輸入第{0}個人的學(xué)號和成績:",i+1);score[i,0]=Convert.ToInt32(Console.ReadLine());for(j=1;j<=N;j++)score[i,j]=Convert.ToInt32(Console.ReadLine());}6.2.2二維數(shù)組的簡單應(yīng)用接上頁for(i=0;i<M;i++){aver[i]=0;for(j=1;j<=N;j++)aver[i]=aver[i]+score[i,j];
aver[i]=aver[i]/N;
}for(i=0;i<M;i++){Console.WriteLine();for(j=0;j<=N;j++)Console.Write("{0}",score[i,j]);Console.Write("{0}",aver[i]);}Console.Read();}6.3交錯數(shù)組交錯數(shù)組也屬于多維數(shù)組,只是其每行的列數(shù)均不同。交錯數(shù)組的定義一般分為兩步,以二維數(shù)組為例。首先定義二維數(shù)組占用的行數(shù),并分配行,然后定義每一個行數(shù)組,并分配空間。6.3.1交錯數(shù)組的創(chuàng)建及初始化分配行:數(shù)據(jù)類型符[][]數(shù)組名=new數(shù)據(jù)類型符[行數(shù)][];示例:int[][]b=newint[3][];//定義具有3行的交錯數(shù)組各行數(shù)組元素個數(shù)的分配:數(shù)組名[i]=new數(shù)據(jù)類型符[長度];示例:
b[0]=newint[2]; //首行具有兩個元素
b[1]=newint[3]; //第二行具有3個元素
b[2]=newint[4]; //第三具有有4個元素6.3.1交錯數(shù)組的創(chuàng)建及初始化交錯數(shù)組可以在聲明時進行初始化。示例:int[][]a=newint[][]{newint[]{1,2},newint[]{3,4,5},newint[]{6,7,8,9}};或者:
int[][]a={newint[]{1,2},newint[]{3,4,5},newint[]{6,7,8,9}};6.3.2交錯數(shù)組的簡單應(yīng)用示例:編程輸出楊輝三角的前五行。楊輝三角的前五行值如下。1111211331146416.3.2交錯數(shù)組的簡單應(yīng)用staticvoidMain(string[]args){constintM=5;int[][]yhsj=newint[M][];inti,j;for(i=0;i<5;i++)yhsj[i]=newint[i+1];for(i=0;i<M;i++){yhsj[i][0]=1;yhsj[i][i]=1;}for(i=2;i<5;i++)for(j=1;j<i;j++)yhsj[i][j]=yhsj[i-1][j-1]+yhsj[i-1][j];
for(i=0;i<M;i++){Console.WriteLine();for(j=0;j<=i;j++)Console.Write("{0}",yhsj[i][j]);}}6.4遍歷數(shù)組6.4.1使用for循環(huán)遍歷在遍歷數(shù)組時,最常用的3種方式就是使用Array類提供的Length屬性、GetUpperBound方法和GetLength方法。遍歷一維數(shù)組示例:int[]a={1,2,3,4,5,6};for(inti=0;i<a.Length;i++)Console.Write("{0,-4}",a[i]);Console.Read();6.4.1使用for循環(huán)遍歷示例:通過GetUpperBound方法獲取數(shù)組的最高下標(biāo)。int[]a={1,2,3,4,5,6};for(inti=0;i<a.GetUpperBound(0)+1;i++)Console.Write("{0,-4}",a[i]);Console.Read();6.4.1使用for循環(huán)遍歷遍歷二維數(shù)組示例:int[,]a={{1,2,3},{4,5,6}};intn=a.Length;Console.WriteLine("一共有{0}個元素!",n);for(inti=0;i<a.GetLength(0);i++){Console.WriteLine();for(intj=0;j<a.GetLength(1);j++)Console.Write("{0,-4}",a[i,j]);}Console.Read();6.4.1使用for循環(huán)遍歷遍歷交錯數(shù)組示例:int[][]a=newint[2][];a[0]=newint[]{1,2,3};a[1]=newint[]{4,5};intn=a.Length;Console.WriteLine("一共有{0}個元素!",n);for(inti=0;i<a.Length;i++){Console.WriteLine();for(intj=0;j<a[i].Length;j++)Console.Write("{0,-4}",a[i][j]);}Console.Read();6.4.2使用foreach遍歷一維數(shù)組示例:int[]numbers={4,5,6,1,2,3,-1,-2,0};foreach(intiinnumbers){Console.WriteLine(i);}6.4.2使用foreach遍歷二維數(shù)組示例:int[,]numbers=newint[3,2]{{4,44},{5,55},{6,66}};foreach(intiinnumbers){Console.Write("{0,-3}",i);}Console.Read();6.5常用集合6.5.1ArrayList類ArrayList是一個集合,使用方法與Array類似,但Array是數(shù)組,有維數(shù)且大小固定,而ArrayList沒有維數(shù),大小不固定,故ArrayList又稱為動態(tài)數(shù)組。常用屬性:Count:獲取動態(tài)數(shù)組中實際所包含的元素數(shù)Item:獲取或設(shè)置指定索引處的元素Capacity:獲取動態(tài)數(shù)組的容量大小6.5.1ArrayList類常用方法:Add、Remove、RemoveAt、Clear、Insert、IndexOf、Reverse、Sort、ToArray、Contains。示例:
ArrayListli=newArrayList(8);注意,這里的8指容量,容量與元素的個數(shù)是兩個完全不同的概念,集合中的元素個數(shù)通過屬性Count獲取,而容量則是通過Capacity屬性獲取。容量總是大于或等于元素的個數(shù)。6.5.1ArrayList類示例:staticvoidMain(string[]args){ArrayListLi=newArrayList(2);Console.WriteLine("Li中的元素的個數(shù)為{0}",Li.Count);Console.WriteLine("Li中的容量為{0}",Li.Capacity);int[]arr=newint[10];Console.WriteLine("arr中的元素的個數(shù)為{0}",arr.Length);Console.Read();}添加元素Add方法,添加元素,自動添加到列表的末尾。示例:staticvoidMain(string[]args){ArrayListLi=newArrayList();Li.Add('a');Li.Add("nihao");Li.Add(1);for(inti=0;i<Li.Count;i++)Console.Write("{0,-4}",Li[i]);Console.Read();}插入元素ArrayList提供了一個用于插入操作的方法Insert,該函數(shù)的語法形式如下:
publicvoidInsert(intindex,Objectvalue)示例:ArrayListLi=newArrayList();string[]arr=newstring[]{"wo","men","shi","peng","you"};Li.Add('a');Li.Add("nihao");Li.Add(1);Li.AddRange(arr);Li.Add("21");Console.WriteLine(Li.Count);Console.WriteLine(Li.Capacity);Console.WriteLine("排序前的順序為:");插入元素代碼接上頁for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();}Li.Insert(0,"hehe");Console.WriteLine();Console.WriteLine("插入后的順序為:");for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();}Console.Read();刪除元素對于ArrayList類的實例不再需要的元素,可以通過Remove和RemoveAt刪除。示例:staticvoidMain(string[]args){ArrayListLi=newArrayList();string[]arr=newstring[]{"wo","men","shi","peng","nihao"};Li.Add('a');Li.Add("nihao");Li.Add(1);Li.AddRange(arr);Li.Add(21);Console.WriteLine("排序前的順序為:");刪除元素代碼接上頁for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();}Li.Remove("nihao");Console.WriteLine();Console.WriteLine("排序后的順序為:");for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();} Console.Read();}元素的排序Sort方法用于排序。示例:staticvoidMain(string[]args){ArrayListLi=newArrayList();string[]arr=newstring[]{"wo","men","shi","peng","you"};Li.Add("a");Li.Add("nihao");Li.Add("1");Li.AddRange(arr);Li.Add("21");Console.WriteLine("排序前的順序為:");元素排序代碼接上頁
for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();}Li.Sort();Console.WriteLine();Console.WriteLine("排序后的順序為:");for(inti=0;i<Li.Count;i++){Console.Write("{0,-8}",Li[i]);if((i+1)%5==0)Console.WriteLine();}Console.Read();}6.5.2哈希表哈希表是按照鏈表的形式進行存儲的,不需要順序排列,而ArrayList類是按照順序進行排列的。對于鏈表存儲的結(jié)構(gòu),需要通過索引進行訪問。常用屬性:Count,Keys,Values。常用方法:Add、Remove、Clear、ContainKey、ContainValue6.5.2哈希表示例:staticvoidMain(string[]args){Hashtableht=newHashtable();ht.Add("001","number");ht.Add("002","grade");ht.Add("003","name");Console.WriteLine("輸出ht的鍵/值的對數(shù)為:{0}",ht.Count);Console.WriteLine("請輸入要查找的鍵:");stringa=Console.ReadLine();if(ht.ContainKey(a))Console.WriteLine("找到鍵{0}所對應(yīng)的值{1}",a,ht[a]);elseConsole.WriteLine("在ht中沒有找到要查找的鍵{0}",a);ht.Remove("003");6.5.2哈希表代碼接上頁staticvoidMain(string[]args){Hashtableht=newHashtable();ht.Add("001","number");ht.Add("002","grade");ht.Add("003","name");Console.WriteLine("輸出ht的鍵/值的對數(shù)為:{0}",ht.Count);Console.WriteLine("請輸入要查找的鍵:");stringa=Console.ReadLine();if(ht.ContainKey(a))Console.WriteLine("找到鍵{0}所對應(yīng)的值{1}",a,ht[a]);elseConsole.WriteLine("在ht中沒有找到要查找的鍵{0}",a);ht.Remove("003");遍歷哈希表遍歷哈希表通過foreach語句來實現(xiàn),有兩種方式。一種是使用DictionaryEntry結(jié)構(gòu)體訪問Hashtable中的元素;另一種就是使用普通的類型作為只讀變量,通過鍵的下標(biāo)來訪問。遍歷哈希表使用DirectonaryEntry遍歷哈希表示例:staticvoidMain(string[]args){Hashtableht=newHashtable();ht.Add("001","number");ht.Add("002","grade");ht.Add("003","name");ht.Add("004","age");ht.Add("005","sex");Console.WriteLine("輸出ht的鍵/值的對數(shù)為:{0}",ht.Count);foreach(DictionaryEntrydeinht){Console.Write("{0,-4}",de.Key);Console.Write("{0,-4}",de.Value);Console.WriteLine();
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 名師工作室成員個人工作總結(jié)
- 水庫大壩安全監(jiān)測管理系統(tǒng)建設(shè)方案
- 2025年幼兒教師招聘考試真題試卷含答案
- 2025數(shù)字化技術(shù)繼續(xù)教育公需課題庫(參考答案)
- 2025年中學(xué)教師資格證《綜合素質(zhì)》考試真題及答案(完整版)
- 2025年針灸科工作總結(jié)及計劃
- 坡屋面掛瓦合成樹脂瓦技術(shù)交底
- 求職服務(wù)員面試技巧
- 建設(shè)工程施工合同糾紛要素式起訴狀模板填寫靈活便捷
- 2026校招:重慶對外經(jīng)貿(mào)集團筆試題及答案
- DBJ04∕T 398-2019 電動汽車充電基礎(chǔ)設(shè)施技術(shù)標(biāo)準(zhǔn)
- 供應(yīng)鏈管理工作計劃與目標(biāo)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 湖北省荊州市八縣市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- GB/T 15231-2023玻璃纖維增強水泥性能試驗方法
- ESC2023年心臟起搏器和心臟再同步治療指南解讀
- 五年級上冊道德與法治期末測試卷推薦
- 超額利潤激勵
- GB/T 2624.1-2006用安裝在圓形截面管道中的差壓裝置測量滿管流體流量第1部分:一般原理和要求
- 蘭渝鐵路指導(dǎo)性施工組織設(shè)計
- CJJ82-2019-園林綠化工程施工及驗收規(guī)范
評論
0/150
提交評論