数组:是具有相同数据类型的一组数据的集合。数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度。
一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素
1.格式:数组类型 [ ] 数组名称;
[ ] 指定数组的秩(维度),秩指定数组的大小。
2.数据类型可以为任意数据类型
3.数据访问之前必须初始化
4.初始化方式有两种:
有指定长度限制初始化 如超出或减少你的指定长度会语法报错
int i2=new int[4]{10,30,55,66};
无chan
int i1=new int[]{1,2,3,4,5,6,7,8,9};
遍历元素:数组中遍历元素,即对数组中所有元素都按次序访问且仅一次
1.for循环,foreach循环
2.数组索引从0开始,所以访问数组的最后一个人元素应该为n-1
3.遍历数组时避免越界
4.一维数组遍历时应该尽量使用foreach语句,因为foreach会自动检查数组的索引,使其不会出现越界值。
练习:编写一个C#程序,计算数组中所有元素的乘积。
int[] s = { 3,3,5,6};
Console.WriteLine(Sum(s));
public static int Sum(int[] a)
{
int re = 1;
foreach (int i in a)
{
re *= i;
}
return re;
}
//运行结果返回270
Console.WriteLine("西游记师徒四人分别是谁:");//提示信息
//定义数组,存储西游记师徒四人
string[] roles = { "唐三藏", "孙悟空", "猪八戒", "沙僧" };
foreach (string role in roles)//遍历数组
{
Console.Write(role + " ");//输出遍历到的元素
}
二维数组(矩阵数组):多维数组最简单的形式,一个二维数组可以被看做是一个带有x行和y行列的表格。
二维数组是一种数据结构,它可以存储数据在一个表格中,这个表格由行和列组成。在编程语言中,二维数组通常用来表示矩阵、表格或任何需要行列结构的数据
1.格式:数据类型[ , ] <数组名称>
2.初始化同样有两种:
int arr[3][4]定义了一个包含3行4列的整型二维数组。在内存中,这些数据是连续存储的,通常按行优先的顺序排列。这意味着第一行的元素先存储,然后是第二行的元素,以此类推。
int [,]arr =new int[3,4] {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
这段代码创建了一个3行4列的数组,并为每个元素赋了初值。如果某些元素没有明确的初始值,它们将自动初始化为0。
要访问二维数组中的元素,需要使用行索引和列索引。例如,arr[0][1]访问的是数组的第一行第二列的元素。在C语言中,数组的索引是从0开始的。
//定义二维数组 给二维数组for循环赋值
//20行 4列的数据
byte[,] data = new byte[20, 4];
Random r= new Random();
Console.WriteLine("学号\t高数\tc语言\t英语");
// getlength(0)第几位的长度 20
//getlength(1)4
for(int i = 0; i <data.GetLength(0); i++)//控制20行
{
//控制学号
Console.WriteLine(i);
for(int j = 1; j < data.GetLength(1); j++)//学号 Console.WriteLine(i); 剩余3
{
data[i,j]= (byte)r.Next(101);
Console.Write("\t" + data[i,j]);//列之间不用换行
}
Console.WriteLine(); //4列结束之后换行;
交错数组
交错数组(Jagged Array)是一个数组,其元素是数组,大小可能不同。交错数组有时称为“数组的数组”。在C#中,交错数组的元素是引用类型,初始化为null。必须先初始化交错数组的元素,然后才能使用它们。每个元素本身都是数组,可以使用初始值设定项填充数组元素的值
交错数组的声明和初始化方式如下:
// 声明一个交错数组
int [][] jaggedArray;
// 初始化交错数组
jaggedArray = new int[3][];
jaggedArray[0] = new int[2] { 1, 2 };
jaggedArray[1] = new int[3] { 3, 4, 5 };
jaggedArray[2] = new int[4] { 6, 7, 8, 9 };
交错数组的访问方式与普通的多维数组略有不同。我们可以使用两个索引来访问交错数组的元素,第一个索引用于访问一维数组,第二个索引用于访问一维数组中的元素。例如
int value = jaggedArray[1][2]; // 访问第2个一维数组中的第3个元素,即值为5
int[][] i4 = new int[3][]
{
new int[] {1,2,3,4,5,6,7 },//数组元素1,索引值0
new int[]{1,2,3,4,5,6,7},
new int[]{1,2,3,3,4,5,6,7},
};
//动态添加元素
int[][] i5 = new int[3][];
for (int i = 0; i < i5.Length; i++)
{
int[]innerArr=new int[4];//内层数组
for (int j = 0; j < 4; j++)
{
// j=0 1 2 3
innerArr[j] = j;//内层元素添加了 0 1 2 3
}
i5[i]= innerArr;//内层数组添加到外层数组中
}
练习:大数组为10小数组长度不定 第一个数组元素放1 第二个放2 3 第三个放 4 5 6 以此类推 到10
int num = 0;
int[][]i6 = new int[10][];
{
for (int i = 0;i < i6.Length; i++)
{
int[]innerArrs=new int[i+1];
for (int j = 0;j < innerArrs.Length ; j++)
{
num++;
innerArrs[j] = num;
}
i6[i]= innerArrs;
}
for (int i = 0; i < i6.Length; i++)
{
for (int j = 0; j < i6[i].Length; j++)
{
Console.Write(i6[i][j]+"\t");
}
Console.WriteLine("");
}
}
交错数组和二维数组在概念上是不同的。交错数组是由多个一维数组组成的数组,每个一维数组的长度可以不同。换句话说,交错数组是一个数组的数组。可以将其看作是一个表格,其中每一行都是一个独立的一维数组2。
二维数组是一个由固定大小的行和列组成的数组,每个元素都可以通过行索引和列索引进行访问。二维数组可以看作是一个矩阵或者一个表格
交错数组的示例:
int [][] jaggedArray = new int[3][];
jaggedArray[0] = new int[] { 1, 2, 3 };
jaggedArray[1] = new int[] { 4, 5 };
jaggedArray[2] = new int[] { 6, 7, 8, 9 };
// 访问交错数组的元素
Console.WriteLine(jaggedArray[0][1]); // 输出 2
Console.WriteLine(jaggedArray[1][0]); // 输出 4
Console.WriteLine(jaggedArray[2][3]); // 输出 9
二维数组的示例:
int [,] multidimensionalArray = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
// 访问二维数组的元素
Console.WriteLine(multidimensionalArray[0, 1]); // 输出 2
Console.WriteLine(multidimensionalArray[1, 0]); // 输出 3
Console.WriteLine(multidimensionalArray[2, 1]); // 输出 6
交错数组和二维数组在定义和访问方式上有所不同,交错数组是由多个一维数组组成的数组,而二维数组是一个固定大小的矩阵