------- 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培训、期待与您交流! -------