C语言程序设计 第6章数组 八此京故太受计算机系
1 第6章 数 组 北京科技大学 计算机系 C 语言程序设计
第6数组 本章重点介绍: 61一维数组 62二维数组 63字符数组与字符串 2021/2/24
2021/2/24 第 2 6章 数组 本章重点介绍 : 6.1 一维数组 6.2 二维数组 6.3 字符数组与字符串
第6数组 一个人N门课的成绩怎样存储和处理? ●一个班N门课的成绩怎样存储和处理? 这些数据的特点:具有相同的数据类型 为了方便地使用这些数据,C语言提供了 种构造数据类型:数组。 例如:存储学生成绩用实型数组 score[5] 其中: score是数组名。该数组可以存放5个成绩, 分别用下标变量表示: score[0], score[1],“ score[4]。 下标变量也称为数组元素 2021/2/24
2021/2/24 第 3 6章 数组 ⚫ 一个人N门课的成绩怎样存储和处理? ⚫ 一个班N门课的成绩怎样存储和处理?...... 这些数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C语言提供了一 种构造数据类型:数组。 例如:存储学生成绩用实型数组 score[5] 其中:score是数组名。该数组可以存放5个成绩, 分别用下标变量表示: score[0],score[1],…score[4]。 下标变量也称为数组元素
61—维数组 611一维数组的定义 数据类型数组名常量表达式; 例如:inta[0 float scores “数据类型”:是数组元素的数据类型 “数组名”:遵循C语言标识符规则。 “常量表达式”:表示数组中有多少个元素,即数 组的长度。它可以是整型常量、整型常量表达式 或符号常量。 2021/2/24
2021/2/24 4 6.1 一维数组 例如: int a[10]; float score[5]; “数据类型”: 是数组元素的数据类型。 “数组名”: 遵循C语言标识符规则。 “常量表达式”:表示数组中有多少个元素,即数 组的长度。它可以是整型常量、整型常量表达式 或符号常量。 6.1.1 一维数组的定义 数据类型 数组名[常量表达式];
611—维数组的定义(续) 以下数组定义是正确的: define n 10 float scorelN, score2NB int num 10+NB char c26 以下数组定义是不正确的 int array(10); int n; float scoren double b'a"∴.'d" char strl 2021/2/24
2021/2/24 5 以下数组定义是正确的: #define N 10 …… float score1[N], score2[N]; int num[10+N]; char c[26]; 以下数组定义是不正确的: int array(10); int n; float score[n]; double b['a'.. 'd']; char str[ ]; 6.1.1 一维数组的定义(续)
数组在内存的存放 ●数幻下标从0开蛤。 score数组 一维数组的激组元豪低地址 score[0J 在內存里按顺序存放。 91.5 数组名代表数组的 34.5 score[ 1I 地址,即 scorel的值 67.5 score 与 scorer的地址 72.0 score 值相同。 高地址84.0 scorel4 2021/2/24
2021/2/24 6 数组在内存的存放 ⚫ 数组下标从0开始。 ⚫ 一维数组的数组元素 在内存里按顺序存放。 ⚫ 数组名代表数组的首 地址,即score的值 与score[0] 的地址 值相同。 score[0] score[1] score[2] score[3] score[4] 91.5 34.5 67.5 72.0 84.0 低地址 高地址 score数组
612数组元素的引用 格式: 数组名下标表达式 例如:输入学生成绩 for(i=0;i<5;H++) scanf(%f, &scoreiD) 例如:fbm=fbn-1H+fib|n-2 下标表达式的值必须是整型表达式。 2021/2/24
2021/2/24 7 6.1.2 数组元素的引用 格式: 例如:输入学生成绩 for(i=0;i<5;i++) scanf("%f" ,&score[i]); 例如:fib[n]=fib[n-1]+fib[n-2]; 下标表达式的值必须是整型表达式。 数组名[下标表达式]
612数组元素的引用(续) 8 说明: ①下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10; scanf("d"&a0×/下标越界*/ C编译系统不做越界检查,如果引用的数组元素 超出数组范围会破坏其他变量的值。 2021/2/24
2021/2/24 8 6.1.2 数组元素的引用(续) 说明: ① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10]; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查,如果引用的数组元素 超出数组范围会破坏其他变量的值
612数组元素的引用(续) 如引用 score|2|: ②是下标运算符,(1)计算2000+2*4=2008 引用数组元素时, (2)取出2008的内容 根据数组的首地址 score 和下标数,计算出 2000 H 915 该元素的实际地址, 2004L345 score 2008H67.5 score[2 1取出该地址的内容200|72.0sr3l 进行操作。 218c H 84.0 score 2021/2/24
2021/2/24 9 6.1.2 数组元素的引用(续) ② [ ]是下标运算符, 引用数组元素时, 根据数组的首地址 和下标数,计算出 该元素的实际地址, 取出该地址的内容 进行操作。 如引用 score[2]: (1)计算 2000+2*4=2008 (2)取出2008的内容 2000H 2004H 2008H 200CH 218CH score[0] score[1] score[2] score[3] score[4] 91.5 34.5 67.5 72.0 84.0
613—维数组的初始化 10 初始化:在定义数组时给数组元素赋初值。 1.在定义数组时,对全部数组元素赋初值 例如:inta5}={0.,1,2,3,4}; 此时可以省略数组长度,例如:inta|={0,1,2,3,4}; 2.在定义数组时,对部分数组元素赋初值 例如:inta5]}={1,2,3};系统为其余元素赋0。 3.当初值的个数多于数组元素的个数时,编译出错 例如:inta5=0,2,3,4,5}; 2021/2/24
2021/2/24 10 6.1.3 一维数组的初始化 初始化:在定义数组时给数组元素赋初值。 1.在定义数组时,对全部数组元素赋初值 例如:int a[5]={0,1,2,3,4}; 此时可以省略数组长度,例如:int a[ ]={0,1,2,3,4}; 2.在定义数组时,对部分数组元素赋初值 例如:int a[5]={1,2,3};系统为其余元素赋 0 。 3.当初值的个数多于数组元素的个数时,编译出错 例如: int a[5]={0,1,2,3,4,5};