首页 > 编程笔记 > C语言笔记 阅读:8

C语言一维数组的用法(非常详细)

C语言中的一维数组实际上是一组相同类型数据的线性集合。其定义形式如下:
类型说明符 数组标识符[常量表达式];

例如,定义一个包含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;
}

运行程序,结果为:

篮球比赛的平均成绩是: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

相关文章