任务二 多维数组
知识点
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循环实现(外层行、内层列) - 多维数组:根据维数指定循环的层数