程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> (教學思路 C#數組三)數組的常用方法例題,復習數組

(教學思路 C#數組三)數組的常用方法例題,復習數組

編輯:關於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);

運行結果為 :

利用索引查詢在實際項目中經常會被使用,比如在網站中編寫上傳圖片時需要判斷上傳文件的擴展名,就需要用到LastIndexOf ("\\")在上傳文件的路徑中,查找出索引位後,利用截取方法(在今後的字符串處理章節中將學到)把文件路徑中最後一個 “\”後的擴展名截取下來,再判斷是否為合法圖片格式;還有在網頁上顯示新聞時,會用才第幾個字以後用 "……"代替,省略了其後的文字,也是用查找索引位來達到的,同學們一定要掌握這種方法。另外說到這同學們一定 覺得疑惑,存儲文件路徑或新聞內容時一般是用string類型的變量,不是數組呀,怎麼用到索引呢?我要告訴大家,string類型不是值類型, 而是引用類型,可以把string類型的變量看出是char類型的數組,索引string類型的變量可以用到索引。

下面我們來學習一下數組的排序

在c語言中,排序是利用冒泡原理,這種排序非常的麻煩,而實際應用中會經常應用到數組的排序。 C#就提供了用於排序的兩種算法:

Array.Sort(arr);用於對一維Array對象中的元素由小到大默認進行排序

Array.Reverse (arr);反轉一維arr

Array.Sort(arr,beginIndex,count);用於對一維Array對象部分中的元素進行排序,從beginIndex索引開始,操作 count個元素

Array.Reverse(arr,beginIndex,count);反轉一維arr或部分arr中元素的順序,從beginIndex索引開始,操作count個元素

例:

int[] arr = new int[] { 3, 1, 5, 4, 2 };
Console.WriteLine("原數組元素順序:");
foreach (int i in arr)
{
Console.Write(i+"  ");
}
Console.WriteLine("");
Array.Reverse(arr);
Console.WriteLine("反轉數組元素:");
foreach (int i in arr)
{
Console.Write(i + "  ");
}
Console.WriteLine("");
Array.Sort(arr);
Console.WriteLine("排序後的數組元素:");
foreach (int i in arr)
{
Console.Write(i + "  ");
}
Console.WriteLine("");
Array.Reverse(arr, 2, 2);
Console.WriteLine("對數組中從 第2索引位對2個元素進行逆序排序:");
foreach (int i in arr)
{
Console.Write(i + "  ");
}
Console.WriteLine("");
Array.Sort (arr,2,2);
Console.WriteLine("對數組中從第2索引位對2個元素進 行排序:");
foreach (int i in arr)
{
Console.Write(i + "  ");
}
Console.WriteLine ("");

結果如下

以 上就是數組常用的方法,大家要熟練掌握,下面我通過幾道問答題大家一起來回顧一下這3節有關數組的學習。

1.數組用來存儲各種類 型的數據,想一想數組中的數據內容有幾種賦值方式?

答:初始化時可以賦值、根據索引進行賦值。

2.交錯數組與一般規則的 數組最大的差異是什麼?如何遍歷交錯數組?

答:交錯數組是每行中的列都不一定相同的二維數組,遍歷元素時需要先變量出行,再在 行中遍歷出列。

3.聲明一個存儲A、B、C、D、E等5個英文的數組對象,將其取出合並輸出如ABCDE。

4.創建一個二維數組,並且 在控制台輸出以下內容:

02 04 06
08 10 11
12 14 16

5.利用一個二維數組存儲3名同學的語 文成績及數學成績,提示用戶輸入學生編號,語文及數學成績,並將結果顯示給用戶。並將語文不及格的學生學號顯示出來,如果不存在語文 不及格的學生,則顯示“語文考試全部通過”。

int[,] cj=new int [3,3];
int i;
for (i = 0; i <3;i++ )
{
Console.Write("請輸入第{0}位學生的學生編號:",i+1);
cj[i, 0] = Convert.ToInt32 (Console.ReadLine());
Console.Write("請輸入此學生的語文成績:");
cj[i,1]=Convert .ToInt32 (Console.ReadLine());
Console.Write("請輸入此學生的數學成績:");
cj[i,2]=Convert .ToInt32 (Console.ReadLine());
Console.WriteLine("*********************************");
}
for (i = 0; i <3;i++)
{
Console.WriteLine("請輸出第{0}位學生的學生編號:{1},語文成績:{2},數學成績:{3}", i + 1, cj [i,0], cj[i,1], cj[i,2]);
}
Console.WriteLine("*********************************");
bool bj = false ;
i = 0;
while (i < 3)
{
if (cj[i, 1] < 60)
{
Console.WriteLine("不及格學生的學號為 :{0}", cj[i, 0]);
bj = true;
}
i++;
}
if (bj != true)
{
Console.WriteLine("語文 成績全部及格!");
}

現在的程序有個問題,就是學號允許重復,而且代碼有點多,主要是讓你們看了簡明扼要,以 後再學習哈希表時可以有效的避免這個問題。下一節我們就學習一下動態數組。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved