C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组

上传人:w****i 文档编号:92422390 上传时间:2019-07-10 格式:PPT 页数:59 大小:1.52MB
返回 下载 相关 举报
C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组_第1页
第1页 / 共59页
C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组_第2页
第2页 / 共59页
C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组_第3页
第3页 / 共59页
C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组_第4页
第4页 / 共59页
C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组》由会员分享,可在线阅读,更多相关《C语言程序设计教程 教学课件 ppt 作者 张思卿 谭晓玲 主编第6章 数组(59页珍藏版)》请在金锄头文库上搜索。

1、第六章,数 组,技能目标:,1、掌握一维数组的定义、初始化、数据元素的引用 2、掌握二维数组的定义、初始化、数据元素的引用 3、了解字符数组与字符串的使用方法 4、掌握数组的应用,本章要点:,6.1一维数组 6.2二维数组 6.3字符数组与字符串,数组是一组有序数据的集合。数组中各数据的排列是有一定规律的,下标代表数据在数组中的序号 用一个数组名和下标惟一确定数组中的元素 数组中的每一个元素都属于同一个数据类型,6.1 一维数组,如数学中的数列(一组数据) x1 x2 x3 x4 . 但在C语言中这样表示: x1 x2 x3 x4 计算机为数组分配连续的空间,数组中的概念,数组是相关数据项的集

2、合,如全班学生的成绩,公司员工的工资。 数组中的单个数据称为元素,且每个元素都属于同一数据类型,数组元素和普通变量一样使用。 数组中的每一个元素用不同的下标区分。 数组的下标是从0开始。,1、 一维数组的定义方式,格式,类型说明符 数组名常量表达式,举例,int a10;,定义一个数组,数组名a,有10个元素,每个元素的类型均为int。,数组长度,注意: 数组名后是方括号,而非圆括号。,从a0开始,没有a10.,定义说明:,(1) 数组定义时,必须指定数组的大小(或长度),数组大小必须是整型常量表达式,不能是变量或变量表达式。 (2) 数组定义后,系统将给其分配一定大小的内存单元,其所占内存单

3、元的大小与数组元素的类型和数组的长度有关。,数组所占内存单元的字节数 = 数组大小 sizeof(数组元素类型),(3) 数组中每个数组元素的类型均相同,它们占用内存中连续的存储单元,其中第一个数组元素的地址是整个数组所占内存块的低地址,也是数组所占内存块的首地址,最后一个数组元素的地址是整个数组所占内存块的高地址(末地址)。,例如,下面对数组的定义是错误的: int n = 10; int an; /数组的大小不能是变量 int b10.3; /数组的大小不能是浮点常量 int cn+10; /数组的大小不能是变量表达式,例如:short int a20; 则数组a所占内存单元的大小为: 2

4、0 * sizeof(short) = 20 * 2 = 40(字节)。,2、一维数组元素的引用,格式,数组名下标,说明,1.下标是整型变量或整形常量。,2.数组元素只能逐个引用,而不能一次引用整个数组。 数组元素的使用与一般变量使用方式一样。,千万注意不要超出下标范围,当逐个使用数组中的每一个元素时,通常借助for循环语句。,【例】编程序,使数组10个元素的值分别是09,然后逆序输出。 #include “stdio.h” main(), int i,a10; for(i=0;i=0;i-) printf(“%3d“,ai); printf(“n”); ,3、一维数组的初始化,一维数组的初始

5、化赋值,数据类型符 数组变量名常量表达式 = 表达式1,表达式2,表达式n;,初始化赋值说明:,(1) “=”后面的表达式列表一定要用 括起来,被括起来的表达式列表被称为初值列表,表达式之间用“,”分隔; (2) 表达式的个数不能超过数组变量的大小;,例 int a4 = 1, 2, 3, 4, 5; /超出了数组的大小,(3) 表达式1是第1个数组元素的值,表达式2是第2个数组元素的值,依此类推;,例 int a5 = 0, 1, 2, 3, 4; 经过以上定义和初始化后, a0 = 0,a1 = 1,a2 = 2,a3 = 3,a4 = 4。,(4) 如果表达式的个数小于数组的大小,则未指

6、定值的数组元素被赋值为0;,例 int a10 = 0, 1, 2, 3, 4;,a,0,0,1,1,2,2,3,3,4,4,0,0,0,0,0,0,0,0,0,0,(5) 当对全部数组元素赋初值时,可以省略数组变量的大小,此时数组变量的实际大小就是初值列表中表达式的个数。,例 char str = a, b, c, d, e ; 则数组str的实际大小为5。,注意:在定义数组时,如果没有为数组变量赋初值,那么就不能省略数组的大小。而且数组不初始化,其数组元素为随机值。,4、一维数组程序举例,【例】编程序,利用数组求Fibonacci数列的前20项。 解题思路: 例5.8中用简单变量处理的,缺

