2. 一维数组的索引

上一节我们学习了数组的定义。这节课我们来学习如何访问和修改数组中的数据元素。要使用数组,我们必须要了解数组的索引操作。

数组可以理解成现实中的火车,火车是一个整体,它是由每一节车厢组成的,每一节车厢是可以单独作为事物存在的。火车上每一节车厢都有一个唯一的编号:1、2、3、4、……,这个编号用于标记每一节车厢。我们在乘火车出行时,用车厢号可以快速定位一节车厢来乘车。我们可以认为车厢号就是火车的索引值。

索引(Index)是引用数组中单个元素的方法,通过索引我们可以得到数组中每个数据元素的引用(即其中的单个数据)。使用索引可以访问和修改数组中的数据元素。

索引的语法

数组[整数表达式]

说明:

  1. 整数表达式 叫索引值,用于表示数组中的数据元素的位置。
  2. 索引是一定是大于等于零的整数。0 表示第一个数据元素的位置,1 表示第一个数据元素的位置,以此类推。
  3. 数组的索引由运算符([])、数组名和整数表达式组成。[] 是一个二元运算符,此运算的返回值数组中的数据元素的引用。
  4. 数组的索引的整数表达式可以越界(大于等于数组长度),这时可能会访问到数组以外的数据,编译器不会报错,但可能会出现运行时的错误。

示例:

写一个程序,输入任意个学生的成绩,当成绩为负数时结束输入。打印已经输入的学生的成绩。

// filename: 1d_array_index.c
#include <stdio.h>

int main(int argc, char *argv[]) {
    int student_count = 0; // 用来记录学生人数
    unsigned int scores[100];  // 最多保存 100个学生的信息。

    for (int i = 0; i < 100; i++) {
        int scor;
        printf("请输入成绩:");
        scanf("%d", &scor);
        if (scor < 0) // 停止输入
            break;
        scores[i] = scor;  // 保存成绩到数组中
        student_count++;// 人数+1;
    }
    // 打印学生的编号,成绩和年龄
    for (int i =0; i < student_count; i++) {
        printf("第 %d 个学生的成绩是: %d\n", i+1, scores[i]);
    }

    return 0;
}

运行结果如下:

weimingze@mzstudio:~$ gcc -o 1d_array_index 1d_array_index.c
weimingze@mzstudio:~$ ./1d_array_index
请输入成绩:100
请输入成绩:99
请输入成绩:98
请输入成绩:-1
第 1 个学生的成绩是: 100 2 个学生的成绩是: 99 3 个学生的成绩是: 98

练习:

写一个程序,使用数组存储多个学生的年龄(学生数量不超过 100 人),当输入学生年龄为 0 时结束输入。然后计算并打印如下信息:

  1. 打印平均年龄。
  2. 打印最小的学生年龄。
  3. 打印最大的学生年龄。