内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.2

内蒙古科技大学 教 案 课程名称:C语言程序设计 编写时间:2014年2月16日 授课章节 第六章数组$6.2 目的要求 掌握数组的定义、引用和初始化 重点难点 数组名的特殊含义 教学内容 62掌握数组的定义、引用和初始化 一、数组的定义 在程序设计中,常常需要大量相同数据类型的变量来保存数据,若采用简单变 量的定义方式,则需要大量不同的标识符作为变量名,并且这些变量在内存中的存 放是随机的,随着这种变量的增多,组织和管理好这些变量会使程序变得复杂。对 于这种情况,一种较好的解决办法就是使用数组 数组是一些具有相同类型的数据的集合,数组中的数据称为数组元素,各数组 元素在内存中按照一定的顺序连续存放。同一数组中的每个元素都具有相同的数据 类型和相同名称即数组名,各元素间的区分是用不同的下标序号来表示的。 数组分为一维数组、二维数组、三维数组等。C语言允许使用任意维数的数组 数组的定义一般形式为: 给出数组定义 类型数组名下标1下标2下标 般格式。 【功能说明】 【类型】用于声明数组的基类型(Base Type),即数组元素的类型:【数组名】 用于标识该数组:【下标】的个数表明数组的维数:【下标】值表示相应维的长度。 例如:一维数组定义short score[100: 二维数组定义 cj[5][5: 第1次第1页
内 蒙 古 科 技 大 学 教 案 课程名称: C 语言程序设计 编写时间:2014 年 2 月 16 日 授课章节 第六章 数组 $6.2 目的要求 掌握数组的定义、引用和初始化 重点难点 数组名的特殊含义 教学内容 6.2 掌握数组的定义、引用和初始化 一、数组的定义 在程序设计中,常常需要大量相同数据类型的变量来保存数据,若采用简单变 量的定义方式,则需要大量不同的标识符作为变量名,并且这些变量在内存中的存 放是随机的,随着这种变量的增多,组织和管理好这些变量会使程序变得复杂。对 于这种情况,一种较好的解决办法就是使用数组。 数组是一些具有相同类型的数据的集合,数组中的数据称为数组元素,各数组 元素在内存中按照一定的顺序连续存放。同一数组中的每个元素都具有相同的数据 类型和相同名称即数组名,各元素间的区分是用不同的下标序号来表示的。 数组分为一维数组、二维数组、三维数组等。C 语言允许使用任意维数的数组。 数组的定义一般形式为: 类型 数组名[下标 1][下标 2].[下标 n] 【功能说明】 【类型】用于声明数组的基类型(Base Type),即数组元素的类型;【数组名】 用于标识该数组;【下标】的个数表明数组的维数;【下标】值表示相应维的长度。 例如:一维数组定义 short score[100] ; 二维数组定义 cj[5][5]; 给出数组定义一 般格式。 第 1 次 第 1 页

内蒙古科技大学 教 案(续页) 、数组的引用 数组的引用方式为: 数组名下标1下标2小下标: 以一维数组为例:数组名表达式 道明 (1)表达式用于指示数组元素的序号, 也称为下标。可以是一个整数,也可以是 一个整型表达式。 (2)下标的取值从0开始。如数组长度为,则该数组n个数组元素的正确下标 范围是0-n-1。例如,以上所定义的两个数组: core数组的各元素依次为:score0、scor小、score8、score9I d0 text [1] text [18]text [19] (3》一个数组一旦被定义,编译器将为其分配一个连续的存储空间,以便将所有 数组元素顺序地存储在这个空间中。定义数组时所使用的数据类型决定了每个数 组元素所占用存储空间的大小。 例如,有定义: int al61 编译器则为数组a分配的存储区恰好能存放6个整型数据,也就是说,它占的存 储空间相当于6个整型变量所用的空间。具体安排情况如图61所示。 a[0]a[1]a[2]a[3]a[4]a[5] 数组a的起始存储,即首地址 图6.1数组a6的分配方式 (4)数组元素引用中的中括号[]是下标运算符。下标运算符[]是C语言中优 先级最高的运算符之一。数组元素的访问是一种基本表达式,即下标表达式。例 如,上面所定义的score数组,如在程序中使用scoe2]则score2]就是一个下 标表达式,可以写在 访问数 score 中编号为2的元素 (5)C语言的编译器通常不检查数组元素访问的合法性。用超出数组的合法 下标范围的表达式进行元素访问的情况称为数组的越界访问,这是使用数组的程 序里最常见的一种语义错误。由于超出下标值正常范围的数组元素所用的存储空 间并非系统分配给该数组的,所以对这些存储单元进行存取数据的话,引起的后 果无法预料。因此,在写访问数组元素的下标表达式时,应当十分小心, 防止越 界访问。 例如:如果有定义语句: int a6]; 那么系统会为a数组分配存放6个整型数据的连续空间,这些 存储空间是系统分配给数组a的合法空间,分别为a0)、a1]、a[2]、a[3]、a[4]、 [5]所占用,也即0-5是访问该数组中元素的合法下标范围, 若使用了超出该范 围的下标 ,如a,就是越界访问了。 (6)数组元素具有普通变量的特征,但数组的真正意义不仅仅在于此,而是 它能使我们用统一的方式描述一组数据。下标表达式可以是任何整数值的表达式, 其中也允许包含变量,因此产生了新的功能。例如可以写: 景[1]地[2L在执行时,这个语句访问的是哪三个数组元素,戴 如果改变下 表达式里变量的值, 同 一个访问数组 元素的语句 在每次执行时,访问的就可能是数组的不同元素。把这种语句写在循环里,就可 以访问数组里的一批元素甚至是全部元素。 第1次 第2页
内 蒙 古 科 技 大 学 教 案(续页) 二、数组的引用 数组的引用方式为: 数组名[下标 1][下标 2].[下标 n]; 以一维数组为例:数组名[表达式] 说明: (1)表达式用于指示数组元素的序号,也称为下标。可以是一个整数,也可以是 一个整型表达式。 (2)下标的取值从 0 开始。如数组长度为 n,则该数组 n 个数组元素的正确下标 范围是 0~n-1。例如,以上所定义的两个数组: score 数组的各元素依次为:score[0]、score[1]、.、score[8]、score[9]。 text 数组的各元素依次为:text[0]、text [1]、.、text [18]、text [19]。 (3)一个数组一旦被定义,编译器将为其分配一个连续的存储空间,以便将所有 数组元素顺序地存储在这个空间中。定义数组时所使用的数据类型决定了每个数 组元素所占用存储空间的大小。 例如,有定义:int a[6]; 编译器则为数组 a 分配的存储区恰好能存放 6 个整型数据,也就是说,它占的存 储空间相当于 6 个整型变量所用的空间。具体安排情况如图 6-1 所示。 图 6.1 数组 a[6]的分配方式 (4)数组元素引用中的中括号[ ]是下标运算符。下标运算符[ ]是 C 语言中优 先级最高的运算符之一。数组元素的访问是一种基本表达式,即下标表达式。例 如,上面所定义的 score 数组,如在程序中使用 score [2], 则 score [2]就是一个下 标表达式,可以写在任何表达式里,表示访问数组 score 中编号为 2 的元素。 (5)C 语言的编译器通常不检查数组元素访问的合法性。用超出数组的合法 下标范围的表达式进行元素访问的情况称为数组的越界访问,这是使用数组的程 序里最常见的一种语义错误。由于超出下标值正常范围的数组元素所用的存储空 间并非系统分配给该数组的,所以对这些存储单元进行存取数据的话,引起的后 果无法预料。因此,在写访问数组元素的下标表达式时,应当十分小心,防止越 界访问。 例如:如果有定义语句: int a[6]; 那么系统会为 a 数组分配存放 6 个整型数据的连续空间,这些 存储空间是系统分配给数组 a 的合法空间,分别为 a[0]、a[1]、a[2]、a[3]、a[4]、 a[5]所占用,也即 0~5 是访问该数组中元素的合法下标范围,若使用了超出该范 围的下标值,如 a[6],就是越界访问了。 (6)数组元素具有普通变量的特征,但数组的真正意义不仅仅在于此,而是 它能使我们用统一的方式描述一组数据。下标表达式可以是任何整数值的表达式, 其中也允许包含变量,因此产生了新的功能。例如可以写: b[i]=b[i-1]+b[i-2] 在执行时,这个语句访问的是哪三个数组元素,就要看 变量 i 当时的值。如果改变下标表达式里变量的值,同一个访问数组元素的语句 在每次执行时,访问的就可能是数组的不同元素。把这种语句写在循环里,就可 以访问数组里的一批元素甚至是全部元素。 第 1 次 第 2 页 a 数组 a 的起始存储,即首地址 a[0] a[1] a[2] a[3] a[4] a[5]

内蒙古科技大学 教 案(续页) 三、数组的初始化 数组定义时就给元素赋值,元素的初始值在“=”号后面用一对花括号括起 来的初始化列表中给出。 维数组常见的初始化形式,例如: 举例说明 (1)Dint score[10F1,2,3,45,6,7,8.9,10y (2))int score[10F(1,2,3,4,5}: (3)int score[10]0); (4)float x[3F{1.5,2.46,5.12 定义了包含3个元素的浮点型数组x,同时给这3个元素x0、x山和x2 顺序地指定了初始值1.5,2.46和5.12 例如: char c[5]=(h','e'.I',I','o') 定义了包含5个元素的字符型数组c,同时给c0c[4]这5个元素顺序地指 定了初始值h,e',里,P和o'。 说明: (1)数组元素的初值表达式必须是常量表达式,对自动数组的初始化也只 允许运用常量表达式。这个规定与简单变量初始化的规定不同。 (2)C语言也允许只给数组的前几个元素指定初值。这时,所有未指定值 的元素就会自动初始化为0。 应用举例:从己有的10个数中查找指定的数,查找成功,则输出该数所在的位置:若 查找失败,则输出相应信息。 【程序点拨】已有10个数可通过初始化方式存在数组中。设用变量a接收从键描 输入的指定数,用循环语句实现变量a与每个元素的比对。 【设计思路】设为控制循环的循环变量,如果查找成功,则立即中止循环,这时 i的值不会超过9:若查找失败,循环结束后,i的值就是10。因此,可以用K10作为 条件来判断是否查找成功。 第1次 第3页
内 蒙 古 科 技 大 学 教 案(续页) 三、数组的初始化 数组定义时就给元素赋值,元素的初始值在“=”号后面用一对花括号括起 来的初始化列表中给出。 一维数组常见的初始化形式,例如: (1)int score[10]={1,2,3,4,5,6,7,8,9,10} ; (2)int score[10]={1,2,3,4,5} ; (3)int score[10]={0} ; (4)float x[3]={1.5, 2.46, 5.12}; 定义了包含 3 个元素的浮点型数组 x, 同时给这 3 个元素 x[0] 、x[1]和 x[2] 顺序地指定了初始值 1.5, 2.46 和 5.12。 例如: char c[5]={‘h’, ‘e’, ‘l’, ‘l’, ‘o’}; 定义了包含 5 个元素的字符型数组 c,同时给 c[0]~ c[4]这 5 个元素顺序地指 定了初始值‘h’, ‘e’, ‘l’, ‘l’和‘o’。 说明: (1)数组元素的初值表达式必须是常量表达式,对自动数组的初始化也只 允许运用常量表达式。这个规定与简单变量初始化的规定不同。 (2)C 语言也允许只给数组的前几个元素指定初值。这时,所有未指定值 的元素就会自动初始化为 0。 应用举例:从已有的 10 个数中查找指定的数,查找成功,则输出该数所在的位置;若 查找失败,则输出相应信息。 【程序点拨】已有 10 个数可通过初始化方式存在数组中。设用变量 a 接收从键盘 输入的指定数,用循环语句实现变量 a 与每个元素的比对。 【设计思路】设 i 为控制循环的循环变量,如果查找成功,则立即中止循环,这时 i 的值不会超过 9;若查找失败,循环结束后,i 的值就是 10。因此,可以用 i<10 作为 条件来判断是否查找成功。 举例说明 第 1 次 第 3 页

内蒙古科技大学 教案 (续页) 【源程序】 #include void main() { inta,i,num10]={4,8,6,12,7,9,15,3,5,16}: scanf%d”,&a);/体从键盘接收指定的数*/ for(i=0:i<=9:i++) if(num[=a)体将指定数与各元素依次比较,如相等,立即结束循环*/ break; if(i<10) 体没找到时,循环结束后,循环变量ⅰ会变为10*/ printf(“该数在数据序列中排第%d位n”,i+l, else printf(该数不在此数据序列中n); 【运行结果】下面是程序两次运行的结果: an"E:家例程序DebugV6-4.exe” -回× 该数在数据序列中排第4位 ress any key to continue a四"E:家例程序DebugV6.4.exe" -▣× 1 该数不在此数据序列中 Press any key to continue 【思考提示】 判断数据是否找到的f条件还可以怎样修改? 课堂教学小结: 通过本讲,使学生能掌握数组的定义、引用和初始化,重点在一维数组的应用。 第1次 第4页
内 蒙 古 科 技 大 学 教 案(续页) 【源程序】 #include void main( ) { int a,i,num[10]={4,8,6,12,7,9,15,3,5,16}; scanf(“%d”,&a) ; /*从键盘接收指定的数*/ for(i=0;i<=9;i++) if(num[i]==a) /*将指定数与各元素依次比较,如相等,立即结束循环*/ break; if(i<10) /*没找到时,循环结束后,循环变量 i 会变为 10 */ printf(“该数在数据序列中排第%d 位\n”,i+1); else printf(“该数不在此数据序列中\n”); } 【运行结果】下面是程序两次运行的结果: 【思考提示】 判断数据是否找到的 if 条件还可以怎样修改? 课堂教学小结: 通过本讲,使学生能掌握数组的定义、引用和初始化,重点在一维数组的应用。 第 1 次 第 4 页
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第五章 函数.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(一).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(二).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.5 字符数组.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第八章 结构体与共用体.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(三).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第九章 文件操作.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第七章 指针(四).doc
- 内蒙古科技大学:《C语言程序设计》课程教学大纲 C Language Programming.pdf
- 《计算机组成原理》课程教学课件(PPT讲稿)第1章 计算机组成原理概述 Computer Organization.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第6章 总线系统.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第3章 指令系统.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第2章 运算方法和运算器 第1节 数据表示(数据与文字表示方法).ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第2章 运算方法和运算器 第2节 定点加减运算及实现 第3节 定点乘法运算及实现 第4节 定点除法运算及实现 第5节 定点运算器的组成与结构 第6节 浮点运算方法和浮点运算器.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第4章 中央处理器.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第7章 输入输出系统.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第5章 存储系统.ppt
- 《计算机组成原理》课程教学课件(PPT讲稿)第8章 外围设备.ppt
- 《计算机组成原理》课程教学资源(实验指导)实验五 模型计算机与指令执行.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.3.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第六章 数组 6.3.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(一).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(二).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(三).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第四章 程序的控制结构(四).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第三章 简单的C程序设计.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第一章 C简介.doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第二章 数据类型、运算符及表达式(二).doc
- 内蒙古科技大学:《C语言程序设计》课程授课教案(讲义)第二章 数据类型、运算符及表达式(一).doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)编程题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)填空题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)改错题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学资源(作业习题)选择题.doc
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第八章 结构体与共用体.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第七章 指针.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第九章 文件操作.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第六章 数组.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第二章 数据类型、运算符及表达式.ppt
- 内蒙古科技大学:《C语言程序设计》课程教学课件(PPT讲稿)第三章 简单的C程序设计.ppt