C语言-数组

数组定义

同一类型的变量——元素(element)集中在一起,在内存上排列成一条直线,这就是数组。

元素的类型既可以是int类型,也可以是double类型。

数组的声明

数组的声明通过指定的元素类型,变量名,元素个数。另外[ ]中的元素个数必须是常量。

图示:

数组的特点

类型相同的元素组成的集合。
空间连续

取元素的个数

数组的总大小=元素的个数 * 每个元素的大小

数组名arr作为类型时候,数组的总大小 == sizeof(arr)
每个元素的大小 == sizeof(arr[0])
元素的个数 = sizeof(arr)/sizeof(arr[0]);

代码示例

#include <stdio.h>

int main() {
    // 定义数组
    int arr[5];
    int n = sizeof(arr) / sizeof(arr[0]);//元素的个数
    printf("元素个数:%d\n", n);

    //数组的下标:0~4   arr[0]  arr[1] ...arr[4]
     printf("sizeof(arr) = %u\n",sizeof(arr));//20
     printf("sizeof(arr[0]) = %u\n",sizeof(arr[0]));//4

     // 2.遍历数组
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
     printf("\n");
    return 0;
}

数组初始化

初始化全部元素

#include <stdio.h>
int main() {
    // 数组初始化
    int a[5] = {1,2,3,4,5};
    int b[5] = {1,2,3};
    return 0;
}

初始化部分元素

int a[10] = {1, 2, 4, 5}

定义的时候不加元素个数

int a[] = {1,2,3,4,5,6}

注意

  • 数组一定要初始化。
  • 最终数组的元素个数由初始化的数据个数决定。

元素访问

遍历数组

代码示例

#include <stdio.h>

int main() {
    // 1.数组初始化
    int arr[] = {10,20,30,40,50};
    // 2.元素的个数
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("n = %d\n",n);

    // 遍历数组
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    return 0;
}

一维数组案例

定义数组,获取键盘录入,求出数组的平均值 最大 最小 值

#include <stdio.h>

int main() {
    // 定义数组
    int arr[5] = {0};
    // 元素的个数
    int n = sizeof(arr) / sizeof(arr[0]);

    //获取键盘输入
    printf("请输入%d个整数\n", n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }

    //求平均值
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        //累加每个元素的值
        sum += arr[i];
    }
    printf("arr数组的平均值:%d\n", sum/n);

    //求最大值
    int max = arr[0];
    for (int i = 0; i < n; i++)
    {
        if (max < arr[i])
        {
            max = arr[i];
        }
    }
    printf("max= %d\n", max);


    //求最小值
    int min = arr[0];
    for (int i = 0; i < n; i++)
    {
        if (min > arr[i])
        {
            min = arr[i];
        }
    }
    printf("min= %d\n", min);
    return 0;
}

元素互换

一位数值数组 逆置 (前后元素交换位置)

图示

代码示例

#include <stdio.h>

int main() {
    int arr[5] = { 0 };
    int n = sizeof(arr) / sizeof(arr[0]);

    //获取键盘输入
    printf("请输入%d个int数据:\n", n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }

    //交换
    for (int i = 0, j = n-1 ; i < j; i++, j--)
    {
        int tmp = 0;
        tmp  = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

    //遍历
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
posted @ 2020-05-17 14:24  guardwhy  阅读(250)  评论(0编辑  收藏  举报