您好,欢迎访问三七文档
第五章数组和集合目标数组的定义声明和操作一维和二维数组交错数组和多维数组简单的排序方法数组列表、哈希表、堆栈集合的用法体验首先产生一个包含有12个随机数的数组,然后分别计算出数组中的最大值、最小值。最后程序将显示整个随机数数组。随机数的范围是1—100之间。数组3-1数组是同一数据类型的一组值数组属于引用类型,因此存储在堆内存中数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行语法:数据类型[元素个数]数组名称;int[6]arrayHere;数组3-278(0)67(1)89(2)92(3)66(4)JoeTomLeeJimBill23.518.927.321.429.6学生分数的整数数组职员姓名的字符串数组室温的浮点数组数组位置数组3-3staticvoidMain(string[]args){intcount;Console.WriteLine(请输入您要登记的学生人数);count=int.Parse(Console.ReadLine());//声明一个存放姓名的字符串数组,其长度等于提供的学生人数string[]names=newstring[count];//用一个for循环来接受姓名for(inti=0;icount;i++){Console.WriteLine(“请输入学生{0}的姓名,i+1);names[i]=Console.ReadLine();}Console.WriteLine(已登记的学生如下:);//用foreach循环显示姓名foreach(stringdispinnames){Console.WriteLine({0},disp);}}数组声明初始化数组元素的循环显示输出的循环一维数组声明并初始化int[]array1=newint[5]{1,3,5,7,9};string[]weekDays=newstring[]{Sun,Mon,Tue,Wed,Thu,Fri,Sat};int[]array2={1,3,5,7,9};string[]weekDays2={Sun,Mon,Tue,Wed,Thu,Fri,Sat};声明一个数组变量但不将其初始化int[]array3;array3=newint[]{1,3,5,7,9};//OK//array3={1,3,5,7,9};//Error多维数组声明数组int[,]array6=newint[10,10];声明数组时将其初始化int[,]array2D=newint[,]{{1,2},{3,4},{5,6},{7,8}};int[,,]array3D=newint[,,]{{{1,2,3}},{{4,5,6}}};声明一个数组变量但先不将其初始化int[,]array5;array5=newint[,]{{1,2},{3,4},{5,6},{7,8}};//OK//array5={{1,2},{3,4},{5,6},{7,8}};//Error也可以给数组元素赋值,例如:array5[2,1]=25;交错数组3-1交错数组是数组的元素为数组的数组6235①交错数组声明int[][]jaggedArray=newint[4][];②交错数组初始化jaggedArray[0]=newint[6];jaggedArray[1]=newint[2];jaggedArray[2]=newint[3];jaggedArray[3]=newint[5];交错数组3-2例如:jaggedArray[0]=newint[]{1,3,5,7,9,13};jaggedArray[1]=newint[]{0,2,};jaggedArray[2]=newint[]{5,11,22};jaggedArray[3]=newint[]{3,5,7,10,32};还可以在声明数组时将其初始化,如:int[][]jaggedArray2=newint[][]{newint[]{1,3,5,7,9},newint[]{0,2,4,6},newint[]{11,22}};交错数组3-3访问交错数组jaggedArray3[0][1]=77;jaggedArray3[2][1]=88;数组示例usingSystem;classDeclareArraysSample{publicstaticvoidMain(){//一维数组int[]numbers=newint[5];//多维数组string[,]names=newstring[5,4];//数组的数组(交错数组)byte[][]scores=newbyte[5][];//创建交错数组for(inti=0;iscores.Length;i++){scores[i]=newbyte[i+3];}//打印每行的长度for(inti=0;iscores.Length;i++){Console.WriteLine(Lengthofrow{0}is{1},i,scores[i].Length);}}}数组排序-气泡将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。【示例】:4913131313131313384927272727272765384938383838389765384949494949769765494949494913769765656565652727769776767676//气泡排序usingSystem;namespaceBubbleSorter{publicclassBubbleSorter{publicvoidSort(int[]list){inti,j,temp;booldone=false;j=1;while((jlist.Length)&&(!done)){done=true;for(i=0;ilist.Length-j;i++){if(list[i]list[i+1]){done=false;temp=list[i];list[i]=list[i+1];list[i+1]=temp;}}j++;}}}publicclassMainClass{publicstaticvoidMain(){int[]iArrary=newint[]{1,5,13,6,10,55,99,2,87,12,34,75,33,47};BubbleSortersh=newBubbleSorter();for(intm=0;miArrary.Length;m++)Console.Write({0},iArrary[m]);Console.WriteLine();sh.Sort(iArrary);for(intm=0;miArrary.Length;m++)Console.Write({0},iArrary[m]);Console.WriteLine();}}}集合类名称说明ArrayList动态数组BitArray位数组Hashtable关键字和值的查找表Queue先进/先出(FIFO)的元素集合SortedList元素的有序列表Stack后进/先出(LIFO)的元素集合System.Collections命名空间数组列表集合-ArrayList类似一维数组数组列表是动态数组可以存放任何对象常用方法:•增加元素-Add•插入元素-Insert•删除元素-RemoveArrayList示例ArrayListmyAL=newArrayList();myAL.Add(Hello);myAL.Add(World);myAL.Add(!);Console.WriteLine(myAL);Console.WriteLine(Count:{0},myAL.Count);Console.WriteLine(Capacity:{0},myAL.Capacity);Console.Write(Values:);PrintValues(myAL);publicstaticvoidPrintValues(IEnumerablemyList){foreach(ObjectobjinmyList)Console.Write({0},obj);Console.WriteLine();}位数组集合-BitArrayBitArray集合是位值(位值是1和0)的组合体BitArray位集合是其元素为位标志的集合每一元素都是一位,而不是一个对象BitArray容量始终与计数相同提供位运算方法,例如And、Or、Xor、Not和SetAll等1001110LengthBitArrayflags=newBitArray(7)flags.Set(0,true);flags.Set(1,false);…boolIsMarry=flags.Get(3);是否结婚性别(男女)BitArray-示例usingSystem;usingSystem.Collections;publicclassSamplesBitArray{publicstaticvoidMain(){BitArraymyBA1=newBitArray(5);BitArraymyBA2=newBitArray(5);myBA1[0]=myBA1[1]=false;myBA1[2]=myBA1[3]=true;myBA2[0]=myBA2[2]=false;myBA2[1]=myBA2[3]=true;myBA2[1]=myBA2[4]=true;Console.WriteLine(初始值:);Console.Write(myBA1:);PrintValues(myBA1,8);Console.Write(myBA2:);PrintValues(myBA2,8);Console.WriteLine();Console.WriteLine(结果:);Console.Write(位与操作AND:);PrintValues(myBA1.And(myBA2),8);Console.WriteLine();Console.WriteLine(AfterAND);Console.Write(myBA1:);PrintValues(myBA1,8);Console.Write(myBA2:);PrintValues(myBA2,8);Console.WriteLine();try{BitArraymyBA3=newBitArray(8);myBA3[0]=myBA3[1]=myBA3[2]=myBA3[3]=false;myBA3[4]=myBA3[5]=myBA3[6]=myBA3[7]=true;myBA1.And(myBA3);}catch(ExceptionmyException){Console.WriteLine(Exception:+myException.Message);}}publicstaticvoidPrintValues(IEnumerablemyList,intmyWidth){inti=myWidth;foreach(ObjectobjinmyList){if(i=0){i=myWidth;Console.WriteLine();}i--;Console.Write({0,8},obj);}Console.WriteLine();}}哈希表集合-HashtableHashtable集合是键/值对的集合DictionaryEntry类型的实例,DictionaryEntry类型有一个Key和Value属性来读取和设置健和值。动态存放键/值对Hashtable示例usingSystem;usingSystem.Collections;namespaceEdu.Qhit.Code.Csharp.Array{classDictEnumInterfaceSample{staticvoidMain(string[]args){Hashtablehash=newHasht
本文标题:C# ppt
链接地址:https://www.777doc.com/doc-4005329 .html