171 lines
4.9 KiB
C#
171 lines
4.9 KiB
C#
|
|
#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
|