什么是数组?
数组是具有相同数据类型的一组数据的集合。数组中的每一个变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。
一维数组
语法:数组元素类型 [] 数组名字; 例:int[] arry;
初始化:
- 法一:分别为每一个元素赋值 例:int[] a = new int[3]; a[0] = 1;a[1] = 2;a[2] = 3;
- 法二:直接给整个数组进行赋值 例:int b[] = new int { 4, 5, 6 };
- 法三:省略new关键字 例:int c = { 7, 8, 9 };
二维数组
语法:
- 法一:数据类型[ , ] 数组名; 例:int[ , ] arry;
- 法二:数据类型[ ][ ] 数组名; 例:string[ ][ ] arry;
声明:
- 法一:指定行数和列数 例:int[,] a = new int[2][4];
- 法二:只指定行数 例:int[][] b = new int[2][];b[0] = new int[2];b[1] = new int[3];//使用这种方法的时候可以为每一行指定不同的列数。(与不规则数组类似)
注意:int[][] a = new int[3][3];这种创建数组的方式是错误的。
初始化:
- 法一:为单个数组元素赋值 例:int[,] arry = new int[2,2]; arry[0,0] = 0;arry[0,1] = 1;……
- 法二:为逐行进行初始化 例:int[][] arry = new int[2][];arry[0] = new int[]{0,1};arry[1] = new int[]{1,0};
- 法三:直接为整个二维数组赋值 例:int[,] = new int[2,2]{ {0,1}, {1,0} };或int[,] = new int[,]{ {0,1}, {1,0} }; 或int arry = { {0,1},{1,0} };
二维数组的使用
题目:将二维数组中的行数据和列数据调换位置。
答案:
int[,] arry = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write(arry[i, j]+" ");
}
Console.WriteLine("\n");
}
int temp;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < i; j++)
{
temp = arry[i, j];
arry[i, j] = arry[j, i];
arry[j, i] = temp;
}
}
Console.WriteLine("new data: ");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
Console.Write(arry[i, j] + " ");
}
Console.WriteLine("\n");
}
数组的基本操作
- 一维数组的输入与输出
int[] arry = new int[100];
for (int i = 0; i < 100; i++)
{
arry[i] = i + 1;
}
for (int i = 0; i < arry.Length; i++)
{
Console.Write(arry[i] + " ");
}
- 二维数组的输入与输出
题目:在控制台中输入学生的学号及语文数学英语成绩,然后输出学生的各科成绩,平均成绩和总成绩。
答案:
Console.WriteLine("请输入总人数:");
int count = Convert.ToInt32(Console.ReadLine());
int[,] record = new int[count,4];
for (int i = 0; i < count; i++)
{
Console.Write("请输入学号: ", i+1);
record[i, 0] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入语文成绩: ");
record[i, 1] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入数学成绩: ");
record[i, 2] = Convert.ToInt32(Console.ReadLine());
Console.Write("请输入英语成绩: ");
record[i, 3] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("学号\t语文\t数学\t英语\t总分\t平均");
for (int i = 0; i < count; i++)
{
int sum = 0, ave = 0;
for (int j = 0; j < 4; j++)
{
Console.Write(record[i, j] + "\t");
if (j > 0)
{
sum += record[i,j];
}
}
ave = sum / 3;
Console.Write(sum + "\t" + string.Format("{0:F2}", ave) + "\n");
}
使用foreach语句遍历数组
语法:foreach(【类型】【变量名】in 【集合】){ 语句 }
说明:【集合】必须有一个从该集合的元素类型到迭代变量的类型的显示转换。
题目:使用字符串数组存储进销存管理系统的主要功能模块,然后使用foreach语句遍历并输出。
答案:
string[] names = { "进货管理", "销售管理", "库存管理", "系统设置", "常用工具" };
foreach (string str in names)
{
Console.WriteLine(str);
}
对数组进行排序
方法:使用Array类中的sort方法可以对数组元素进行顺序排序,reverse可以对数组元素逆序。
例:
int[] arry = { 3, 4, 1, 7, 5, 6, 9, 8, 2, 0 };
Array.Sort(arry);
foreach (int i in arry)
{
Console.WriteLine(i);
}
数组的排序方法
- 冒泡排序
int[] arry = { 3, 4, 1, 7, 5, 6, 9, 8, 2, 0 };
for (int i = 0; i < arry.Length - 1; i++)
{
for (int j = i + 1; j < arry.Length; j++)
{
if (arry[i] > arry[j])
{
int temp = arry[i];
arry[i] = arry[j];
arry[j] = temp;
}
}
}
for (int i = 0; i < arry.Length; i++)
{
Console.Write(arry[i]+" ");
}
- 选择排序
int[] arry = { 3, 4, 1, 7, 5, 6, 9, 8, 2, 0 };
int min;
for (int i = 0; i < arry.Length - 1; i++)
{
min = i;
for (int j = i + 1; j < arry.Length; j++)
{
if (arry[j] < arry[min])
{
min = j;
}
}
int temp = arry[min];
arry[min] = arry[i];
arry[i] = temp;
}
for (int i = 0; i < arry.Length; i++)
{
Console.Write(arry[i] + " ");
}