(教学思路 C#数组三)数组的常用方法例题,复习数组

本节我们通过数组的常用方法对数组进行操作,同时留几道数组的练习题复习数组。

数组的常用方法

上一节我提到了方法就是 对象所具有的功能,一般是动词,比如抹布清除灰尘,清除就是它的功能,同样数组也有各种功能方法,比如清空、查找、排序等,这三个方 法是本节的学习重点,我会逐一讲解。首先,我们来学习一下

数组的清空Array.Clear(Arrayname, int index, int  length);

(操作的数组名,起始索引,清除元素的长度)

看下面的例子

int[] arr = new int[] {1,2,3,4,5};
foreach (int i in arr)
{
Console.WriteLine(i);
}
Array.Clear(arr, 1, 2); 
Console.WriteLine (“从1号索引开始清除2个元素后的数组长度"+arr .Length );
foreach (int i in arr)
{
Console.Write(i+" ");
}

提问:同学们想一下结果输出是什么样子的?结果是:从1号索引开始清除2个元 素后的数组长度5

1 0 0 4 5. 

而不是1 4 5。原因是什么呢?这是由于数组的特性,数组的大小一旦初始化了就已经确 定了,因此数组元素的清空只是将部分元素设置回了0、False或Null,这和数组元素的类型有关,但是数组的长度依然没有变化。

接下 来我们来学习一下数组的查找

Array.IndexOf(Array,obj);查找arr数组中第一个出现obj元素的索引

Array.LastIndexOf (arr,obj);查arr找数组中最后一个出现obj元素的索引

int[] arr = new int[] { 3, 2, 1, 5,2 ,4};
foreach (int i in arr)
{
Console.WriteLine(i);
}
int z=Array.IndexOf(arr, 2);
int j=Array.LastIndexOf(arr,2);
Console.Write("第一次出现2的索引位:"+z);
Console.WriteLine("最后一次出现2的索引位:" +j);

结果是 第一次出现2的索引位:1 最后一次出现2的索引位:5  结果与事实吻合,c#提供的Array.IndexOf和 Array.LastIndexOf方法还提供了两种方法:

Array.IndexOf(Array,obj,beginIndex);开始查询的索引位。

Array.IndexOf (Array,obj,beginIndex,count);起始查询的索引位,索引往大的方向累加查询数。

Array.LastIndexOf(Array,obj,beginIndex);开始 查询的索引位。

Array.LastIndexOf(Array,obj,beginIndex,count);起始查询的索引位,索引往小的方向累加查询数。

接着上 面的例子

Console.WriteLine("从1号索引位开始的往大的索引数4个元素中第一次出现2的索引位:" + b);

Console.WriteLine("从4号索引位开始的往小的索引数4个元素中最后一次出现2的索引位:" + l);

运行结果为 :

时间: 2024-09-04 10:41:16

(教学思路 C#数组三)数组的常用方法例题,复习数组的相关文章

(教学思路 C#数组二)数组的属性、foreach遍历、交错数组与矩形数组的区别

本次课我们要学习数组的属性.foreach的用法.我上节课提到的交错数组,我会通过多个例子的演示讲解让你们理解交错数组定义已经与规则的二维数组(矩形数组)的区别加深理解,下一节我们还将学习数组的常用方法. 下面我们来学习一下数组的属性,什么是属性呢?在以后学习类的时候我会给大家详细的讲解,现在我给你们举个现实生活的例子,帮助你们理解什么叫属性,属性一般都是名词,表示它的所有者(即对象)拥有的特性,如抹布(对象)的颜色.大小(属性),而下一节将学习的数组的方法一般是动词,如抹布的功能,抹布(对象)

Android解析json数组对象的方法及Apply和数组的三个技巧_Android

json是种常用的数据传输格式,在android开发中,如何借助java语言实现对json数组对象的解析呢,请参阅下面的关键代码: import org.json.JSONArray; import org.json.JSONObject; //jsonData的数据格式:[{ "id": "27JpL~jd99w9nM01c000qc", "version": "abc" },{ "id": "

《指针的编程艺术(第二版)》一第三章 指针与数组3.1 指针与一维数组

第三章 指针与数组 指针的编程艺术(第二版) 3-1 指针与一维数组 3-2 指针与二维数组 3-3 数组指针 3-4 为什么parr等同于 *parr? 3-5 指向数组的指针 3-6 多重指针 3-7 命令行参数 3-8 改错题 3-9 练习 3-10 程序实战 指针其实就是一个地址.数组的名称,表示这个数组的第1个元素的地址,所以它也是指针.由此可知,指针与数组的关系是很密切的.为了与指针变量(pointer variable){XE "指標變數(pointer variable)&quo

java数组-一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗

问题描述 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个对象吗 解决方案 数组是一种数据类型,数组中的每个元素类型取决于它的声明是什么类型,例如:String[],里面只能存放String类型的数据.Student[],里面只能存放Student类型的数据. 解决方案二: 数组是一个容器 ,你可是在里面放类 ,但它不是一个类 解决方案三: 不能,虽然数组里可以放很多东西,但它不是一个类.数组,就是相同数据类型的元素按一

[经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。

[题目] 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个排好序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1. [分析] 这道题最直观的解法并不难.从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N).但这个思路没有利用输入数组的特性,我们应该能找到更好的解法.  我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等于后

二维数组与指针-C语言二维数组中的*(p+1)的确切含义

问题描述 C语言二维数组中的*(p+1)的确切含义 各位大师们,烦请指教一二吧.如果是在一维数组中,*(p+1)表示p+1这个地址空间或空间中的值,那么在二维数组中,p+1是指向a[1]*(p+1)是a1这个地址中的值啊?可是为什么会是地址呢? 解决方案 二维数组其实是一个小戏法,本质上还是一维数组--二维下标连续构成的数组又连续构成第一维下标.你可以像遍历一维数组那样遍历它 解决方案二: 其实a[2][3]的调用可以看成是两个调用,首先是对a进行[2]操作,然后再对a[2]的返回值进行[3]操

java 数组的增删改查,用数组的方法实现

问题描述 java 数组的增删改查,用数组的方法实现 对一维数组进行增删该查:int[] num=new int[10]要求:用方法实现1输入10个整数存入数组2删除指定位置上的数3修改指定位置上的数4查找某个数的位置(下标)5查找最大值6查找最小值7去掉一个最大值和一个最小值,求平均值. 跪求各位大神能给小弟一个立案...好人一生平安!! 解决方案 http://blog.csdn.net/myoral/article/details/7445675 解决方案二: java 对象数组(增删改查

怎么样把一个byte[]数组转化为string的2维数组呢?

问题描述 怎么样把一个byte[]数组转化为string的2维数组呢? 是先转为string,然后再转数组,最后转为2维数组?能有高手代码演示下吗? 解决方案 首先,String有一个构造函数String(byte[] b)可以用字节数组创建String数据. 其次,怎么转成二维数组呢?是想将这个字节数组拆分么?能说一下你的需求吗,为什么要转成二维数组呢. 解决方案二: 你可以吧byte拆分出来,然后在往String数组里面放.. 解决方案三: 你可以吧byte拆分出来,然后在往String数组

c#中10位数组相邻两位相加得新数组,为什么新数组是一堆特殊符号?

问题描述 c#中10位数组相邻两位相加得新数组,为什么新数组是一堆特殊符号? 解决方案 b是int型 char m in b 这里char写成int试试 解决方案二: result = result + m + ","; -> result = result + m.ToString() + ","; 解决方案三: int[] a = new int [10]; for (int i = 0; i < 10; i++) { Console.WriteLi