内容正文:
课题
使用冒泡法对数据进行排序
课时
2课时(90 min)
教学目标
知识目标:
(1)理解数组的相关概念
(2)掌握一维数组、二维数组的定义、引用和初始化方法
能力目标:
能够使用数组编写程序,解决实际编程问题
素质目标:
通过对冒泡法的学习,培养探索真知的科学精神
教学重难点
教学重点:一维数组的定义、引用和初始化,二维数组的定义、引用和初始化,冒泡法对数据排序
教学难点:冒泡法对数据排序
教学方法
问答法、讨论法、讲授法、实践法
教学用具
电脑、投影仪、多媒体课件、教材
教学过程
主要教学内容及步骤
课前任务
【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过文旌课堂APP或其他学习软件,完成课前任务
请同学们根据已学知识,思考如何在程序中实现对学生的成绩进行排序。
【学生】完成课前任务
考勤
【教师】使用文旌课堂APP进行签到
【学生】班干部报请假人员及原因
问题导入
【教师】请同学们扫码观看“构造数据类型”视频(详见教材),讨论并回答以下问题:
数据类型可分为哪四类,数组中的每一个元素都属于什么数据类型?
【学生】思考、举手回答
传授新知
【教师】讲解一维和二维数组的定义、引用和初始化,冒泡法
一、一维数组的定义、引用和初始化
✈【教师】多媒体观看“一维数组”视频(详见教材),让学生熟悉一维数组的概念及使用方法
1.一维数组的定义
一维数组是一组用来存放多个相同类型数据的集合,该集合中的成员称为元素,每个数组元素都由数组名和一个下标来唯一确定。同普通变量的使用方法一样,数组在使用之前要先定义。一维数组的定义形式如下。
类型说明符 数组名[常量表达式];
其中:
(1)类型说明符可以是任意基本数据类型或构造数据类型,如int、float、char等。
(2)数组名是用户定义的数组标识符,即数组元素共同的名字。
(3)方括号中的常量表达式表示数组元素的个数(即数组长度)。
例如:
int ch[20]; /*定义整型数组ch,有20个元素*/
float b[10]; /*定义实型数组b,有10个元素*/
定义数组时应注意以下三点。
(1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
(2)数组名不能与其他变量名相同。
(3)在方括号中不能用变量来定义数组元素的个数,但是可以用符号常数或常量表达式来定义。
经定义,系统会为数组元素在内存中分配连续的存储单元。例如:
int a[15];
数组名a是数组存储区的首地址,即数组第一个元素的地址&a[0]等价于a。在Visual C++中,一个整型变量的存储空间为4个字节,故此数组的空间大小为4×15=60字节。
【课堂讨论】
✈【教师】请学生分组讨论以下问题
请同学们以小组为单位,讨论能否对数组名进行赋值和运算。
✈【学生】讨论、总结、回答
✈【教师】总结学生的回答
数组名是一个地址常量,故不能对数组名进行赋值和运算。
2.一维数组的引用
在定义数组之后,就可以通过引用数组元素的方式使用该数组中的元素。一维数组的引用格式如下。
数组名[下标]
✈提示
(1)下标可以是常量或常量表达式,也可以是变量或变量表达式。
(2)在引用时,下标值若不是整型,C程序系统会自动取整,如a[5.3]相当于a[5]。
(3)下标值从0开始。
(4)下标不能越界,即引用时的下标值必须小于数组元素的个数。
【课堂练习】
✈【教师】出示【例6-1】,组织学生编写代码
某比赛节目中有10个评委,根据评委的评分情况,去掉一个最高分和一个最低分,其余分数的平均值就是该选手的得分。请编程计算某选手的得分。
✈【学生】编写程序、运行、对比结果
✈【教师】解析例题
10个评委的分数需要10个变量来存储,故可定义包含10个元素的一维数组;定义两个变量分别表示最高分和最低分,然后利用循环语句遍历数组中的元素,计算10个元素的和并找出最高分和最低分;用10个元素的和减去最高分和最低分,再除以8,即可得到该选手的得分。
……(参考程序详见教材)
【运行结果】通过键盘输入77 78 79 87 88 98 99 95 94 90↙,程序运行结果如图6-1所示(详见教材)。
【程序说明】在C程序中,只能对数组中的元素进行操作,而不能对数组整体进行操作。因此,对数组元素操作时,常常需要用到循环语句。例如,在本例中,使用for语句遍历数组中的每个元素。
【课堂问答】
✈【教师】随机邀请学生回答以下问题
请同学们思考,上述代码中将a[0]的值赋给max和min,能否将a[1]或者其他的赋给max和min?
✈【学生】聆听、思考、回答
✈【教师】总结学生的回答
3.一维数组的初始化
数组的初始化就是在定义数组的同时,给数组元素赋