跳到主要内容

任务二 多维数组

知识点​

1.什么是多维数组?​

前面介绍的一维数组只有一个下标,其数组元素称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C#语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置。

多维数组是指可以用多个下标访问的数组,声明时方括号内加逗号,有n个逗号就是n+1维数组。

2.二维数组的声明语法是什么?​

type[,] arrayName
  • type:数组存储数据的数据类型
  • arrayName:数组名称
  • 逗号数量:n个逗号表示n+1维数组

例如,声明一个4行3列的整型二维数组:

int[,] arr = new int[4, 3];

3.二维数组的存储结构是怎样的?​

表6-1 二维数组的存储结构(4行3列)

数组索引列0列1列2
行0[0,0][0,1][0,2]
行1[1,0][1,1][1,2]
行2[2,0][2,1][2,2]
行3[3,0][3,1][3,2]

4.什么是不规则数组(锯齿数组)?​

C#中支持不规则的数组,在二维数组中,不同行的元素个数可以不相同:

int[][] a = new int[3][]; //只指定行数,不指定列数
a[0] = new int[5]; //第一行分配5个元素
a[1] = new int[3]; //第二行分配3个元素
a[2] = new int[4]; //第三行分配4个元素

表6-2 不规则二维数组的存储结构

a[3][] → a[0] → □ □ □ □ □ (5个元素)
a[1] → □ □ □ (3个元素)
a[2] → □ □ □ □ (4个元素)

注意:规则数组使用 type[,] 声明,不规则数组使用 type[][] 声明。

5.二维数组有哪几种初始化方式?​

方式一:通过 new 运算符创建,元素初始化为默认值

int[,] arr = new int[3, 2]; //3行2列,每个元素初始化为0

方式二:声明时初始化为用户自定义的值

int[,] arr = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };

注意:数组大小必须与大括号中的元素个数相匹配,否则会产生编译错误。

6.如何遍历二维数组?​

使用双层 for 循环遍历二维数组,外层循环遍历行,内层循环遍历列:

static void Main(string[] args)
{
int[,] id = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; //3行2列
for (int i = 0; i < 3; i++) //遍历行数
{
for (int j = 0; j < 2; j++) //遍历列数
{
Console.Write(id[i, j]);
}
Console.WriteLine(); //换行输出
}
Console.ReadLine();
}

运行结果:

12
34
56

7.数组的输入输出规律是什么?​

数组的输入与输出指的是对不同维数的数组进行输入和输出的操作:

  • 一维数组:用单层 for 循环实现
  • 二维数组:用双层 for 循环实现(外层行、内层列)
  • 多维数组:根据维数指定循环的层数