#region 知识点一 基本概念 //二维数组 是使用两个索引来引用的数组。 //它可以看作是一个表格,有行和列。 //可以用来表示矩阵、棋盘等二维数据结构。 // #endregion #region 知识点二 声明和初始化 //1.变量类型[,] 变量名; int[,] arr1;//声明后必须初始化 //2.变量类型[,] 变量名 = new 变量类型[行数, 列数]; int[,] arr2 = new int[2, 3];//声明并初始化,默认值为0 //二维数组的行数和列数必须是常量表达式,不能是变量。 //3.变量类型[,] 变量名 = { {元素1, 元素2}, {元素3, 元素4} }; int[,] arr3 = { { 1, 2 }, { 3, 4 } };//声明并初始化 //4.变量类型[,] 变量名 = new 变量类型[行数, 列数] { {元素1, 元素2}, {元素3, 元素4} }; int[,] arr4 = new int[2, 2] { { 1, 2 }, { 3, 4 } };//声明并初始化 //5.变量类型[,] 变量名 = new 变量类型[,] { {元素1, 元素2}, {元素3, 元素4} }; int[,] arr5 = new int[,] { { 1, 2 }, { 3, 4 } };//声明并初始化 #endregion #region 知识点三 二维数组的使用 //1.二维数组的长度 Console.WriteLine("二维数组的长度"); int[,] array = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } }; //二维数组的长度可以分为行数,列数和总元素个数 //获取二维数组的第0维长度(行数) Console.WriteLine(array.GetLength(0)); //获取二维数组的第1维长度(列数) Console.WriteLine(array.GetLength(1)); #region clear Console.ReadKey(); Console.Clear(); #endregion //2.获取二维数组中的元素 Console.WriteLine("获取二维数组中的元素"); //注意:第一个元素是0行0列,最后一个元素是(行数-1)列(列数-1) Console.WriteLine(array[0, 0]);//1 Console.WriteLine(array[1, 2]);//6 #region clear Console.ReadKey(); Console.Clear(); #endregion //3.修改二维数组中的元素 Console.WriteLine("修改二维数组中的元素"); array[0, 0] = 10; Console.WriteLine(array[0, 0]);//10 #region clear Console.ReadKey(); Console.Clear(); #endregion //4.遍历二维数组 Console.WriteLine("遍历二维数组"); for (int i =0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { Console.Write(array[i, j] + "\t"); } Console.WriteLine(); } #region clear Console.ReadKey(); Console.Clear(); #endregion //5.增加数组的元素 Console.WriteLine("增加数组的元素"); //二维数组的大小是固定的,不能动态增加元素。 //如果需要增加元素,可以创建一个新的二维数组,并将原数组的元素复制到新数组中。 int newRow = array.GetLength(0) + 1; int newCol = array.GetLength(1); int[,] newArray = new int[newRow, newCol]; for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { newArray[i, j] = array[i, j]; } } array = newArray; array[2, 0] = 7; array[2, 1] = 8; array[2, 2] = 9; for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { Console.Write(array[i, j] + "\t"); } Console.WriteLine(); } #region clear Console.ReadKey(); Console.Clear(); #endregion //6.删除数组的元素 Console.WriteLine("删除数组的元素"); //二维数组的大小是固定的,不能动态删除元素。 //如果需要删除元素,可以创建一个新的二维数组,并将原数组的元素复制到新数组中,跳过要删除的元素。 newRow = array.GetLength(0)-1; newCol = array.GetLength(1); newArray = new int[newRow, newCol]; Console.WriteLine($"原数组行数{array.GetLength(0)}\t原数组列数{array.GetLength(1)}"); Console.WriteLine($"新组行数{newArray.GetLength(0)}\t新组列数{newArray.GetLength(1)}"); Console.WriteLine("打印原数组:"); for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { Console.Write(array[i, j] + "\t"); } Console.WriteLine(); } //假设删除第2行 for (int i = 0; i < newArray.GetLength(0); i++) { for (int j = 0; j < newArray.GetLength(1); j++) { newArray[i, j] = array[i, j]; } } array = newArray;//引用新数组 Console.WriteLine("打印新数组:"); for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { Console.Write(array[i, j] + "\t"); } Console.WriteLine(); } #region clear Console.ReadKey(); Console.Clear(); #endregion //7.查找数组中的元素 Console.WriteLine("查找数组中的元素"); //如果要在数组中查找某个元素,可以使用循环遍历数组,逐个比较元素值。 //找到后可以记录下标或者直接返回元素。 for (int i = 0; i < array.GetLength(0); i++) { for (int j = 0; j < array.GetLength(1); j++) { if (array[i, j] == 5) { Console.WriteLine($"找到了元素5,位置在:{i}行{j}列"); } } } #endregion