C语言教案5数组
第5章 数组 5.1 一维数组 * 5.2 一维数组的引用 5.3 二维数组 5.4 字符串处理 数组是具有相同类型的变量集,它们拥有共同的名字,可以通过下标来分别访问。 例如:为了保存一个班50位同学的一门功课的成绩,需要定义50个变量,并分别从键盘读入值,这样处理起来非常麻烦。但是通过数组来实现却很方便。 5.1 一维数组 一、 一维数组的定义 形式: 类型说明符 数组名[常量表达式]; 例: int a[20]; 表示定义了20个整型变量,下标从0开始,变量分别为a[0], a[1]…, a [19] 3. 常量表达式为常量和符号常量。不允许有变量,其表达式的值代表了元素的个数。 1. 数组名的确定方法同变量名。 2. C语言用方括号[ ]表示数组元数个数。C规定从0开始计数. 4. 可在定义时对数组赋初值, 方法如下: ? 对部分元素赋初值(前面的连续元素) int a[10]={0,1,2,3,4}; ? 对全部元素赋初值 int a[10]={10, 11, 12, 13, 14, 15, 16, 17, 18, 19} 注意:不能只对部分元素或后面的连续元素赋初值。 语句: int a[10]={, , , , ,1,2,3,4,5}; int a[10]={1, ,3, ,5 , ,7, ,9, ,}; 是错误的。 在此,只有前5个元素初值确定,后5个元素由系统设置。 5. 若赋全部元素的初值,可省略常量表达式 int a [ ]={0,1,2,3}; 表示a[4],即只有4个元素。 6. 在C语言中,不对数组检查边界,使用时注意不要超出范围。 例如:int a[5]={1,2,3,4,5}; printf(“%d”,a[5]) 错误!没有a[5]! 7. 数组元素在内存中时连续存放的,数组所占的内存空间为: 类型长度?数组元素数目 8. 特别,如果在定义时赋值,可以不指定大小 例如:int a[]={1,2,3,4,5};与 int a[5]={1,2,3,4,5};是等价的。 引用方式: 数组名[下标] 代表了一个元素,等价于同类型的一个变量。 注2. 一维数组各元素分配在连续地内存单元之中。其中变量名代表其首地址 注1. 必须象使用变量那样,先定义,再赋值,后使用 例: a [0]?5+a[1] ? 6 为正确的算术表达式 5.2 一维数组的引用 程序实例: 例1. 输入一个班级30人的一门课程的成绩,打印最高分、最低分、平均分(用数组)。 例2:求Fibonacci 数列的前20项。 fi=fi-1+fi-2 ,且f1 = f2= 1。 例3: 设有两个同样大小的一维数组,a[10],b[10]将相应元素比较,统计a中大于b中对应元素的个数,小于的个数,相等的个数。 例4: 排序问题–––计算机处理数据的一个重要问题 排序算法较多,一种最简单的算法–––选择排序法用得较多。基本思路: 设有n个数,需将它们从小到大顺序排列。则: 2. 在剩下的n –1个元素中,找出第二小的元素并把它放在第二个位置上。 3. 对上述过程重复,直至剩下一个元素。 1. 从n个元素中,通过比较,找出最小元素,放在第一个位置上。 例: 8, 4, 20, 100, 28, 1, 两次交换 第2次: 1, 4, 20, 100, 28, 8 ––– 一次交换 第3次: 1, 4, 8, 100, 28, 20 ––– 一次交换 第4次: 1, 4, 8, 28, 100, 20, 1, 4, 8, 20, 100, 28 两次交换 第5次: 1, 4, 8, 20, 28, 100 ––– 一次交换 第1次: 4, 8, 20, 100, 28, 1 1, 8, 20, 100, 28, 4 从1到n 输入数据到数组a[i] i从0到n-1 j从i+1到n-1 若a[i]>a[j] 交换 打印 程序: #include main ( ) { int a [11]; int i, j, t; printf (" please input 10 n~:\n "); for (i=1; i<=n; i++)