数组(数据类型):数组能存放多个同类型数据,数组长度不可改变。
Ⅰ、声明与赋值
①数组声明:数据类型[ ] 变量名;→→例:int[ ] array;//此时只是一个声明这是个数组对象。
②赋值:给声明了的数组赋值→→变量名=new 数据类型[长度 ];→→例:array=new int[5];//此时给数组赋值了个为5的长度,此时这里的[5]也称作下标或索引。
int [ ]str=new int[3]{"2","4","5"};第一种
int [ ]str={"3","5","9"};第二种,为最简便的创立一个数组。
int [] nums=new int[6];//这样只是创建了一个长度为6的数组,没有赋值
Ⅱ、数组初始化
①数字类型,初始化时所有值=0; ②bool初始化的值=false; ③char 初始化值=\0; ④string初始化值=null;
int [] nums=new int[6];
//创建了数组,但没赋值,此时数组内的所有元素都为0;
//创建长度为3的数组
int [] numbers=new int [3];
//给数组下标为0,的数组项赋值为6
numbers[0]=6;
//为numbers重新建立一个长度为2数组,相当于前面的数组就不用了
numbers=new int [2];
//新建立的数组为初始化,没有赋值,所以此时都为0
Console.Write(numbers[0]);//此时numbers[0]=0;
Ⅲ、数组项读取与修改
①读取:变量名[下标]
②修改(也叫赋值):变量名[ ]=值;→→array[1]=9;
Ⅳ、读取数据长度
变量名 . length;
注意: length为数组对象的一个属性。
要获取数组最后一项值就是array[array.length-1];
//创建数组
int [] array={"4","2","7"};
//i为array下标,array.length为数组长度
for (int i=0;i<array.length;i++)
{
Console,Write( array );
Console.WriteLine(array[array.length-1]);
}
数组定长性
一个数组创建后,他的长度固定不可变,数据适用于数据数量固定场景。
int [] array=new int [3];
array=new int [4];
//此时会觉得这不是长度改变了吗?其实不是。
//只是先定义了个长度为3的数组,再重新为array创建了一个长度为4的数组,所以之前的就废弃了,长度并没有发生改变
数组遍历
给数组重新赋值或求和或求乘积等都会运用遍历。
int [] array={"2","4","5"};
for(int i=0;i<array.length;i++)
{
Console.Write(array);
//输出一个数组项后输出空格隔开
Console.Write(" ");
}
数组排序
①选择排序:
把第一位数字拿出来依次和后面每一位数字比较,比他大则不换位置,比他小则换位置,,不管换了几次都用第一位来比较,具有不稳定性
1-1. 使用任意的排序算法对数组进行排序,排序后,重新输出数组内容
var array=[6,8,5,2,2];
for (var i=0;i<array.length-1;i++){
for(var j=i+1;j<array.length;j++){
if(array[i]>array[j]){
var temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
Console.Write(array);
②冒泡排序
相邻两个数进行比较,谁小换前面,谁大换后面。冒泡排序具有稳定性。
1-1. 使用任意的排序算法对数组进行排序,排序后,重新输出数组内容
var array=[6,8,5,2,2];
//i为循环次数
for (var i=0;i<array.length-1;i++){
//j为array的下标
for(var j=0;j<array.length-1-i ;j++){
if(array[j]>array[j+1]){
var temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
Console.Write(array);
数组与集合
数组:能定长,用于保存固定数量的数据;占用内存少,遍历快。
集合:不定长,可改变长度。
集合类型:List 类型最常见。
①创建集合
定义:List<数据类型>变量名;
赋值:变量名=new List <数据类型>(); 例:List<int> nums=new List<int>{3,6,8};
初始化:变量名=new List<数据类型>{元素1,元素2,元素3......元素n};
②操作:
添加元素:变量名 . add(要添加的数据);
插入元素:变量名 . Insert(索引,要插入的数据);
删除元素:变量名 . RemoveAt(索引); //根据索引删除
变量名 . Remove(数据);//根据数据删除
修改元素:变量名[索引]=值;
获取元素数量:变量名 . Count
【材料题】
1. 建立一个int类型的数组,变量名为nums,并使用初始化器给它的每一项赋值(随意赋一些值即可),然后完成下面的练习
Console.Write("请输入一个数组长度:");
int len = int.Parse(Console.ReadLine());
int[] nums=new int[len];
for (int i = 0; i < len; i++)
{
Console.Write("数组第" + (i + 1) + "组数据:");
nums[i] = int.Parse(Console.ReadLine());
}
for (int i = 0; i < nums.Length;i++ )
{
if (i < nums.Length - 1)
{
Console.Write(",");
}
Console.Write( nums[i]);
}
1-1. 让用户输入一个下标和一个新的数字,修改数组对应下标的数字,若下标超出范围,要给出错误提示,并让用户重新输入
Console.Write("请输入一个下标");
int len = int.Parse(Console.ReadLine());
Console.Write("请输入一个新数字");
int num = int.Parse(Console.ReadLine());
int[] str = {2,3,6,3,1 };
if (len <= str.Length - 1)
{
str[len]=num;
Console.Write("正确");
}
else
{
Console.Write("超出范围");
}
1-2. 让用户输入一个要查找的数字,判断该数字在数组中是否存在
int[] nums = {2,5,7,2,4
};
Console.Write("请输入一个数字:");
int ter = int.Parse(Console.ReadLine());
bool IsNuM = false;
for (int i = 0; i
< nums.Length;i++ )
{
if (nums[i] == ter)
{
IsNuM = true;
Console.WriteLine("存在过");
break;
}
}
if(IsNuM)
{
Console.Write("不存在");
}
1-5. 输出数组中所有的质数
int[]
nums = { 2, 4, 5, 7 };
// 遍历数组获得每一个元素
for (int i = 0;
i < nums.length; i++) {
//默认元素是质数
boolean
iszhishu = true;
//质数整除的范围2~(n-1)
for (int j
= 2; j < nums[i]; j++) {
//判断是否合数,是合数iszhishu就为false,终止当前循环
if
(nums[i] % j == 0) {
iszhishu
= false;
break;
}
}
//判断是否质数
if
(iszhishu) {
Console.Write(nums[i]
+ "是质数");
}