2. 一维数组的索引
上一节我们学习了数组的定义。这节课我们来学习如何访问和修改数组中的数据元素。要使用数组,我们必须要了解数组的索引操作。
数组可以理解成现实中的火车,火车是一个整体,它是由每一节车厢组成的,每一节车厢是可以单独作为事物存在的。火车上每一节车厢都有一个唯一的编号:1、2、3、4、……,这个编号用于标记每一节车厢。我们在乘火车出行时,用车厢号可以快速定位一节车厢来乘车。我们可以认为车厢号就是火车的索引值。
索引(Index)是引用数组中单个元素的方法,通过索引我们可以得到数组中每个数据元素的引用(即其中的单个数据)。使用索引可以访问和修改数组中的数据元素。
索引的语法
数组[整数表达式]
说明:
- 此 整数表达式 叫索引值,用于表示数组中的数据元素的位置。
- 索引是一定是大于等于零的整数。
0表示第一个数据元素的位置,1表示第一个数据元素的位置,以此类推。 - 数组的索引由运算符(
[])、数组名和整数表达式组成。[]是一个二元运算符,此运算的返回值数组中的数据元素的引用。 - 数组的索引的整数表达式可以越界(大于等于数组长度),这时可能会访问到数组以外的数据,编译器不会报错,但可能会出现运行时的错误。
示例:
写一个程序,输入任意个学生的成绩,当成绩为负数时结束输入。打印已经输入的学生的成绩。
// 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 时结束输入。然后计算并打印如下信息:
- 打印平均年龄。
- 打印最小的学生年龄。
- 打印最大的学生年龄。