------- Windows Phone 7手機開發、.Net培訓、期待與您交流! -------
根據黑馬的入學視頻以及自己的學習狀況,找了自己感覺比較薄弱的環節大體看了一下,因爲大學學的就是.NET,基本的還是略懂。。現黑馬的入學流程需要寫博文,就當是對自己瞭解東西的一些總結吧。
數組屬性
(1)數組使用類型聲明,通過數組下標(或稱索引)來訪問數組中的數據元素。
(2)數組可以是一維數組、多維數組或交錯數組(jagged array)。
(3)數組元素可以爲任何數據類型,包括數組類型。
(4)數組下標(索引)從0開始:具有 n 個元素(即維度長度爲n)的數組的下標是從 0 到 n-1。
(5)數值數組元素的默認值設置爲零,而引用元素的默認值設置爲 null。
(6)交錯數組是數組的數組,因此,它的元素是引用類型,初始化爲 null。
(7)數組中的元素總數是數組中各維度長度的乘積。
(8)通過.NET框架中的System Array類來支持數組。因此,可以利用該類的屬性與方法來操作數組。
一、一維數組
一般通過數組下標來訪問數組中的數據元素。C#語言還可以通過foreach語句來枚舉數組的各個元素。下面給出自己練習的一個列子。利用一維數組顯示Fibonacii數列:1、1、2、3、5、8、……的前20項。
using System; namespace CSharpPractice.Array { class Fibonacii { static void Main() { int[] Fab= new int[20]; int i; Fab[0] = 1; Fab[1] = 1; for (i = 2; i < 20; i++) Fab[i] = Fab[i-1]+Fab[i-2]; for (i = 0; i < 20; i++) { if (i % 5 == 0) Console.WriteLine();//一行顯示5個數 Console.Write("{0,6} ", Fab[i]); } Console.ReadLine(); } } }
二、多維數組
多維數組的聲明、實例化和初始化與一維數組的聲明、實例化和初始化相類似。聲明多維數組時,用逗號表示維數,一個逗號表示兩維數組,兩個逗號表示三維數組,以此類推。注意:在聲明數組聲明中即使沒有指定維數的實際大小,也必須使用逗號分隔各個維。下面也給出一個列子。
using System; namespace CSharpPractice.Array { class Matrix2D { public static void DisplayMatrix(int[,] A) { // 打印矩陣內容 for (int i = 0; i < A.GetLength(0); i++) { for (int j = 0; j < A.GetLength(1); j++) Console.Write("{0,6} ", A[i, j]); Console.WriteLine(); } } static void Main() { int i, j, sum = 0, t; int[,] A = new int[4, 4]; for (i = 0; i < 4; i++) //矩陣A賦值 for (j = 0; j < 4; j++) A[i, j] = i * 4 + j + 1; Console.WriteLine("原始矩陣: "); DisplayMatrix(A); Console.WriteLine("上三角矩陣: "); for (i = 0; i < 4; i++) { for (int k = 0; k < i * 7; k++) Console.Write(" "); //控制空格 for (j = i; j < 4; j++) Console.Write("{0,6} ", A[i, j]); Console.WriteLine(); } Console.WriteLine("下三角矩陣: "); for (i = 0; i < 4; i++) { for (j = 0; j < i + 1; j++) Console.Write("{0,6} ", A[i, j]); Console.WriteLine(); } Console.WriteLine("兩條對角線之和: "); for (i = 0; i < 4; i++) sum += A[i, i] + A[i, 3 - i]; Console.WriteLine("{0,6}", sum); Console.WriteLine("矩陣A轉置: "); for (i = 0; i < 4; i++) { for (j = i; j < 4; j++) { t = A[i, j]; A[i, j] = A[j, i]; A[j, i] = t; } } DisplayMatrix(A); // 打印矩陣 } } }
三、交錯數組
正交數組、變長數組、鋸齒形數組。在二維交錯數組中,每一行可以有不同的列數。交錯數組是元素爲數組的數組,所以有時又稱爲“數組的數組”。交錯數組元素的維度和大小可以不同。交錯數組同樣需要聲明、實例化並且初始化後才能使用。交錯數組的使用示例如下:
using System; namespace CSharpPractice.Array { class JaggedArray { static void Main() { int i, j, k; int[][] jaggedArray3 = { new int[] {1,3,5,7,9}, new int[] {0,2,4,6}, new int[] {11,22} }; Console.WriteLine("jaggedArray3:"); for (i = 0; i < jaggedArray3.Length; i++) { for (j = 0; j < jaggedArray3[i].Length; j++) Console.Write("A[{0},{1}]={2} ", i,j,jaggedArray3[i][j]); Console.WriteLine(); } int[][,] jaggedArray4 = new int[3][,] { new int[,] { {1,3}, {5,7} }, new int[,] { {0,2}, {4,6}, {8,10} }, new int[,] { {11,22}, {99,88}, {0,9} } }; Console.WriteLine("\njaggedArray4:"); for (i = 0; i < jaggedArray4.Length; i++) { for (j = 0; j<jaggedArray4[i].GetLength(0); j++) for (k = 0; k < jaggedArray4[i].GetLength(1); k++) Console.Write("A[{0}][{1},{2}]={3} ", i,j,k,jaggedArray4[i][j, k]); Console.WriteLine(); } } } }
四、數組排序與基本操作
數組求和、求平均值、最值及其位置;數組的常見排序方法,如冒泡法、選擇法;插入數據到已排序的數組中;刪除已排序的數組中某一元素,下面給出冒泡排序的列子。
using System; namespace CSharpPractice.Array { class BubbleSort { public static void DisplayMatrix(int[] A) { //打印矩陣 foreach (int i in A) Console.Write("{0,5} ", i); Console.WriteLine(); } static void Main() { int i, t; int[] A = new int[10]; Random rNum = new Random(); for (i = 0; i < A.Length; i++) A[i] = rNum.Next(101);//數組A賦值(0~100之間的隨機數) Console.WriteLine("原始數組: "); DisplayMatrix(A); int N = A.Length; //獲取數組A的長度N for (int loop = 1; loop <= N - 1; loop++)//外循環進行N-1輪比較 { for (i = 0; i <= N - 1 - loop; i++) //內循環兩兩比較,大數下沉 if (A[i] > A[i + 1]) { t = A[i]; A[i] = A[i + 1]; A[i + 1] = t; } } Console.WriteLine("升序數組: "); DisplayMatrix(A); // 打印矩陣 } } }
數組注意事項
(1)如果爲數組指定初始化值,則可以省略對數組長度的說明
(2)如果在聲明數組時將其初始化,可以不必再次聲明數組類型
(3)一旦要爲數組指定初始化值,就必須爲數組的所有元素指定初始化值,指定值的個數既不能多於數組長度,也不能少於數組長度
(4) 可以聲明一個數組變量但不將其初始化,但在將數組分配給此變量時必須使用 new 運算符
------- Windows Phone 7手機開發、.Net培訓、期待與您交流! -------