• C#中的数组学习笔记


    1、数组的声明与分配空间

    数组:多个相同类型数据的组合。在C#中,数组为引用类型。

    (1)一维数组的声明方式

    Int[] a1; //注意方括号写到变量名的前面

    Double[] b;

    Mydate[] c;

    C#语言中数组声明时不能指定其长度(数组中元素的个数) 例如:int a[5] 非法

    (2)数组初始化

    A、动态数组初始化

      数组定义与为数组元素分配空间并赋值的操作分开进行。  因为C#中的数组是引用型

    例如:int[] a=new int[3];  //初始化

      a[0]=3;  a[1]=6;  a[2]=9  //赋值

    MyDate[] dates;  //对象型数组

    Dates=new MyDate[3];

    dates[0]=new MyDate(22,7,1964);  dates[1]=new MyDate(1,7,1984); dates[2]=new MyDate(22,12,1964);

    B、静态初始化

       在定义数组的同时就为数组元素分配空间并赋值。 注意:最后可以多一个逗号

    例如:int[] a={3,9,8}; //也可以写成 int[] a= new int[]{3,9 8,};

    MyDates[] dates={new MyDates(22,7,1964),new MyDates(1,7,1984),new MyDates(2,12,1964)};

    C、数组元素的默认初始化

    数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。  数值型是0,引用类型是null

    例如: int[] a=new int[5];  //a[]中的每个元素均为0

    3、数组元素的引用

    index为数组元素下标,可以使整型常量或整型表达式。 例:a[3],b[i],c[6-i]

    数组元素下标从0开始,长度为n的数组合法下标取值范围为0~n-1

    每个数组都有一个属性Length指明它的长度。如:a.Length指明数组a的长度(元素个数)

    4、foreach语句

    foreach可以很方便地处理数组、集合中各元素。 foreach是只读式遍历(只能取值,无法改变)

    如: int[] ages=new int[10];

    foreach(int age in ages)

    {

    //……

    }

    5、复制数组

    Array.Copy方法提供了数组元素复制功能:

    Int[] source={1,2,3,4,5,6};  //源数组

    Int[] dest={10,9,8,7,6,5,4,3,2,1}; //目的数组

    //复制源数组中从下标0开始的source.Length个元素到目的数组,从下标0的位置开始存储

    Array.Copy(source,0,dest,0,source.Length);

    6、多维数组

    二维数组举例: int[,] a={{1,2,3},{4,5,6},{7,8,9}};

    可以用a.GetLength(0)获得数组的行数,a.GetLength(1)获得数组的列数

    7、交错数组

    C#中交错数组是数组的数组

    例如:int[][] t=new int[3][];

      t[0]=new int[2];

      t[1]=new int[4];

      t[2]=new int[3];

    C#中多维数组的声明和初始化应按照从高维到低维的顺序进行。

    如:int [][]t1= new int[][4]; // 非法,与C++不同

    ------数组初始化实例:

     1 //#region 一维数组初始化显示
     2             //int[] arr1 = new int[6] { 23, 12, 4, 66, 74, 24 };
     3             //foreach (int n in arr1)
     4             //    Console.WriteLine("{0}", n + " ");
     5             //Console.WriteLine();
     6             //Console.WriteLine("请输入数组的下标:");
     7             //int i;
     8             //i = Convert.ToInt32(Console .ReadLine ());
     9             //Console.WriteLine(arr1[i]);
    10             ////Console.ReadKey();
    11             //#endregion
    12 
    13            /* #region 数组初始化显示
    14             int[,] arr2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
    15             Console .Write ("数组的行数为:");
    16             Console.WriteLine(arr2.Rank);
    17             Console.Write("数组的列数为:");
    18             Console.WriteLine(arr2.GetUpperBound(arr2.Rank - 1)+1);
    19             for (int j = 0; j < arr2.Rank; j++)
    20             { 
    21                 string s="";
    22                 for (int k = 0; k <arr2.GetUpperBound(arr2.Rank - 1)+1; k++)
    23                 {
    24                     s = s + Convert.ToString(arr2[j, k]) + " ";
    25                 }
    26                 Console.WriteLine(s);
    27             }
    28             #endregion */
    29 
    30             int[] scores = new int[10];
    31             int sum = 0;
    32             //对数组中的元素进行赋值
    33             for (int i = 0; i < scores.Length; i++)
    34             {
    35                 Console.Write("请输入第{0}个成绩:", i + 1);
    36                 scores[i] = Convert.ToInt32(Console.ReadLine());
    37                 //sum = sum + scores[i];
    38             }
    39             //Console.WriteLine("学生平均成绩为:" + (sum / 10));
    40             
    41             //通过一个for循环求学生的总成绩
    42             for (int i = 0; i < scores.Length; i++)
    43             {
    44                 sum += scores[i];
    45             }
    46             //Console.Clear();   //清屏
    47             Console.WriteLine("学生平均成绩为:" + (sum / scores .Length ));
    48             //通过循环输出每一个学生的成绩
    49             for (int i = 0; i < scores.Length; i++)
    50             {
    51                 Console.WriteLine("第{0}个学生的成绩为:{1}", i + 1, scores[i]);
    52             }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace 二维数组声明初始化
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12             #region 二维数组初始化显示
    13             int[,] arr2 = new int[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8 ,9 } };
    14             Console.Write("数组的行数为:");
    15             Console.WriteLine(arr2.Rank);
    16             Console.Write("数组的列数为:");
    17             Console.WriteLine(arr2.GetUpperBound(arr2.Rank - 1) + 1);
    18             for (int j = 0; j < arr2.Rank; j++)
    19             {
    20                 string s = "";
    21                 for (int k = 0; k < arr2.GetUpperBound(arr2.Rank - 1) + 1; k++)
    22                 {
    23                     s = s + Convert.ToString(arr2[j, k]) + " ";
    24                 }
    25                 Console.WriteLine(s);
    26             }
    27             #endregion
    28         }
    29     }
    30 }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace 动态二维声明初始化
     7 {
     8     class Program
     9     {
    10         static void Main(string[] args)
    11         {
    12             Console.WriteLine("请输入定义数组的行数:");
    13             int row = Convert.ToInt32(Console.ReadLine());
    14             Console.WriteLine("请输入定义数组的列数:");
    15             int col = Convert.ToInt32(Console.ReadLine());
    16             int[,] arr2 = new int[row, col];
    17             Console.WriteLine("结果:");
    18             for (int i = 0; i < row; i++)
    19             {
    20                 for (int j = 0; j < col; j++)
    21                 {
    22                     if (i == j)
    23                     {
    24                         Console.Write("*");
    25                     }
    26                     else
    27                     {
    28                         Console.Write("@");
    29                     }
    30                 }
    31                 Console.WriteLine();
    32             }
    33         }
    34     }
    35 }
  • 相关阅读:
    lamp架构之一键编译安装lamp搭建wordpress和discuz脚本(基于centos)
    更换公网IP导致wordpress网站无法正常访问解决方法
    centos7一键编译安装Apache2.4.46脚本
    redis之RDB备份脚本
    一键编译安装redis5.0.9脚本(centos)
    一键二进制安装mysql8.0.19脚本(shell)
    c语言 扫雷游戏(才做了三分之一)
    C语言 数据结构单链表(未解决版)
    JAVA final关键字的使用
    JAVA 520 无限循环I love you
  • 原文地址:https://www.cnblogs.com/zyf2014/p/5427717.html
Copyright © 2020-2023  润新知