C语言程序设计 清华大学 郑莉安颖莲 第四讲数组的概念及应用 参考书:《C程序设计》第六章 Page 1
C语言程序设计 清华大学 郑莉 安颖莲 Page 1 第四讲 数组的概念及应用 参考书:《C程序设计》第六章
C语言程序设计 清华大学郑莉安颖莲 本讲主要内容 ·数组的概念 ·一维数组 ·二维及多维数组 字符数组 综合举例 Page 2
C语言程序设计 清华大学 郑莉 安颖莲 Page 2 本讲主要内容 • 数组的概念 • 一维数组 • 二维及多维数组 • 字符数组 • 综合举例
C语言程序设计 清华大学郑莉安颖莲 数组的概念 概念引入 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。 3名? 30名? Page 3
C语言程序设计 清华大学 郑莉 安颖莲 Page 3 数组的概念——概念引入 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。 3 名? 30 名?
C语言程序设计 清华大学郑莉安颖莲 数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型。 Page 4
C语言程序设计 清华大学 郑莉 安颖莲 Page 4 数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型
C语言程序设计 清华大学郑莉安颖莲 维数组 定义与引用 一 维数组的定义 类型说明符 数组名[常量表达式1: 数组名的构成方法与一般变量名相同。 可以是常量和符号常量,不能用变量。 例如:inta[l0] 表示a为整型数组,有10个元素:a[0].a[9] 引用 -必须先定义,后使用。 只能逐个引用数组元素,而不能一次引用整个数组。 例如:a[0]=a[5]+a[7]-a[2*3] Page 5
C语言程序设计 清华大学 郑莉 安颖莲 Page 5 一维数组 ——定义与引用 • 一维数组的定义 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10] 表示 a 为整型数组,有10个元素:a[0].a[9] 可以是常量 和 符号常量,不能用变量。 • 引用 - 必须先定义,后使用。 - 只能逐个引用数组元素,而不能一次引用整个数组。 例如:a[0]=a[5]+a[7]-a[2*3] 数组名的构成方法与一般变量名相同
C语言程序设计 清华大学郑莉安颖莲 维数组 存储顺序 数组元素在内存中顺次存放,它们的 地址是连续的。 例如:具有10个元素的数组a,在内存中的存放 次序如下: a a[0] a[1] a[2]a[3]a[4] a[5] a[]al7] a8]a9] 数组名字是数组首元素的内存地址。 数组名是一个常量,不能被赋值。 Page 6
C语言程序设计 清华大学 郑莉 安颖莲 Page 6 一维数组 ——存储顺序 数组元素在内存中顺次存放,它们的 地址是连续的。 例如:具有10个元素的数组 a,在内存中的存放 次序如下: 数组名字是数组首元素的内存地址。 数组名是一个常量,不能被赋值。 a a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
C语言程序设计 清华大学郑莉安颖莲 一维数组 初始化 可以在编译阶段使数组得到初值: -在定义数组时对数组元素赋以初值。 例如:static int a[10]={0,1,2,3,4,5,6,7,8,9}; 可以只给一部分元素赋初值。 例如:static int a[10]={0,1,2,3,4: static int b[10]={,1,3,5}; -不能给数组整体赋初值。 在对全部数组元素赋初值时,可以不指定数组长度。 例如:static int a[]={1,2,3,4,5}; 程序举例 Page 7
C语言程序设计 清华大学 郑莉 安颖莲 Page 7 一维数组 ——初始化 可以在编译阶段使数组得到初值: - 在定义数组时对数组元素赋以初值。 例如:static int a[10]={0,1,2,3,4,5,6,7,8,9}; - 可以只给一部分元素赋初值。 例如:static int a[10]={0,1,2,3,4}; static int b[10]={,1,3,5}; - 不能给数组整体赋初值。 - 在对全部数组元素赋初值时,可以不指定数组长度。 例如:static int a[]={1,2,3,4,5}; 程序举例
C语言程序设计 清华大学郑莉安颖莲 二维数组 定义及引用 。 二维数组的定义 类型说明符数组名[常量表达式][常量表达式] 例如:f1oata[3][4]; a0] aoo a01 a02 a03 可以理解为: a1] ·存储顺序 a1o a11 a12 a13 a[2] a20a21a22a23 按行存放,上例中数组a的存储顺序为: a00a01a02ao3a10a11a12a13a20a21a22a23 引用 例如:b[1][2]=a[2][3]/2; 下标不要越界 Page 9
C语言程序设计 清华大学 郑莉 安颖莲 Page 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; 下标不要越界
C语言程序设计 清华大学郑莉安颖莲 二维数组 初始化 ·分行给二维数组赋初值 例如:staticint a34]={1,2,3,4},{5,6,7,8},{9,10,11,12} ·将所有数据写在一个{}内,按顺序赋值 例如:static int a31[4]={1,2,3,4,5,6,7,8,9,10,11,12 可以对部分元素赋初值 例如:staticint a3]I4]={1},{0,6,0,0,11}; 程序举例 Page 10
C语言程序设计 清华大学 郑莉 安颖莲 Page 10 二维数组——初始化 • 分行给二维数组赋初值 例如:static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; • 将所有数据写在一个{}内,按顺序赋值 例如:static int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; • 可以对部分元素赋初值 例如:static int a[3][4]={{1},{0,6},{0,0,11}}; 程序举例
C语言程序设计 清华大学郑莉安颖莲 字符数组 ·定义和引用 程序举例1 程序举例2 。 字符串 -字符串常量,例如:"china” 一没有字符串变量,用字符数组来存放字符串 字符串以’\0°为结束标志 字符数组的初始化 例:static char str8]={112,114,111,103,114,97,109,0}; static char str[8]={'p','r','o','g','r','a','m',"\0%); static char str[8]="program"; static char str[]="program"; Page 12
C语言程序设计 清华大学 郑莉 安颖莲 Page 12 字符数组 • 定义和引用 例:static char str[8]={112,114,111,103,114,97,109,0}; static char str[8]={'p','r','o','g','r','a','m','\0'}; static char str[8]="program"; static char str[]="program"; • 字符串 - 字符串常量,例如:"china" - 没有字符串变量,用字符数组来存放字符串 - 字符串以'\0'为结束标志 • 字符数组的初始化 程序举例1 程序举例2