using System; using System.Collections.Generic; using System.Text; namespace V3._维数组的声明 { class Program { static void Main(string[] args) { /*-------------------------------------- 申明 --------------------------------------*/ int[] myintArray ={ 0,1,2,3,4,5,6,7,8,9};//初始化 用于已经变量内容声明 //用于未知数组各元素值的一个声明,指定长度 string[] mystringArray; mystringArray = new string[3] ; //元素 const int a = 3; //申明常量值 string[] NameArray = new string[a] { "张三", "李四", "王五" }; /*-------------------------------------- 使用 --------------------------------------*/ //使用数组中的元素是通过索引值来实现的 Console.WriteLine("1.使用数组中的元素是通过索引值来实现的"); Console.WriteLine(NameArray[0]); //数组元素重新赋值 Console.WriteLine("2.数组元素重新赋值"); NameArray[0] = "李六"; //遍历元素 Console.WriteLine("3.数组元素遍历元素 for "); for (int i = 0; i < NameArray.Length; i++) { Console.WriteLine(NameArray[i]); } Console.WriteLine("4.数组元素遍历元素 foreach"); foreach (string name in NameArray) { Console.WriteLine(name); }; /*-------------------------------------- 二维数组 --------------------------------------*/ //二维数组声明 string[,] Friend; //初始化第一种方法: 指定字面值,适用于已知元素内容 string[,] Friend2 ={ { "张三", "男" }, { "李四", "女" }, { "王五", "男" }, { "赵六", "未知" }, { "李七", "女" } }; //初始化第二种方法: new关键字,适用于元素内容未知 string[,] Friend3 = new string[5, 2]; //5行2列 //0,0 0,1 //1,0 1,1 //2,0 2,1 //3,0 3,1 //二维数组输出 Console.WriteLine("--------------------------------------------------------------------------------------------"); Console.WriteLine("5.二维数组输出"); string[,] Friend5= new string[5, 2] { { "张三", "男" }, { "李四", "女" }, { "王五", "男" }, { "赵六", "未知" }, { "李七", "女" } }; for (int i = 0; i < 5; i++) { for (int j = 0; j < 2; j++) { Console.Write(Friend5[i, j] + "\t"); } Console.WriteLine(""); } Console.WriteLine(""); Console.WriteLine(Friend5.GetUpperBound(0)); //该数组维度的 上线 Console.WriteLine(Friend5.GetLowerBound(0)); //该数组维度的 下线 //三维数组 //可以将 [3,2,2] 理解为3个二维数组,这个二维数组由2行2列构成 //有几层{}嵌套,那就是一个几维数组 string[, ,] Friend4 = new string[3, 2, 2] { { { "0,0,0", "0,0,1" }, { "0,1,0", "0,1,1" } }, { { "1,0,0", "1,0,1" }, { "1,1,0", "1,1,1" } }, { { "2,0,0", "2,0,1" }, { "2,1,0", "2,1,1" } } }; Console.WriteLine("--------------------------------------------------------------------------------------------"); Console.WriteLine("6.三维数组输出"); for (int q = 0; q < 3; q++) { for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { Console.Write(Friend4[q, i, j] + "\t"); } } Console.WriteLine("*******组*******"); } Console.WriteLine(Friend4.Length); //数组包含元素的个数 Console.WriteLine(Friend4.GetUpperBound(0)); //该数组维度的 上线 Console.WriteLine(Friend4.GetLowerBound(0)); //该数组维度的 下线 Console.WriteLine(Friend4.GetUpperBound(1)); //该数组维度的 上线 Console.WriteLine(Friend4.GetLowerBound(1)); //该数组维度的 下线 Console.WriteLine(Friend4.GetUpperBound(2)); //该数组维度的 上线 Console.WriteLine(Friend4.GetLowerBound(2)); //该数组维度的 下线 //查看 3维数组 第二组 1行1列 Console.WriteLine("查看 3维数组 第二组 1行1列"); Console.WriteLine(Friend4[2,1,1] ); Console.WriteLine(Friend4.GetValue (2,1,1)); //查找数组元素 Console.WriteLine("--------------------------------------------------------------------------------------------"); Console.WriteLine("7.查找数组元素"); int[] myintArray1 ={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,13,1,2,3,4,5,6 }; //想要查找是否存在某个元素 //IndexOf 可以查找元素首次出现的位置 //LastIndexOf 可以查找元素最后一次出现的位置,位置都是以从0开始索引的值 //IndexOf LastIndexOf 都返回一个索引值,为整型 int //IndexOf(参数1,参数2);参数1是我们要查找的数据 参数2是查找的元素 //用来判断某个数组是否存在某个元素,存在返回>=0索引值,不存在返回-1 int intresult; intresult = Array.IndexOf(myintArray1, 8); Console.WriteLine("第一次出现的索引值是{0},最后一次出现的索引值是{1}", Array.IndexOf(myintArray1,6), Array.LastIndexOf(myintArray1, 6)); //BinarySearch(参数1,参数2);参数1是我们要查找的数据 参数2是查找的元素 不存在返回负值,速度比IndexOf块 int intresult2 = Array.BinarySearch(myintArray1,20); Console.WriteLine("用BinarySearch,查找的索引值:" + intresult2); //Array 的 Contains 的方法 实际是对IList接口方法的实现,因此使用之前需要将数组转换为该对象 // 转换格式:(System.Collections.Ilist)myintArray.Contains(8); //该数组是否包含 8 //返回一个布尔值 bool mybool; mybool = ((System.Collections.IList)myintArray1).Contains(22); if (mybool) { Console.WriteLine("存在该元素"); } else { Console.WriteLine("不存在该元素"); } //数组排序 Console.WriteLine("--------------------------------------------------------------------------------------------"); Console.WriteLine("8.数组排序"); //Array中提供了 Sort Reverse 进行操作 //Array.Sort(数组); //Array.Reverse(数组); int[] myintArray2 ={ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6 }; Console.WriteLine("数组原数组"); foreach (int i in myintArray2) { Console.Write(i + "\t"); } //利用Sort实现升序排序 Array.Sort(myintArray2); Console.WriteLine("\n数组排序实现升序后是"); foreach (int i in myintArray2) { Console.Write(i+"\t"); } //利用Reverse实现降序排序 Array.Reverse(myintArray2); Console.WriteLine("\n数组排序实现升序后是"); foreach (int i in myintArray2) { Console.Write(i + "\t"); } //数组的合并拆分 Console.WriteLine("--------------------------------------------------------------------------------------------"); Console.WriteLine("10.数组的合并拆分"); //Array提供了copy方法,通过该方法可实现数组的合并和拆分, //使用格式: Copy方法有四个重载 //1.Array.Copy(数组1,数组2,长度); int //2.Array.Copy(数组1,数组2,Int64); long //3.Array.Copy(数组1,指定索引,数组2,指定索引,长度); int //4.Array.Copy(数组1,指定索引,数组2,指定索引,长度); long int[] num1 ={0,1,2,3,4,5,6,7,8 }; int[] num2 ={ 10,11,12,13,14,15,16,17,18,19}; Console.WriteLine("使用第一种重载"); int[] resultnum3 = new int[20]; Array.Copy(num1, resultnum3, 7); //表示将 num1中的数组元素从索引值0开始 取7个长度放入到 resultnum3中 ,resultnum3 中从索引值0开始 foreach (int i in resultnum3) { Console.Write(i + "\t"); } Console.WriteLine("使用第二种重载"); int[] resultnum4= new int[20]; Array.Copy(num2, 0, resultnum4, 5, 10); //从 num2索引值从0开始取10个长度,放入到resultNum4 中并从索引5开始存放 foreach (int i in resultnum4) { Console.Write(i + "\t"); } Console.ReadKey(); } } } |
|