数组
一、数组:具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
【数组中元素的索引是从0开始的】
二、一维数组定义方式:
//int[] 变量名 = new int [n];
//n表示开辟多少个空位
1、int 类型
int [] array =new int[]{1,2,3,4,5};//里面有5个变量,array[0],array[1],array[2],array[3],array[4]
Console.WriteLine(array[0]);//打印出来的是1
或者 int [] array =new int[]{1,2,3,4,5};
array[2] = 6;//在这里重新给3赋值,3的位置是array[2],那么打印的是重新赋值后的数,即6
Console.WriteLine(array[2]);
2、string 类型
string[] array1 = new string[5];
//array1[0]="1";//可以给每个变量定义字符串
//array1[1]="2";
//array1[2]="3";
//array1[3]="4";
//array1[4] ="5";
for (int i = 0; i < array1.Length; i++)
{
Console.Write("请输入第" + (i + 1) + "个名字:");
array1[i] = Console.ReadLine();
}
三、练习:
1、//从控制台输入10个人的年龄放入数组,
//将十个人的年龄求总和
int[] name = new int[10];
int sum = 0;
for (int i = 0; i < name.Length; i++)
{
Console.Write("请输入第" + (i + 1) + "个年龄:");
name[i] = int.Parse(Console.ReadLine());
sum += name[i];
}
Console.WriteLine(sum);
2、//排序 冒泡排序
int[] name = new int[10];
for (int i = 0; i < 10; i++)
{
for (int j = i; j < 9; j++)
{
if (name[i] < name[j + 1])
{//定义中间变量去调换两个值
int zhong = name[i];
name[i] = name[j + 1];
name[j + 1] = zhong;
}
}
}
for (int i = 0; i < 10; i++)
{
Console.WriteLine(name[i]);
}
3、//生成十个不重复的数放入数组并打印出来
int[] suiji = new int[10];
Random ran = new Random();
for (int i = 0; i < 10; i++)
{
bool b = true;
int a = ran.Next(11);
for (int j = 0; j <= i; j++)
{
if (a == suiji[j])
{
b = false;
i--;
}
}
if (b)
{
suiji[i] = a;
}
}
4、 //遍历数组
foreach (int aa in suiji)
{
Console.WriteLine(aa);
}
5、//输入班级人数,根据人数,
//挨个输入成绩,求平均分,求最高分,最低分
Console.Write("请输入班级人数:");
int renshu = int.Parse(Console.ReadLine());
double[] fenshu = new double[renshu];
double sum = 0;
for (int i = 0; i <= renshu; i++)
{
Console.Write("请输入第" + (i + 1) + "个分数:");
fenshu[i] = double.Parse(Console.ReadLine());
sum += fenshu[i];
}
double pj = sum / renshu;
Console.WriteLine(pj);
Console.ReadLine();
四、二维数组定义方式:
//int [,] array =new int [a,b];
//a表示有几个一维数组
//b表示每个一维数组中有几个元素
例:
(1)int[,] array = new int[3, 4]{
{2,3,4,5},
{3,4,5,6},
{5,6,7,8}};
Console.WriteLine(array[1, 1]);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
//Console.WriteLine(array[i,j]);
array[i, j] = int.Parse(Console.ReadLine());
}
}
五、练习:
1、//打印一个王字
string [,] wang =new string[,]
{
{" ","■","■","■","■","■"," "},
{" "," "," ","■"," "," "," "},
{" "," "," ","■"," "," "," "},
{" "," ","■","■","■"," "," "},
{" "," "," ","■"," "," "," "},
{" "," "," ","■"," "," "," "},
{"■","■","■","■","■","■","■"}
};
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < 7; j++)
{
Console.Write(wang[i,j]);
}
Console.WriteLine();
}
2、//输入班级人数,根据人数创建数组
//将每一个人的语文,数学,英语成绩放进去
//计算出每个人的平均分
Console.Write("请输入班级人数:");
int renshu = int.Parse(Console.ReadLine());
double[,] fenshu = new double[renshu, 3];
double sum = 0;
for (int i = 0; i < renshu; i++)
{
for (int j = 0; j < 3; j++)
{
Console.WriteLine("请输入第" + (j + 1) + "个分数:");
fenshu[i, j] = double.Parse(Console.ReadLine());
sum += fenshu[i, j];
}
double pj = sum / renshu;
Console.WriteLine("平均分数为:" + pj);
Console.WriteLine();
}
Console.ReadLine();
六、多维数组
数组可以具有多个维度。例如:
int[,,] myArray = new
int[2,4,2]
{
{{1,2},{3,4},{5,6},{7,8}} ,
{{9,10},{11,12},{13,14},{15,16}}
};
//意思是,有2个二维数组,每个二维数组里有4个一维数组,每个一维数组里有2个元素