C#一维数组 二维数组 (矩阵数组)(交错数组)区别

数组:是具有相同数据类型的一组数据的集合。数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度。

一维数组:以线性方式存储固定数目的数组元素,它只需要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

交错数组和二维数组在定义和访问方式上有所不同,交错数组是由多个一维数组组成的数组,而二维数组是一个固定大小的矩阵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值