C#--数组

数组概述、一维数组

数组概述

• 数组是按顺序排列的一组相同类型变量的集合。

• 每个数组用一个数组名标识,数组中每个变量可通过数组名及该变量的下标引 用。

• 数组中的变量又称为数组元素,变量的下标又称为索引号或位置序号。

• 具有n个元素的数组其下标范围是从0到n-1。

• 数组用于存放多个相同类型的数据,其中元素的类型可以是任何值类型(如简 单类型、枚举、结构),也可以是引用类型(如String、数组、类)。

• 在C#中,数组属于引用类型,它继承.NET类库中名为System.Array的公共基类。

• 通过数组名直接使用Array类中的Length属性以获得数组中元素的总数;使用 Rank属性可以获得数组的维数;使用GetLength方法可以获得数组中某个维的 长度。

• 数组也遵从先定义后使用的原则,根据需要可定义一维数组、多维数组或交错 数组。

一维数组

一、声明和创建一维数组

1. 格式一,先声明数组,后创建数组,并使用系统默认的初始化值。

数组类型[] 数组名; //声明一维数组

数组名=new 数组类型[数组长度]; //创建数组

例如:定义含有5个元素的整型数组array1

int[] array1;

array1 = new int[5];

5个元素分别为:array1[0]、 array1[1]、 array1[2]、 array1[3]、 array1[4] 

2. 格式二,声明并创建数组。

数组类型[] 数组名= new 数组类型[数组长度];

例如:创建含有5个元素的一维整型数组array1

int[] array1= new int[5];

3. 格式三,创建数组并对数组初始化

类型[] 数组名= new 数组类型[长度]{初始值列表};

其中,初始值列表为用逗号分隔的各初始元素值

4. 格式四,创建数组长度为变量表达式的数组。

例如:创建n个元素的一维字符串数组str。n从键盘输入。

int n=Convert.ToInt32(Console.ReadLine());

string[] str=new string[n]; //创建n个元素的一维数组

其中,str数组元素类型为字符串(它是一个引用变量,每个元素可引用 一个字符串),系统提供的默认初值为null。

二. 一维数组元素的访问

1. 数组元素的引用形式:

数组名[下标]

其中:下标为整型常数、整型变量或整数表达式。

2. 使用循环语句访问数组元素

例如:反序输出数组元素值。

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

for(int i=array1.Length-1;i>=0;i--)

{ Console.Write("{0} ",array1[i]); }

输出结果:5 4 3 2 1  

foreach语句

foreach是C#语言新增的一个循环语句,用于循环访问数组或集合中的元素。

格式:

其中: foreach语句中类型和变量名必须同时出现,并且变量名的类型与数组类型一致。

foreach的执行过程:

• 首先,让变量获取数组或集合中的第一个元素,每执行一次循环体,该变量将 顺序获取下一个元素,直到数组或集合中的所有元素被访问。

• 当最后一个元素访问后,控制将传递给 foreach 块之后的下一个语句。

• 另外,可以在 foreach 块中使用break跳出循环,或使用continue进入下一次 循环。

例:利用foreach输出数组中每一个元素

数组的参数传递 

 1. 数组(名)作实参时,方法中通过形参数组可以改变实参数组的值 (与C语言相同)。

• 因为,在C#中,数组属于引用类型,数组作实参传入方法形参的是该数 组的引用(即该数组在内存中的地址),在方法中利用形参操作的数组 其实就是实参数组本身,因而在方法中可以更改实参数组的值。

• 例5-5 数组作参数,对数组进行逆置操作。

• (程序结构:一个类中多个静态方法的应用)

2. 数组元素作实参时,方法中不可以改变该元素的值。

• 因为数组元素作实参传入方法形参的是该元素值的副本,方法中可以 改变副本的值,但不可以改变实参元素本身。

• 例5-6 数组元素作参数,不能实现对数组的逆置操作。

多维数组

一. 多维数组的使用

二维数组即数组的维数为2,二维数组可以表示矩阵。

格式1:声明并创建二维数组,并初始化为系统的默认值

数组类型 [,] 数组名;

数组名=new 数组类型[m,n];

或 数组类型 [,] 数组名=new数组类型[m,n];

其中,m,n可以是常量或变量表达式。 

例如,声明并创建一个四行两列的二维数组。

int[ , ] array2;

arra2= new int[4, 2];

或 int[ , ] array2 = new int[4, 2];

其中:array2数组包含4×2共8个元素,元素的初始值默认为0。

注意:C#中二维数组类型的标志, “数组类型[,]” ,不是C/C++中的 “数组名[][]” 。

二维数组即数组的维数为2,二维数组可以表示矩阵。

格式2:创建二维数组,并提供初始化值。

数组类型 [,] 数组名=new数组类型[,]{{...},{...},...,{...}};

或 数组类型 [,] 数组名=[,]{{...},{...},...,{...}};

例:声明并创建一个三维数组

二.交错数组

是指数组元素为数组的数组。

交错数组中每个元素所表示的数组其长度可以不同。

例如:声明并创建一个由三个元素组成的一维数组,其中每个元素都是一个一维整数 数组,且第一个数组元素有5个元素,第二个数组元素有4个元素,第三个数组元素有 2个元素。 int[][] jagArray = new int[3][]; //交错数组声明

jagArray[0] = new int[5];

jagArray[1] = new int[4];

jagArray[2] = new int[2]; 

声明交错数组并进行初始化操作,可省略数组的长度

例如: int[][] jagArray = new int[3][]; //交错数组声明

jagArray[0] = new int[] { 1, 3, 5, 7, 9 };

jagArray[1] = new int[] { 0, 2, 4, 6 };

jagArray[2] = new int[] { 11, 22 };

或 int[][] jagArray = new int[][] { new int[] {1,3,5,7,9}, new int[] {0,2,4,6}, new int[] {11,22} };

编写一个程序,实现矩阵加法运算

利用交错数组生成如下杨辉三角

变长实参表

• 形参为参数数组(即使用params修饰),对应的实参不仅可以使用一 个数组,也可以是同类型的任意多个数据值,即为变长实参表。

• 方法中的“参数数组”形参只能有一个,且只适合一维数组(包括交 错数组)。

• 参数数组必须作为方法参数表中得最后一个参数。 

利用变长实参表,计算数组的平均值

使用命令行实参

• 与C/C++一样,在C#中Main方法也能接受命令行实参(即由命令行提供 的参数)。

这时,Main方法须带有string[]类型的形参(即字符串数组), 用于存放各实参字符串。

其中命令行中各实参之间用空格分隔。

• 与C/C++不同的是,在C#中并不将执行的程序名称(即命令名)视为第一 个命令行实参。 

访问来自命令行的实参

洗牌与发牌模拟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值