第十一章:一维数组


本章目标

  1. 为什么要使用数组?

  2. 掌握创建数组

  3. 掌握遍历数组

本章内容

1、为什么要使用数组?

  1. 问题:如果要求实现保存一个同学的成绩,我们用一个变量可以实现,如果要求保存全班50名学生的成绩,这样用什么来保存这50名学生的成绩呢?

  2. 分析:

    1. 定义50个变量来实现?不现实
    2. 还有其他方法吗?数组可实现

2、数组的概念

  1. 概念:

    数组是一个变量,存储相同数据类型的一组数据。

    数组是一个用来存储相同类型数据的、固定大小的、具有连续内存位置的顺序集合。数组中的每个元素都对应一个索引值,索引从 0 开始依次递增,我们可以通过索引来访问数组中的指定元素。

    1707233459851

  2. 数组的组成

    数组的四大要素:

    1. 标识符(变量名)
    2. 数组元素(存放的值)
    3. 元素下标:从0开始(索引)
    4. 元素类型(数据类型)

3、如何使用数组

  1. 声明数组

    在 C# 中声明一个数组的语法格式如下:

    1
    data_type[] array_name;

    其中,data_type 用来指定数组中元素的类型;[ ]用来指定数组的维度;array_name 为数组的名称。

    示例代码如下:

    1
    2
    int[] nums;//声明了一个int数组
    string[] names;//声明了一个string数组

    注意事项:

    声明数组时,不能指定数组长度

  2. 初始化数组(分配空间)

    1. 数组只有经过初始化后才可以为其中的每个元素赋值。因为数组是引用类型的,所以您需要使用 new 关键字来对数组进行初始化,例如:

      1
      2
      3
      4
      5
      int[] nums;
      nums=new int[5];//初始化,要指定数组存储的长度

      string[] strs;
      strs=new string[10];
    2. 声明数组且初始化

      1
      2
      int[] nums=new int[5];
      string[] strs=new string[10];

      提示:初始化数组的过程中,new int[10] 中[ ]里面的数字代表数组的长度,也就是数组中最多可以存放多少个元素,我们可以根据需要来设定数组的长度。

  3. 为数组元素赋值

    1. 通过下标,给元素赋值

      1
      2
      3
      int[] nums=new int[5];//创建数组
      nums[0]=10;//通过下标给数组赋值
      nums[1]=15;
    2. 创建数组时,直接给数组赋初始值

      1
      2
      3
      int[] nums=new int[]{1,3,5,7,9};
      int[] nums2=new int[5]{1,4,6,6,7};//长度必须和{}里面的数据相同
      int[] nums3={1,3,5,7,9};

      提示:当我们创建一个数组时,C# 的编译器会根据数组类型隐式的为数组中的每个元素初始化一个默认值。例如 int 类型的数组中所有元素都会被初始化为 0。

  4. 访问数组中的元素

    1. 通过数组的索引(也可称为下标)来访问数组中的指定元素,只需要在数组名的后面加上一个方括号[ ],并在其中填写对应的数组索引即可,如下所示:

      1
      2
      int[] nums=new int[]{1,3,5,7,9};
      int a=nums[0];//通过下标获取元素
    2. 通过for循环遍历数组

      1
      2
      3
      4
      5
      int[] nums = { 1, 4, 5, 7, 8, 9, 0 };
      for (int i = 0; i < nums.Length; i++)
      {
      Console.WriteLine(nums[i]);//通过下标访问数组的元素
      }

      说明:

      1. nums.Length:代表数组的长度

4、使用 foreach 遍历数组

  1. 作用:

    使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下:

  2. 语法:

    1
    2
    3
    foreach(数据类型 变量名 in 数组或集合对象){
        语句块;
    }

    foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到foreach( )里定义的变量中,直到所有元素都成功取出后退出循环。

  3. 【示例】使用 foreach 循环打印数组中的所有元素:

    1
    2
    3
    4
    5
    6
    7
    int[] nums = { 1, 4, 5, 7, 8, 9, 0 };
    foreach (int n in nums)
    {
    Console.WriteLine(n);
    }

    Console.ReadLine();
  4. 综合案例:

    【示例】使用 for 循环定义一个包含 1100 以内所有数字的数组,然后使用 foreach 循环计算 1100 以内所有数字的和:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int[] arr = new int[100];
    for (int i = 0; i < 100; i++)
    {
    arr[i] = i + 1;
    }
    int sum = 0;
    foreach (int j in arr)
    {
    sum = sum + j;
    }
    Console.WriteLine("1~100 以内数字的和为:{0}", sum);

    输出结果:

    1
    1~100 以内数字的和为:5050
  5. 综合练习题:

    【示例】有一个数列:8,4,2,1,23,344,12循环输出数列的值求数列中所有数值的和猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数

本章总结

  1. 什么是数组,数组的四大要素是什么?
  2. 使用数组的具体步骤是什么?
  3. 如何使用foreach遍历数组

课后作业

1.现有一组数(32,45,18,79,100,44,31,27,71,49),请输出对应奇数索引的数据.

2.现有一组数(32,45,18,79,100,44,31,27,71,49),请输出其中偶数的数量.

3.现有一组数(32,45,18,79,100,44,31,27,71,49),请计算对应偶数索引的数据之和

4.现有一组数(32,45,18,79,100,44,31,27,71,49),请计算对应偶数索引的数据的平均值.

5.现有一组数(18,27,31,32,40,45,49,71,79,100)请逆序输出所有数据.

6.现有一组数(18,27,31,32,40,45,49,71,79,100),请将首位互调位置后,再输出所有数据

7.现有一组数(18,27,31,32,40,45,49,71,79,100),请按如下方式互调位置后,再输出所有数据。
第一个<—–>倒数第一个
第二个<—–>倒数第二个
……

8.生成10个随机数(1-100)并存入数组,然后计算其偶数的数量,并打印数组中所有数据。

9.生成10个随机数(1-100)并存入数组,然后计算总和,并打印数组中所有数据。

10.生成10个随机数(1-100)并存入数组,然后计算其平均值,并打印数组中所有数据。

11.生成10个随机数(1-100)并存入数组,然后计算其最大值,并打印数组中所有数据。

12.生成10个随机数(1-100)并存入数组,然后计算其最小值,并打印数组中所有数据。

13.生成10个随机数(1-100)并存入数组,然后按从小到大排序后输出。

14.有一个数组已存数据(97,85,76),请输入一个1-100之间的整数,然后插入到合适位置,确保插入后仍是从大到小的顺序,最后输出数组中所有数据。

15.有一个数组已存数据(23,85,97,76,45),请输入要修改的数据(1-100)和修改后的数据(1-100),如果找到了,就执行修改,否则提示修改失败,最后输出数组中所有数据。

16.有一个数组已存数据(23,85,97,76,45),请输入要删除的数据(1-100),如果找到就删除,最后输出数组中所有数据。

17.用数组存储10个同学的姓名,然后实现随机点名的游戏。