嵌入式学习——C语言基础——day6

1. 一维数组的定义

相同类型有限数据的一个集合

数据类型 数组名元素个数;

注意:

  1. 数组中的元素必须为同一类型

  2. 元素个数有限个

  3. 数组定义时,元素个数必须为常量或者常量表达式,不能为变量

2. 数组元素的访问

数组名元素下标

元素下标可以为常量、变量、或常量变量表达式

3. 数组元素的初始化

3.1 全部初始化

int a5 = {1, 2, 3, 4, 5};

3.2 局部初始化

int a5 = {1, 2, 3};

没有给定初值的元素统一给0值

3.3 默认初始化

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

注意:初始化 不等同于 赋值

4. 数组的储存

4.1 连续性

数组存储空间连续

4.2 有序性

数组存放顺序有序

注意:计算元素个数方法 sizeof(a) / sizeof(a0);

5. 数组的常见操作

5.1 获得最大值

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int min = 0;
    int len = sizeof(a) / sizeof(a[0]);

    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    max = a[0];
    for (i = 1; i < len; i++)
    {
        if (a[i] > max)
        {
            min = a[i];
        }
    }

    printf("max = %d\n", max);

    return 0;
}

5.2 获得最小值

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int min = 0;
    int len = sizeof(a) / sizeof(a[0]);

    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    min = a[0];
    for (i = 1; i < len; i++)
    {
        if (a[i] < min)
        {
            min = a[i];
        }
    }

    printf("min = %d\n", min);

    return 0;
}

5.3 获得最大值下标

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int max = 0;
    int len = sizeof(a) / sizeof(a[0]);

    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    max = a[0];
    for (i = 1; i < len; i++)
    {
        if (a[i] > max)
        {
            max = i;
        }
    }

    printf("max = %d\n", max);

    return 0;
}

5.4 获得最小值下标

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int min = 0;
    int len = sizeof(a) / sizeof(a[0]);

    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    min = a[0];
    for (i = 1; i < len; i++)
    {
        if (a[i] < min)
        {
            min = i;
        }
    }

    printf("min = %d\n", min);

    return 0;
}

5.5 数组元素倒置

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int tmp = 0;
    int len = sizeof(a) / sizeof(a[0]);

    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < len/2; i++)
    {
        tmp = a[i];
        a[i] = a[len-1-i];
        a[len-1-i] = tmp;
    }

    for (i = 0; i < len; i++)
    {
        printf("%d ", a[i]);
    }
    putchar('\n');

    return 0;
}

5.6 冒泡排序法

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int j = 0;
    int len = sizeof(a) / sizeof(a[0]);
    int tmp = 0;
    
    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < len-1; i++)              //min -> max
    {
        for (j = 0; j < len-1-i; j++)     
        {
            if (a[j] > a[j+1])
            {
                tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;
            }
        }
    }

    for (i = 0; i < len; i++)
    {
        printf("%d ", a[i]);
    }
    putchar('\n');

    return 0;
}

5.7 选择排序法

cpp 复制代码
#include <stdio.h>

int main(void)
{
    int a[5] = {0};
    int i = 0;
    int j = 0;
    int len = sizeof(a) / sizeof(a[0]);
    int tmp = 0;
    int min = 0;
    
    for (i = 0; i < len; i++)
    {
        scanf("%d", &a[i]);
    }

    for (i = 0; i < len-1; i++)              //min -> max
    {
        min = i;
        for (j = i+1; j < len; j++)     
        {
            if (a[j] < a[min])
            {
                min = j;
            }
        }

        if (min != i)
        {
            tmp = a[min];
            a[min] = a[i];
            a[i] = tmp;
        }
    }

    for (i = 0; i < len; i++)
    {
        printf("%d ", a[i]);
    }
    putchar('\n');

    return 0;
}
相关推荐
世人万千丶43 分钟前
鸿蒙Flutter Flex多子组件权重分配
学习·flutter·华为·harmonyos·鸿蒙
GuWenyue1 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
优橙教育1 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
我叫洋洋2 小时前
C ++ [ hello world ]
c语言·c++·算法
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
天空'之城3 小时前
C 语言工业级通用组件手写 09:CRC32 数据校验
c语言·嵌入式开发·数据校验·crc32·工业级组件
圣光SG4 小时前
Servlet学习笔记
笔记·学习·servlet
奋发向前wcx4 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
Marst Code4 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python