摘要:本文介绍了数组的基本概念和使用方法。数组是相同类型元素的有限集合,可分为一维、二维和多维数组,包括整型和字符型。重点讲解了一维整型数组的定义、访问方式、初始化和存储特点,强调元素下标从0开始且不能越界。文章提供了三个实践练习:查找最小值、查找最大值及其下标、数组元素倒置,并详细说明了倒置操作的交换规律。通过示例代码和注意事项,帮助读者掌握数组的基本操作和常见应用场景。
一、数组概念
1、定义:数组是一组相同类型有限个数的集合。数据类型相同,元素个数有限。
2、分类:
- 一维整型数组: int a[5];
- 二维整型数组: int a[2][3];
- 多维整型数组: int a [2][3][4]...[9];
- 一维字符型数组: char str [32];
- 二维字符型数组: char str [5][32];
二、一维整型数组
1、基本形式:数据类型 数组名[元素个数];
- 注意事项:元素个数必须为常量,常量表达式,不能为变量或者变量表达式
2、数组元素的访问:数组名[元素下标]
- 数组不能对整体操作,只能对单个元素操作;
- 元素下标可以是常量、变量或者表达式,必须为整形;
- 数组的元素下表是从零开始的;
- 数组元素不能越界访问,元素下标必须保证在 0 - 元素个数-1的范围;
3、数组元素的初始化:
- 默认初始化:int a[ ] = {1, 2, 3, 4, 5}; //不给定元素个数,通过给定初值的个数决定元素个数
- 局部初始化:int a[5] = {0}; //没有给定初值的元素全部给定默认值0
- 全部初始化:int a[5] = {1, 3, 5, 7, 9};
4、数据的存储:
- 连续性:数组存储空间连续;数组所占空间大小 = 每个元素所占空间大小 * 元素个数
- 有序性:数组中存放数据的顺序是有序的
5、 数组从终端接收值(for循环加scanf语句)
注意事项:sizeof用之前定义一下,scanf的取地址符&别忘了。
三、练习
1、小试牛刀: 从终端接收5个数,打印出这5个数中的最小值;(基础版)
ps:曲曲折折 折折曲曲;写出来了,原因分析前面的内容还是没有掌握。写的过程大问题小毛病很多。不过也是好事,能够发现问题然后改错。也是大智慧。(ps为个人碎碎念)
2、小试牛刀: 从终端接收5个数组,打印出这5个数组中的最大值并打印数组的元素的下标(plus版)
个人注解 :
(1)与基础版的区别是,我们此次求出来的是最大值数组元素的下标,就可以知道数组的最大 值数。但是像基础版的只知道数组最小值的数,我们推不出来数组元素的下标。(啰嗦版)
(2)数组元素下 (能推出) → 此时数组的值 反之不可以! (简洁版)
3、小试牛刀:从终端接受五个数组,实现数组元素倒置
个人注解:
五个数组倒置关系
(1)a[0] a[4] 进行交换 a[1]a[3] 进行交换 a[2] a[2] 进行交换
广义推广一下规律就是: a[i] a[len -i-1] 进行交换
(2)其次:3个数组,0 - 2换 4个数组,0 - 3换、1 - 2换 5个数组,0 - 4 换、1 - 3 换
仔细看循环换的条件是 int ‘len/2’ 取整