二维数组和交叉数组
一,一维数组
int[] i1 = new int[] {1,2,3,};//一维数组
int[] i2 = {1,2,3}; //一维数组
int[] i3 = new int[3]; //v
二,二维数组
1,二维数组定义
int[ , ] i4 = new int[2,4]; //代表两行四列
赋值方式
i4[0, 0] = 10;
i4[0, 1] = 20;
i4[0, 2] = 30;
i4[0, 3] = 40;
i4[1, 0] = 10;
i4[1, 1] = 20;
i4[1, 2] = 30;
i4[1, 3] = 40;
例子1,20名学生,3门成绩
Random r = new Random();
int[,] i5 = new int[20, 3];
Console.WriteLine("学号\t\t姓名\t\tDB\t\tC#\t\tVP");
for (int i = 0; i < i5.GetLength(0); i++) // 循环行数 i5.GetLength(0)获取一唯的长度
{
Console.Write((i + 1) < 10 ? "00" + (i + 1) : "0" + (i + 1));
Console.Write("\t\t鲁班7号" + "\t\t");
for (int j = 0; j < i5.GetLength(1); j++)// 循环列数
{
i5[i, j] = r.Next(0, 101); //给第几行第几列赋值
Console.Write(i5[i, j] + "\t\t");
}
Console.WriteLine("");
输出结果:

例子2;bool的二维数组 20行5列 001已售完 002有空座
bool[,] b1 = new bool[20, 5];
//给b1数组进行赋值
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 5; j++)
{
b1[i, j] = r.Next(0, 2) == 1 ? true : false;
string str = string.Format("{0:D3}{1}\t\t", i * 5 + 1 + j, b1[i, j] == true ? "有空座" : "已售完");
Console.Write(str);
}
Console.WriteLine("");
}
int num = int.Parse(Console.ReadLine()); //60
int row = (num - 1) / 5;
int colume = (num - 1) % 5;
if (b1[row, colume])
{
Console.WriteLine("有空座位");
}
else
{
Console.WriteLine("已售完");
}
注意:
如果在visual studio中运行需要调整一些设置,否则会报错 :

解决办法:
找到解决方案管理器------>右键当前项目名称 ,找到属性,调整如下内容:

将输出类型调整 ,Windows应用程序------>控制台应用程序
代码运行结果如下:

三, 交错数组
1,
与多维数组的区别
- 内存结构:交错数组的子数组独立分配,多维数组是连续内存块。
- 灵活性:交错数组的子数组长度可动态调整,多维数组每维长度固定。
- 性能:多维数组访问可能更快(缓存友好),交错数组适合不规则数据。
2,交错数组 大数组嵌套小数组
//arr = [[1,2,3],[4,5,6],[7]] //取出7 :arr[2][0]
int[][] i1 = new int[3][]; //外层数组长度3 内层数组长度不固定
//初始化定义数组元素 外层数组长度为3 内层数组元素不固定
int[][] i2 = new int[3][]
{
new int[] { 1, 2},
new int[] { 3, 4},
new int[] { 5, 6},
};
//取出元素
Console.WriteLine(i2[2][0]);
//[{},{},{}]//每个大括号代表1个对象
//动态添加元素
int[][] i3 = new int[3][];
for (int i = 0; i < i3.Length; i++)
{
int[] n1 = new int[4];//定义内层数组
for (int j = 0; j < n1.Length; j++)
{
n1[j] = j;//添加内层数组的元素
}
i3[i] = n1;//给外层数组添加元素
}
//遍历数组
for (int i = 0; i <i3.Length; i++)//遍历外层数组
{
for (int j = 0; j < i3[i].Length; j++)//遍历内层数组
{
Console.Write(i3[i][j] + "==========");
}
Console.WriteLine("");
}
//外层数组10个长度 ,内层1数组存放1 ,内层2数组存放2,3,
// 内层3数组存放456,
//内层10数组存放..... ,
int[][] i4 = new int[10][];
int num = 0;
for (int i = 0;i < i4.Length; i++)
{
int[] n2 = new int[i+1];//内层数组元素
for (int j = 0;j < n2.Length; j++)
{
num++;
n2[j] = num;
}
i4[i] = n2;
}
//遍历数组
for (int i = 0; i < i4.Length; i++)//遍历外层数组
{
for (int j = 0; j < i4[i].Length; j++)//遍历内层数组
{
Console.Write(i4[i][j]);
}
Console.WriteLine("");
}