七章数组的概念及应用
1 第七章 数组的概念及应用
本讲主要内容 数组的概念 一维数组 二维及多维数组 ■字符数组 综合举例
2 本讲主要内容 ◼ 数组的概念 ◼ 一维数组 ◼ 二维及多维数组 ◼ 字符数组 ◼ 综合举例
数组的概念 概念引入 用基本数据类型可以解决所有问题吗? 例如:某班学生的成绩按由高到底的次序进 行排序。 3名? 30名? 3
3 数组的概念——概念引入 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进 行排序。 3 名? 30 名?
数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型
4 数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型
维数组 一定义与引用 维数组的定义 类型说明符数组名常量表达式] 数组名的构成方法与一般变量名相同。可以是常量和符号常量,不能用变量。 例如:inta[10] 表示a为整型数组,有10个元素:a[0].a[9] 引用 必须先定义,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0=a[5]+a[7-a[2*3
5 一维数组 ——定义与引用 ◼ 一维数组的定义 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10] 表示 a 为整型数组,有10个元素:a[0]...a[9] 可以是常量 和 符号常量,不能用变量。 引用 必须先定义,后使用。 只能逐个引用数组元素,而不能一次引用整个数组。 例如:a[0]=a[5]+a[7]-a[2*3] 数组名的构成方法与一般变量名相同
一维数组 存储顺序 数组元素在内存中顺次存放,它们的 地址是连续的 例如:具有10个元素的数组a,在内存中 的存放次序如下: a a[0] a[l] a[2] a[3] a[4] a[5] a[6] a[7 a[ 8] a[9] 数组名字是数组首元素的内存地址。 数组名是一个鸴量,不能被赋值
6 一维数组 ——存储顺序 数组元素在内存中顺次存放,它们的 地址是连续的。 例如:具有10个元素的数组 a,在内存中 的存放次序如下: 数组名字是数组首元素的内存地址。 数组名是一个常量,不能被赋值。 a a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
维数组 初始化 可以在编译阶段使数组得到初值: 在定义数组时对数组元素赋以初值 例如:inta[10]={0,1,2,3,4,5,6,78,9} ■可以只给一部分元素赋初值 例如:inta[10]={0,1,2,34} intb[10=135} 不能给数组整体赋初值。 ■在对全部数组元素赋初值时,可以不指定数组长度。 例如:inta={1,2,345}; 程序举例
7 一维数组——初始化 可以在编译阶段使数组得到初值: ◼ 在定义数组时对数组元素赋以初值。 例如:int a[10]={0,1,2,3,4,5,6,7,8,9}; ◼ 可以只给一部分元素赋初值。 例如:int a[10]={0,1,2,3,4}; int b[10]={,1,,3,,5}; ◼ 不能给数组整体赋初值。 ◼ 在对全部数组元素赋初值时,可以不指定数组长度。 例如: int a[]={1,2,3,4,5}; 程序举例
二维数组 定义及引用 维数组的定义 类型说明符数组名[常量表达式I常量表达式 例如: float a[3[4]; doo ao1 a02 a03 可以理解为: 存储顺序 a a[1]--a10 a11 a12 a13 按行存放,上例中数组a的召顺序男21233 aoo ao1 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 引用 例如:b[12]=a[2][3]/2; 下标不要越界
9 存储顺序 按行存放,上例中数组a的存储顺序为: 二维数组——定义及引用 ◼ 二维数组的定义 类型说明符 数组名[常量表达式][常量表达式] 例如:float a[3][4]; a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23 a[0]——a00 a01 a02 a03 a[1]——a10 a11 a12 a13 a[2]——a20 a21 a22 a23 可以理解为: a 引用 例如:b[1][2]=a[2][3]/2; 下标不要越界
二维数组 初始化 ■分行给二维数组赋初值 例如:inta[3[4={12,34}{5,6,7,8},{9,10,11,12}} 将所有数据写在一个{}内,按顺序赋值 例如:inta[3[4={1,2,34,5,6,7.8,9,10,11,12} 可以对部分元素赋初值 例如:inta[3[4={1}{0,6},{0,0,11}; 程序举例 10
10 二维数组——初始化 ◼ 分行给二维数组赋初值 例如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ◼ 将所有数据写在一个{}内,按顺序赋值 例如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; ◼ 可以对部分元素赋初值 例如:int a[3][4]={{1},{0,6},{0,0,11}}; 程序举例
字符数组 定义和引用 程序举例1 程序举例2 用来存放字符数据的数组。 Char c[10]={I,”a,m2,2,h,a’,p',p',’y} 注意:初值的字符个数应小于或等于数组长度如果初值个数小于数 组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自 动定为空字符(即”\0) Char clEfT,,a','m,,h,,a',p,,p,y 表示初值的个数即为数组的长度
12 字符数组 ◼ 定义和引用 用来存放字符数据的数组。 Char c[10]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’} 注意:初值的字符个数应小于或等于数组长度,如果初值个数小于数 组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自 动定为空字符(即'\0') Char c[]={‘I’,’’,’a’,’m’,’’,’h’,’a’,’p’,’p’,’y’} 表示初值的个数即为数组的长度 程序举例1 程序举例2