1、学 科:计算机科学与技术课 程:C 语言程序设计课 题:一维数组课 时:2教学目标:1、掌握一维数组的定义和引用2、掌握一维数组的初始化方法3、了解与一维数组有关的应用编程方法教学重点:一维数组的定义和引用、初始化方法教学难点:与一维数组有关的应用编程方法教学方法:举例法,引导法教学步骤: 1、通过一个例子提出问题来引出本节课的知识点2、讲授一维数组的定义和引用、初始化方法3、示例训练4、进行本节课的总结及作业布置教 具:黑板 计算机 投影仪教学过程:一、导入:提问:保存一个班 50 位同学的一门功课的成绩,并且找出最高分和最低分,应如何实现?解题思路:定义 50 个变量,从键盘中输入值,然后
2、再相互比较。处理起来很复杂,是否有更简便的方法?引出本节课的知识点-数组。二、讲授:1、数组概述:数组:是数目固定,类型相同的若干个变量的有序集合,用数组名标识。序:是数组元素之间的位置关系,不是元素值的大小顺序。数组名:是用于区别其它数组及变量的。数组元素:集合中的变量,属同一数据类型,用数组名和下标确定。下标:是数组元素在数组中的位置。数组的维数:数组名后所跟下标的个数。2、一维数组的定义 一维数组是指由一个下标数组元素组成的数组。其定义形式为:存储类型 数据类型 数组名常量表达式 例如:static int score50;它表示定义了一个名为 score 的数组,该数组有 50 个元素
3、,其存储类型为静态型,数据类型为整型。说明:(1)存储类型为任选项,可以是 auto、static 、extern 存储类型,但是没有 register型。(2)数据类型是用来说明数组元素的类型:int , char , float。(3)数组名的命名应遵守标识符的命名规则,但是不能与其他变量同名。(4)数组名后是用方括号 括起来的常量表达式。常量表达式表示的是数组元素的个数,即数组的长度。在上例中定义了数组 score 50,第一个元素为 score 0,最后一个为 score 49。(5)常量表达式中可以包括常量和符号常量,不能包含变量,因为 C 语言规定不允许对数组的大小作动态定义。(6
4、)允许在同一个类型说明中,说明多个数组和多个变量,彼此间以逗号相隔。 例如:int a,b,k110,k220; /定义了两个一维数组、两个整型变量判断下面的定义是否合法:int b, b5; /不合法,数组名不能与变量名同名#define size 10 int bsize; /合法,size 已经在宏定义中说明,在程序中作为符号常量int a(6); /不合法,数组名后不能使用() ,只能用 int n=5;int an; /不合法,不能用变量定义数组元素的个数int an+2; /不合法,不能用变量表达式定义数组元素的个数一维数组的存储结构:C 语言在编译时给数组分配一段连续的内存空间。
5、内存字节数=数组元素个数*sizeof(元素数据类型)数组元素按下标递增的次序连续存放。数组名是数组所占内存区域的首地址,即数组第一个元素存放的地址。例 int a5; 假设首地址是 2000a0 a1 a2 a3 a4内存地址 2000 2002 2004 2006 2008 占用字节数为:5*sizeof(int)=5*2=103、一维数组元素的引用数组元素是组成数组的基本单元。数组元素用数组名和下标确定。下标表示了元素在数组中的顺序号,C 语言规定:数组必须先定义,后使用。一维数组的引用形式为:数组名下标其中下标可以是整型常量、整型变量或整型表达式。例如有定义:int t,a10,i=2
6、;则以下都是正确的表达式:t=a 6;a0= ai+ai+1;引用说明:(1)必须像使用变量那样,先定义,再使用,如以下操作是错误的:int x=a2; int a10;(2)下标的最小值为 0,最大值是数组大小减 1。在前例中定义了数组 score 50,使用的时候不能使用 score 50, 否则产生数组越界。C 语言对数组不作越界检查,使用时要注意!(3)在 C 语言中只能对数组元素进行操作,不能一次对整个数组进行操作。例如要输出有 10 个元素的数组,则必须使用循环语句逐个输出各下标变量:for(i=0; ivoid main ( ) int i, score5=82,79,65,91
7、,86;for (i=0;i score i,令 min= score i(3) 输出: max 和 min 程序如下:#include void main() int i;float score 10,max,min;printf(“Enter 10 score s:n“);for(i=0;i score i) min= score i;printf(“Max score is %fn“,max); /输出最高分printf(“Min score is %fn“,min); /输出最低分2.以引例为例,从键盘输入 10 个学生一门课的成绩,用冒泡法从低到高排序并输出。分析:冒泡排序法的基本思
8、想是将相邻两个数进行比较,将小的调到前面。排序过程:(1)比较第一个数与第二个数,若为逆序 score 0 score 1,则交换;然后比较score 1与 score 2比较;依次类推,直至 score 8与 score 9比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素 score 9位置上,此次共比较9 次。(2)对前 9 个数进行第二趟冒泡排序,结果使次大的数被安置在倒数第二个元素score 8位置,此次共比较 8 次。(3)重复上述过程,共经过 9 趟冒泡排序后,排序结束程序如下:#include void main() int i,j;float score 10, t,m
9、ax,min;printf(“Enter 10 scores:n“);for(i=0;i score j+1) /交换 score j和 score j+1t= score j; score j=score j+1; score j+1= t;for(i=0;i10;i+) /输出排好序的成绩printf(“ %f “, score i);printf(“n“);四、总结:这节课主要介绍了数组这一特殊的数据结构。数组的特点是大小必须是确定的,且数组中元素的类型必须相同。它的优点是表述简洁,可读性高,便于使用循环结构。一维数组的定义和使用:在使用时应遵循先定义、后使用的原则。不能整体引用,也不能越界使用数组元素,可以用循环结构很方便地访问数组元素。一维数组初始化的方法:定义时初始化的几种方式、在程序中用赋值语句初始化。5、作业要求:课后大家将课本上的例题和课后习题进行练习,以此提高对程序设计的更高程度的认识。