zoukankan      html  css  js  c++  java
  • 数组的详解(一步步结合案例分析 数组的易错及疑难)

    数组的初始化
    错误案例:

    1.int[] array; array[10]=5;  //错误
    2.int[] array=new int[5]{1,2,3};//错误




    正确案例:

    1.int[] array=new int[5];
    2.int[] array={1,2,3,4,5};
    3.static void Main(string[] args)
    {
    // int arraysize = 5; 错误
    const int arraysize = 5;
    int[] array = new int[arraysize] { 1, 2, 3, 4, 5 }; //这里需要输入常量值
    }
    }




    案例1:

    class Program
    {
    static void Main(string[] args)
    {
    int[] newArray = new int[5];//这里有2步,声明数组,并且初始化
    int[] newArray2 = { 1,2,3,4,5};
    foreach (int i in newArray)//默认都是0,这里为什么要强调默认是0 因为我下面的案例用到了
    {
    Console.WriteLine(i);
    }
    newArray = newArray2;
    foreach(int i in newArray)
    {
    Console.WriteLine(i);
    }

    Array.Resize(ref newArray,3);//修改数组的长度,并创建一个新数组,把原内容复制给新数组里去。
    foreach (int i in newArray)//如果长度小于原长度,那么后面的数值都将删除
    {
    Console.WriteLine(i);
    }

    Array.Resize(ref newArray,10);//如果长度大于原长度,后面的数值用0代替补全

    foreach (int i in newArray)
    {
    Console.WriteLine(i);
    }

    }
    }




    案例2:

    class Program
    {
    static void Main(string[] args)
    {
    //计算投掷600次1-6出现的次数
    int[] Array = new int[7];//array[1]代表face=1
    Random rannum=new Random();

    for (int counter = 0; counter <= 6000; counter++)
    {
    ++Array[rannum.Next(1, 7)];//默认的array[]=0,所以当array[1]出现1次就+1;
    }

    for (int face = 1; face <= 6; face++)
    {
    Console.WriteLine("face {0} is {1} ",face,Array[face]);//输出array[]的值,就是出现的次数
    }
    }


    }




    案例3:
     

    class Program
    {
    static void Main(string[] args)
    {
    //计算 学生对咖啡店的评分次,并且列出每个评分出现多少次
    int[] querys = { 1, 9, 10, 1, 5, 6, 7, 8, 4, 5, 10, 1, 3, 3, 9, 4, 2, 2 };//这是质量评分的集合
    Console.WriteLine("咖啡店的评分次数:{0}次",querys.Length);

    //下面计算每个等级出现的次数
    int[] frequency = new int[11];//这里为什么用10,因为最高的评分是10分
    for (int i = 0; i < querys.Length; i++)
    {
    ++frequency[querys[i]];//把评分的分数作为他的下标,然后++这样就可以计算出次数
    }

    for (int times = 0; times <frequency.Length; times++)
    {
    Console.WriteLine("{0}分的出现{1}次",times,frequency[times]);
    }
    }
    }



    案例4:

    static void Main(string[] args)
    {
    var array = new[] { 1, 2, 3, 1, 2, 1 };
    //int array={ 1, 2, 3, 1, 2, 1 };
    Console.WriteLine(array.Length);
    foreach(var i in array)
    {
    Console.WriteLine(i);
    }
    }



    案例5:

    class Program
    {
    static void Main(string[] args)
    {
    int[] ints = { 1,2,3,4,5};
    Console.WriteLine("Lengths is {0}",ints.Length);
    Console.WriteLine("Array is:");
    foreach (int i in ints)
    {
    Console.Write(i+"");
    }

    Console.WriteLine();
    ChangeArray(ints);
    Console.WriteLine("Changed Array is:");
    foreach (int i in ints)
    {
    Console.Write(i + "");
    }
    }

    //static void ChangeArray(int[] array)
    //{
    // for (int i = 0; i < array.Length; i++)
    // {
    // array[i] = array[i] * 2;
    // }
    //}
    static int[] ChangeArray(int[] array)//定义方法修改数组
    {
    for (int i = 0; i < array.Length; i++)
    {
    array[i] = array[i] * 2;
    }
    return array;
    }


    }



    案例6:
     

    int[,] array = { { 1, 2, 3 }, { 2, 3, 4 }, { 3, 4, 5 } };
    Console.WriteLine(array.Length);//9
    int i = array.Rank;//维数
    int x = array.GetLength(0);//行数
    int s = array.GetLength(1);//列数




    案例7:

    static void Main(string[] args)
    {
    int[,] array = { {1,2,3},{4,5,6},{6,7,8}};
    Console.WriteLine(array.GetLength(0));//行数
    Console.WriteLine(array.GetLength(1));//列数
    Console.WriteLine(array.Rank);//维数
    for (int x = 0; x < array.GetLength(0);x++ )//遍历2维数组
    {
    for (int y = 0; y < array.GetLength(1);y++ )
    {
    Console.WriteLine("Array[{0}][{1}]:{2}",x,y,array[x,y]);
    }
    }
    }



    案例8:
     

    static void Main(string[] args)
    {
    //Console.WriteLine(SumAverage(1.0,2.0,3.0));//2
    double[] array = { 1.2, 5.5, 6.5 };
    Console.WriteLine(SumAverage(array));//4.4
    Console.WriteLine(5.2);//5.2
    }

    static double SumAverage(params double[] array)//方法,params参数可以允许传入任意数组
    {
    double sum = 0;
    foreach (double n in array) //注意这里的double
    {
    sum += n;
    }
    return sum / array.Length;
    }




    案例9:

    class Program
    {
    static void Main(string[] args)
    {
    double[] doubleArray = { 1.6, 6.9, 6.5 };
    Array.Sort(doubleArray);//从小到大重新排序,Array类的Sort方法
    foreach (double n in doubleArray)
    {
    Console.WriteLine(n);//1.6 6.5 6.9
    }
    double[] doubleArrayCopy = doubleArray;//引用的地址指向 同一块内存上的变量
    Array.Resize(ref doubleArray, 7);//以前说到ref,ref传递进去的引用变量会改变,就是开辟了一个新内存
    foreach(double n in doubleArray)
    {
    Console.WriteLine(n);//1.6 6.5 6.9 0 0 0 0
    }

    foreach (double n in doubleArrayCopy)
    {
    Console.WriteLine(n);//1.6 6.5 6.9 还是原来的内存,用doubleArrayCopy这个变量引用内存中的地址
    }
    Array.Reverse(doubleArrayCopy);//反转数组
    foreach (double n in doubleArrayCopy)
    {
    Console.WriteLine(n);//6.9 6.5 1.6
    }
    }




    下面来说下string数组,其实string 也是数组,而且是引用类型
    案例1:

    static void Main(string[] args)
    {
    string strs = "string是char的只读数组";
    char chars = strs[0];
    Console.WriteLine(chars);//显示s

    //为了给各个字符赋值必须先转换成char数组
    char[] charsArray = strs.ToCharArray();
    foreach (char n in strs)//foreach(char n in charsArray)
    {
    Console.Write(n);//显示:string是char的只读数组
    }
    }









  • 相关阅读:
    SqlBulkCopy 的2篇不错的文章
    xml、json反序列化得到相应的类
    DataTable的使用操作持续更新
    asp.net mvc 添加下拉列表
    asp.net mvc 简单实现权限控制
    ASP.NET 实现上传EXCEL,利用NOPI操作,转换得到DataTable
    asp.net mvc code first 在本地数据库中生成数据库
    第一个随笔
    vb中字母排列组合输出函数
    使用SQL语句查询某表中所有的主键、唯一索引以及这些主键、索引所包含的字段
  • 原文地址:https://www.cnblogs.com/IAmBetter/p/2290002.html
Copyright © 2011-2022 走看看