7、点不能在内存中保存这些数。假如想直接输出数列中第25个数,是很困难的。 如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组元素中。,#include int main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(“n”); printf(“%12d”,fi); printf(“n“); return 0; ,【例】用起泡法对5个数由小到大排序。,例:原始数据 9 8 5 11 4,输出数据,11,9,8,5,4,冒泡算法 : 将相邻2个数进

8、行比较,将小的数调到前头,大的调到后面,大的数就像石头逐步沉到最后。,原始数据 9 8 5 11 4,i=1 9 8 5 11 4,8 9 5 11 4,i=2 8 9 5 11 4,8 5 9 11 4,i=3 8 5 9 11 4,8 5 9 11 4,i=4 8 5 9 11 4,8 5 9 4 11,求第二大的值 8 5 9 4,i=1 8 5 9 4,5 8 9 4,i=2 5 8 9 4,5 8 9 4,i=3 5 8 9 4,5 8 4 9,for ( j=1; j=4 ; j+) for ( i=1; i=5-j ; i+),for ( j=1; jfi+1 ) temp =f

9、i; fi=fi+1; fi+1= temp; ,N-1,N:元素个数,注意:本算法 从f1开始,f1f5,没有使用f0,void main ( ) /*不使用f0的程序*/ ,int i, j, f6,temp; /*定义变量*/ for(i=1;i6;i+) /*初始化*/ scanf(“%d“,for ( j=1; jfi+1 ) temp =fi; fi=fi+1; fi+1= temp; ,include “stdio.h” void main ( ) ,int i, j, f5,temp; /定义变量 for(i=0;i5;i+) /初始化 scanf(“%d“,for ( j=0

10、; jfi+1 ) temp =fi;fi=fi+1;fi+1= temp; ,使用f0的排序程序:,6.2 二维数组,1、二维数组的定义,格式:,类型 数组名nm;,举例:,float a34; /定义一个3行4列的数组 char name6010;,相当于定义一个n行m列的矩阵; n和m为常量表达式,说明,(1)二维数组每一维下标都是从0开始。,a00, a01, a02 , a03 a10, a11, a12 , a13 a20, a21, a22 , a23,(2)二维数组元素仍然是从a00开始,数据按行存放。,a00, a01, a02 , a03 a10, a11, a12 , a

11、13 a20, a21, a22 , a23,2、二维数组元素的引用,格式,数组名下标1 下标2,说明,(1) 数组元素只能逐个引用,而不能一次引用整个数组。, int a23; a01=10; a02=a01*5; scanf(“%d”, ,整型常量或整型表达式,注意:下标不要超出表示范围。, int i,j; float a45; for (i=0; i=3; i+) /*行*/ for (j=0; j=4; j+) /* 列 */ scanf(“%d”, ,(2) 二维数组输入/输出的一般格式。,int i,j; float a45; for (i=0; i=3; i+) for (j=

12、0; j=4; j+) printf(“%d”,aij); printf(”n”);,3、二维数组的初始化,说明,(1)分行给二维数组赋初值。,(2) 按数组的排列顺序对各数组元素赋初值。,(3)可以对部分元素赋初值。,int a23=1,2,3,4,5,6;,int b23=1,2,3,4,5,6;,int c34=1,5,0,9;,1 2 3 4 5 6,1 2 3 4 5 6,1 0 0 0 5 0 0 0 0 9 0 0,1 0 0 0 5 6 0 0 0 0 0 0,int d34=1,5,6;,(4) 在对全部数组元素赋初值时,数组第一维的长度可以不指定,第二维长度不能省略。,in

13、t e 3=1,2,3,4,5,6;,1 2 3 4 5 6,【例】将一个二维数组行和列的元素互换,存到另一个二维数组中。,4、二维数组程序举例,解题思路: 可以定义两个数组:数组a为2行3列,存放指定的6个数 数组b为3行2列,开始时未赋值 将a数组中的元素aij存放到b数组中的bji元素中 用嵌套的for循环完成,#include int main() int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n“); for (i=0;i=1;i+) for (j=0;j=2;j+) printf(“%5d“,aij); bji=aij; pri

14、ntf(“n“); ,处理a的一行中各元素,处理a中某一列元素,输出a的各元素,a元素值赋给b相应元素,printf(“array b:n“); for (i=0;i=2;i+) for(j=0;j=1;j+) printf(“%5d“,bij); printf(“n“); return 0; ,输出b的各元素,【例】有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 解题思路:采用“打擂台算法” 先找出任一人站在台上,第2人上去与之比武,胜者留在台上 第3人与台上的人比武,胜者留台上,败者下台 以后每一个人都是与当时留在台上的人比武,直到所有人都上台比为止,最后留在台上的是冠军,记行号, int i,j,row=0,colum=0,max; int a

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号