C语言一维数组的用法(非常详细)
C语言中的一维数组实际上是一组相同类型数据的线性集合。其定义形式如下:
例如,定义一个包含5个整型元素的数组,代码如下:
例如,引用数组 iArray 中的第 3 个变量,格式为 iArray[2]。其中,iArray 是数组变量名,2 为数组下标。
有的读者会问:为什么引用第 3 个数组元素使用的是下标 2 呢?这是因为数组下标是从 0 开始的,iArray[0] 表示第 1 个元素,iArray[1] 表示第 2 个数组元素,iArray[2] 表示第 3 个数组元素。
【实例】使用数组保存用户输入的手机号,并输出显示。
通过一个 for 循环,依次输入 11 位手机号码(用空格隔开),存储到各数组元素对应的地址中。这里,iArray[index] 就是对数组元素的引用,“&”为取地址符。
循环输出各数组元素,得到完整的手机号码。运行结果为:
1) 定义数组时直接对数组元素赋初值(数组元素值放在一对大括号中)。例如:
2) 如果只给一部分数组元素赋值,则未赋值的元素默认为被赋值 0。例如:
3) 当对全部数组元素都赋初值时,可以不指定数组长度。例如:
【实例】计算篮球平均成绩。记分员记录了某球员在 10 场篮球比赛中的成绩,求该球员的平均成绩。
运行程序,结果为:
【实例】输出插队之后的编号。体育课上,老师按身材高矮给 20 名同学编号。刚编完号,一位男生姗姗来迟,老师比对后将他排在 8 号位置,并重新排列后面的同学。使用数组,输出男生插队后有变化的学生编号。代码如下:
类型说明符 数组标识符[常量表达式];
- 类型说明符:表示数组中元素的类型。
- 数组标识符:表示该数组型变量的名称,命名规则与变量名一致。
- 常量表达式:定义了数组中存放的数据元素个数,即数组长度。
例如,定义一个包含5个整型元素的数组,代码如下:
int iArray[5];代码中的 int 为数组元素的类型,iArray 为数组变量名,括号中的 5 表示数组中包含 5 个元素。
C语言一维数组的引用
数组定义后,可以引用其中的数组元素,引用方式为“数组标识符[下标]”。例如,引用数组 iArray 中的第 3 个变量,格式为 iArray[2]。其中,iArray 是数组变量名,2 为数组下标。
有的读者会问:为什么引用第 3 个数组元素使用的是下标 2 呢?这是因为数组下标是从 0 开始的,iArray[0] 表示第 1 个元素,iArray[1] 表示第 2 个数组元素,iArray[2] 表示第 3 个数组元素。
注意,数组下标可以是整型常量或整型表达式。在数组 iArray[5] 中,只能使用 iArray[0]、iArray[1]、iArray[2]、iArray[3]、iArray[4],而不能使用 iArray[5]。若使用 iArray[5],则会出现下标越界错误。
【实例】使用数组保存用户输入的手机号,并输出显示。
#include <stdio.h> int main() { int iArray[11], index; /* 定义数组及变量为基本整型 */ printf("请输入手机号:\n"); /* 提示输入手机号 */ for (index = 0; index < 11; index++) /* 逐个输入手机号,保存为数组元素 */ { scanf("%d", &iArray[index]); } printf("手机号是:\n"); /* 输出手机号 */ for (index = 0; index < 11; index++) /* 循环输出数组中的元素 */ { printf("%d", iArray[index]); } printf("\n"); return 0; }定义 index 作为循环控制变量,定义数组 iArray[11] 用来保存 11 位手机号码。
通过一个 for 循环,依次输入 11 位手机号码(用空格隔开),存储到各数组元素对应的地址中。这里,iArray[index] 就是对数组元素的引用,“&”为取地址符。
循环输出各数组元素,得到完整的手机号码。运行结果为:
请输入手机号:
1 2 3 4 5 6 7 8 9 0 1
手机号是:
12345678901
C语言一维数组的初始化
一维数组的初始化,可以用以下 3 种方法实现。1) 定义数组时直接对数组元素赋初值(数组元素值放在一对大括号中)。例如:
int i,iArray[6]={1,2,3,4,5,6};定义和初始化之后,iArray[0]=1,iArray[1]=2,iArray[2]=3,iArray[3]=4,iArray[4]=5,iArray[5]=6。
2) 如果只给一部分数组元素赋值,则未赋值的元素默认为被赋值 0。例如:
int iArray[6]={0,1,2};数组 iArray 包含 6 个元素,但初始化时只给出了 3 个值,结果是数组前 3 个元素得到赋值,后 3 个元素被默认赋值为 0。
3) 当对全部数组元素都赋初值时,可以不指定数组长度。例如:
int iArray[]={1,2,3,4};上述代码的大括号中有 4 个元素,因此系统会默认为该数组变量的长度为 4。
【实例】计算篮球平均成绩。记分员记录了某球员在 10 场篮球比赛中的成绩,求该球员的平均成绩。
#include <stdio.h> int main() { int grade[10] = {12, 5, 21, 15, 32, 10, 25, 14, 30, 20}; /*定义数组,给出球员的10场比赛成绩*/ int total = 0; /*定义变量,表示总成绩*/ int i; float avg; /*定义变量,表示平均成绩*/ for(i = 0; i < 10; i++) /*循环累计总成绩*/ { total += grade[i]; } avg = (float)total / 10; /*计算平均成绩*/ printf("篮球比赛的平均成绩是:%f\n", avg); /*输出平均成绩*/ return 0; }
- 程序中首先定义一个数组 grade,初始化数值为 10 场球赛的成绩。
- 定义整型变量 total,用来保存总成绩;定义浮点型变量 avg,用来保存平均成绩。
- 接着通过一个 for 循环,控制循环变量使 10 场球赛成绩累加,相加结果赋给 total。
- 最后计算平均成绩,赋给 avg,并用 printf() 函数输出结果。
运行程序,结果为:
篮球比赛的平均成绩是:18.400000
C语言一维数组的应用
一个班级中往往有很多学生,使用数组来保存这些学生的姓名、编号等,管理起来非常方便。【实例】输出插队之后的编号。体育课上,老师按身材高矮给 20 名同学编号。刚编完号,一位男生姗姗来迟,老师比对后将他排在 8 号位置,并重新排列后面的同学。使用数组,输出男生插队后有变化的学生编号。代码如下:
#include <stdio.h> int main() { /*定义数组及变量为基本整型*/ int iArray[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}, index; int iArray1[21] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21}, index1; printf("体育老师按身材高矮排队编号,老师排好,编号是:\n"); /*提示信息*/ for (index = 0; index < 20; index++) /*循环输出插队前所有学生的编号*/ { printf("%d ", iArray[index]); } printf("\n"); printf("重新排列插队男生及后面的同学,他们的编号是:\n"); /*男生插入后,从8号开始重新编号*/ for (index1 = 7; index1 < 21; index1++) /*从下标7开始,循环输出后续编号*/ { printf("%d ", iArray1[index1]); } printf("\n"); return 0; }可以看出,要想从第 8 名同学开始编号,就应该从下标 7 开始。运行程序,结果为:
体育老师按身材高矮排队编号,老师排好,编号是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
重新排列插队男生及后面的同学,他们的编号是:
8 9 10 11 12 13 14 15 16 17 18 19 20 1