C语言程序设计 清华大学郑莉安颖莲 第四讲数组的概念及疝用 参考书:《C程序设计》第六章
C语言程序设计 清华大学 郑莉 安颖莲 Page 1 第四讲 数组的概念及应用 参考书:《C程序设计》第六章
C语言程序设计 清华大学郑莉安颖莲 本讲主要内容 数组的概念 维数组 二维及多维数组 字符数组 综合举例
C语言程序设计 清华大学 郑莉 安颖莲 Page 2 本讲主要内容 • 数组的概念 • 一维数组 • 二维及多维数组 • 字符数组 • 综合举例
C语言程序设计 清华大学郑莉安颖莲 数组的概念 概念引入 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序 3名? 30名?G
C语言程序设计 清华大学 郑莉 安颖莲 Page 3 数组的概念——概念引入 用基本数据类型可以解决所有问题吗? 例如:对某班学生的成绩按由高到底的次序进行排序。 3 名? 30 名?
C语言程序设计 清华大学郑莉安颖莲 数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型
C语言程序设计 清华大学 郑莉 安颖莲 Page 4 数组的概念 数组是具有一定顺序关系的若干相同 类型变量的集合体,组成数组的变量称为 该数组的元素。 数组属于构造类型
C语言程序设计 清华大学郑莉安颖莲 维数组 定义与引用 维数组的定义 类型说明符数组名[常量表达式1; 数组名的构成方法与一般变量名相同。可以是常量和符号常量,不能用变量。 例如:inta[10 表示a为整型数组,有10个元素:a[0].a[9] 引用 必须先定义,后使用。 只能逐个引用数组元素,而不能一次引用整个数组。 例如:a[0]=a[5]+a[7]-a[2*3]
C语言程序设计 清华大学 郑莉 安颖莲 Page 5 一维数组 ——定义与引用 • 一维数组的定义 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10] 表示 a 为整型数组,有10个元素:a[0]...a[9] 可以是常量 和 符号常量,不能用变量。 • 引用 - 必须先定义,后使用。 - 只能逐个引用数组元素,而不能一次引用整个数组。 例如:a[0]=a[5]+a[7]-a[2*3] 数组名的构成方法与一般变量名相同
C语言程序设计 清华大学郑莉安颖莲 维数组 存储顺序 数组元素在内存中顺次存放,它们的 地址是连续的。 例如:具有10个元素的数组a,在内存中的存放 次序如下: aaaa2】3] a[4] a[5]a[6]a[7] a[8a9 数组名字是数组首元素的内存地址 数组名是一个常量,不能被赋值
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]=10,1,2,3,4} static int b[10=,1,,3,, 5h 不能给数组整体赋初值。 在对全部数组元素赋初值时,可以不指定数组长度。 例如: static int a[]={1,2,3,4,5} 程序举例
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语言程序设计 清华大学郑莉安颖莲 二维数组 定义及引用 二维数组的定义 类型说明符数组名[常量表达式][常量表达式1 例如: float a[3][4]; aol Aoo ao1 a 02 ao3 可以理解为: aa 存储顺序 a[2]a20a21a2a23 按行存放,上例中数组a的存储顺序为: aoo ao1 a02 a03 aio al a12 a13 a20 a21 a22 a23 引用 例如:b[1[2]=a[2][3]/2; 下标不要越界
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语言程序设计 清华大学郑莉安颖莲 二维数组 初始化 分行给二维数组赋初值 例如: static int a314={1,2,3,4},{5,6,7,8},⑨,10,11,12分} 将所有数据写在一个内,按顺序赋值 例如: static int al341={1,2,3,4,5,6,7,8,9,10,1112} 可以对部分元素赋初值 例如: static int a34={1},{0.,6},{0,0,1} 程序举例
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,1,103,1,97,109,0} static char str8={p’,r';o',g,'r',"a",m’;"0”}; static char str=program"; static char str[="program";
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