第7章数组天津科技大学宁爱军版权所有_第1页
第7章数组天津科技大学宁爱军版权所有_第2页
第7章数组天津科技大学宁爱军版权所有_第3页
第7章数组天津科技大学宁爱军版权所有_第4页
第7章数组天津科技大学宁爱军版权所有_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军1Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军2 数组由基本数据类型构造而成,经常是解决问题的重数组由基本数据类型构造而成,经常是解决问题的重要方法要方法 一维书组的定义、使用一维书组的定义、使用 二维数组定义、使用二维数组定义、使用 字符数组字符数组 设计算法、编程时,如何将数组与选择、循环等方法设计算法、编程时,如何将数组与选择、循环等方法结合使用结合使用Tianjin University

2、of Science & Technology计算机系计算机系 宁爱军宁爱军3数组的引出数组的引出 在实际工作中,处理的数据,可能成百上千。在实际工作中,处理的数据,可能成百上千。 例如例如100100个学生的成绩。个学生的成绩。 此时,用定义变量的方法,解决取来很不方便。此时,用定义变量的方法,解决取来很不方便。 数组,通过数组名和下标的方法,处理大量的数据。数组,通过数组名和下标的方法,处理大量的数据。这是非常重要的数据结构,其中包含很多编程方法和这是非常重要的数据结构,其中包含很多编程方法和技巧。也是,学习编程的重要内容。技巧。也是,学习编程的重要内容。Tianjin Unive

3、rsity of Science & Technology计算机系计算机系 宁爱军宁爱军4 定义:定义: int a10;int a10; 数组长度为数组长度为1010。此长度必须是常量表达式,不能使变量。此长度必须是常量表达式,不能使变量。 顺序、线性数组,占连续内存单元。顺序、线性数组,占连续内存单元。int n;int n;scanf(“%d”,&n);scanf(“%d”,&n);int an;int an;的写法是错误的。的写法是错误的。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军5

4、 引用:引用: int a10;int a10;数组名数组名 下标下标 eg:eg:a0=a5+a7-4+ai;a0=a5+a7-4+ai;数组元素引用,不能越界,即下标不能超过最大值数组元素引用,不能越界,即下标不能超过最大值n-1n-1。这里,数组中的每个元素,都可以看成一个该类型的简这里,数组中的每个元素,都可以看成一个该类型的简单变量使用。不同的,只是元素有下标。单变量使用。不同的,只是元素有下标。数组处理中,最常见的方法是数组处理中,最常见的方法是遍历遍历。这里的处理,指输。这里的处理,指输入、输出、赋值、顺序、判断等所有操作。入、输出、赋值、顺序、判断等所有操作。 顺序遍历顺序遍历

5、倒序遍历倒序遍历Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军6举例:举例:eg7_01eg7_01main()main() int i,a10;int i,a10;for (i=0;i=9;i+)for (i=0;i=0;i-)for (i=9;i=0;i-)printf(%d,ai);printf(%d,ai); eg7_01aeg7_01afor (i=0;i=9;i+)for (i=0;i=9;i+)scanf(“%d”,&ai);scanf(“%d”,&ai);Tianjin Universi

6、ty of Science & Technology计算机系计算机系 宁爱军宁爱军7一维数组一维数组(1 1)初始化:定义的同时,为元素赋值。)初始化:定义的同时,为元素赋值。int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4,5,6,7,8,9;(2 2)只给部分赋初值,其余元素自动为)只给部分赋初值,其余元素自动为0 0int a10=0,1,2,3,4;int a10=0,1,2,3,4;(3 3)int a10=0,0,0,0,0,0,0,0,0,0;int a10=0,0,0,0,0,0,0,0,0,0;(4 4)省略数组长度,根据初始

7、化,自动给出长度:)省略数组长度,根据初始化,自动给出长度:int a5=1,2,3,4,5;int a5=1,2,3,4,5; int a=1,2,3,4,5;int a=1,2,3,4,5;未曾赋初值,或者赋值的元素,其值不确定。未曾赋初值,或者赋值的元素,其值不确定。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军8一维数组举例一维数组举例eg7_02eg7_02求求FibonacciFibonacci数列,前数列,前4040个数。个数。分析:分析:有了数组,我们就可以把每个有了数组,我们就可以把每个Fibonac

8、ciFibonacci数存放在数组数存放在数组元素中。元素中。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军9一维数组举例一维数组举例eg7_02eg7_02求求FibonacciFibonacci数列,前数列,前4040个数。个数。分析:分析:有了数组,我们就可以把每个有了数组,我们就可以把每个FibonacciFibonacci数存放在数组数存放在数组元素中。元素中。main()main() int f20=1,1,i; int f20=1,1,i; for (i=2;i20;i+) for (i=2;i20;i+

9、) fi=fi-2+fi-1;fi=fi-2+fi-1; for (i=0;i20;i+) for (i=0;i20;i+) if (i%5=0) if (i%5=0) printf(n);printf(n);printf(%12d,fi);printf(%12d,fi); Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军10一维数组举例一维数组举例eg7_03 eg7_03 用起泡法对用起泡法对1010个数排序。(又小到大)个数排序。(又小到大)基本思想:比较两个相邻数,小的调到前边。基本思想:比较两个相邻数,小的调到

10、前边。如果有如果有n n个数,则需要进行个数,则需要进行n-1n-1趟比较。趟比较。第第 1 1 趟,进行趟,进行 n-1n-1 次比较。次比较。第第 j j 趟,进行趟,进行 n-jn-j 次比较。次比较。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军11一维数组举例一维数组举例eg7_03 eg7_03 用起泡法对用起泡法对1010个数排序。(又小到大)个数排序。(又小到大)基本思想:比较两个相邻数,小的调到前边。基本思想:比较两个相邻数,小的调到前边。如果有如果有n n个数,个数,则需要进行则需要进行n-1n-1

11、趟比较。趟比较。第第 1 1 趟,进行趟,进行 n-1n-1 次比较。次比较。第第 j j 趟,进行趟,进行 n-jn-j 次比较。次比较。for (j=1;j=10;j+)for (j=1;j=10;j+) for (i=1;i=10-j;i+) for (i=1;iai+1) if (aiai+1) t=ai; t=ai; ai=ai+1; ai=ai+1; ai+1=t; ai+1=t; Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军122 2 二维数组二维数组float a34;float a34;a a :3

12、 3行行4 4列数组。列数组。把把a a看成有看成有3 3个元素的一维数组,个元素的一维数组,a0a0、a1a1、a2a2每个元素是每个元素是一个包含一个包含4 4个元素的一维数组。个元素的一维数组。二位数组,也是连续德,二位数组,也是连续德,在内存中,在内存中,按行存放按行存放Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军13多维数组多维数组float a234;float a234;此时,可以把此时,可以把a a看作,三维的包括页、行、列的书。看作,三维的包括页、行、列的书。当然,还有当然,还有4 4维、维、5 5

13、维数组,甚至更多维。维数组,甚至更多维。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军14二维数组引用二维数组引用数组名数组名 行标行标 列标列标 a12=a23/2+aIj a12=a23/2+aIj数组元素引用,行标、列标都不能越界数组元素引用,行标、列标都不能越界这里,数组中的每个元素,都可以看成一个该类型的简这里,数组中的每个元素,都可以看成一个该类型的简单变量使用。不同的,只是元素有单变量使用。不同的,只是元素有行列下标行列下标。数组处理中,最常见的方法是数组处理中,最常见的方法是遍历遍历。这里的处理,指输。

14、这里的处理,指输入、输出、赋值、顺序、判断等所有操作。入、输出、赋值、顺序、判断等所有操作。i: i:行号行号j: j:列号列号Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军15二维数组遍历举例二维数组遍历举例eg7_03aeg7_03amain()main() int a34,i,j; int a34,i,j; printf(nplease input:n); printf(nplease input:n); for (i=0;i3;i+) for (i=0;i3;i+) for (j=0;j4;j+) for (j

15、=0;j4;j+) scanf(%d,&aij); scanf(%d,&aij); printf(output1:n); printf(output1:n); for (i=0;i3;i+)for (i=0;i3;i+) for (j=0;j4;j+) for (j=0;j4;j+) printf(%dt,aij); printf(%dt,aij); printf(n); printf(n); printf(output2:n);printf(output2:n); for (j=0;j4;j+) for (j=0;j4;j+) for (i=0;i3;i+) for (i=0

16、;i3;i+) printf(%dt,aij); printf(%dt,aij); printf(n); printf(n); 如何按行列或如何按行列或列行列行顺序输出二维数组?顺序输出二维数组?Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军16二维数组初始化二维数组初始化(1) int a34=1,2,3,4,5,6,7,8,9,10,11,12;(1) int a34=1,2,3,4,5,6,7,8,9,10,11,12;(2) int a34=1,2,3,4,5,6,7,8,9,10,11,12;(2) int

17、a34=1,2,3,4,5,6,7,8,9,10,11,12;(3) int a34=1,5,9;(3) int a34=1,5,9;(4) int a34=1,0,6,0,0,11;(4) int a34=1,0,6,0,0,11;(5) int a4=1,2,3,4,5,6,7,8,9,10,11,12;(5) int a4=1,2,3,4,5,6,7,8,9,10,11,12;可省略数组的行号,不能省略列号。可省略数组的行号,不能省略列号。部分赋初值时,未赋初值的元素初值为部分赋初值时,未赋初值的元素初值为0 0。Tianjin University of Science & T

18、echnology计算机系计算机系 宁爱军宁爱军17二维数组举例二维数组举例eg7_04 eg7_04 讲一个二维数组行列呼唤,存入另一数组。讲一个二维数组行列呼唤,存入另一数组。654321a635241bprintf(array a:n);printf(array a:n);for (i=0;i=1;i+)for (i=0;i=1;i+) for (j=0;j=2;j+) for (j=0;j=2;j+) printf(%5d,aij);printf(%5d,aij);bji=aij;bji=aij; printf(n); printf(n);Tianjin University of S

19、cience & Technology计算机系计算机系 宁爱军宁爱军18二维数组举例二维数组举例eg7_05 eg7_05 求一个求一个3 3* *4 4矩阵,最大值元素,及其行列号。矩阵,最大值元素,及其行列号。求最大(最小)的方法:求最大(最小)的方法:假设变量假设变量maxmax最大,用最大,用maxmax依次与所有元素比较,发现比依次与所有元素比较,发现比maxmax大大的就将的就将maxmax换成此数。换成此数。maxmax801maxmaxTianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军19二维数组举

20、例二维数组举例eg7_05 eg7_05 求一个求一个3 3* *4 4矩阵,最大值元素,及其行列号。矩阵,最大值元素,及其行列号。在一系列元素中,找最大(最小)的方法:在一系列元素中,找最大(最小)的方法:假设变量假设变量maxmax最大,用最大,用maxmax依次与所有元素比较,发现比依次与所有元素比较,发现比maxmax大大的就将的就将maxmax换成此数。换成此数。max=a00;max=a00;for (i=0;i=2;i+)for (i=0;i=2;i+) for (j=0;j=3;j+) for (j=0;j=3;j+)if (maxaij)if (maxaij) max=aij

21、; max=aij; row=i; row=i; col=j; col=j; Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军203 3 字符数组字符数组char c10;char c10;c0=I;c1= ;c2=a;c0=I;c1= ;c2=a;元素类型为元素类型为charchar型,元素当成型,元素当成charchar变量使用。变量使用。char c10=I, ,a,m, ,h,a,p,p,y;char c10=I, ,a,m, ,h,a,p,p,y;char c=I, ,a,m, ,h,a,p,p,y;char

22、c=I, ,a,m, ,h,a,p,p,y;char diamond55= , ,char diamond55= , ,* *, , ,* *, , ,* *, * *, , , , , , ,* *, , ,* *, , ,* *, , , , ,* *;Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军21字符数组使用字符数组使用仍然是遍历数组的方法:仍然是遍历数组的方法:eg7_06:eg7_06:输出字符串。输出字符串。 for (i=0;i10;i+)for (i=0;i10;i+) printf(%c,ci);

23、 printf(%c,ci); printf(n); printf(n);Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军22字符数组使用字符数组使用仍然是遍历数组的方法:仍然是遍历数组的方法:eg7_07:eg7_07:输出钻石图形。输出钻石图形。 for (i=0;i5;i+) for (i=0;i5;i+) for (j=0;j5;j+) for (j=0;jstr2 1 str1str2 值值 002 str1=str2 2 str1=str2 值值 =0=03 str1str2 3 str1str2 值值 00

24、 str1=str2 str1=str2的比较,不能得到字符的比较,不能得到字符串大小。串大小。Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军28字符串处理函数字符串处理函数(6) strlen(str) (6) strlen(str) 求字符串长度求字符串长度(7(7)strlwr(str) strlwr(str) 大写变小写大写变小写(8)strupr(str) (8)strupr(str) 小写变大写小写变大写Tianjin University of Science & Technology计算机系计算

25、机系 宁爱军宁爱军29字符串处理字符串处理编写字符串处理含数时,遍历的并非整个数组,而是以编写字符串处理含数时,遍历的并非整个数组,而是以00作为结束。作为结束。eg7_07beg7_07bmain()main() char c=China; char c=China; int i; int i; printf(n); printf(n); for (i=0;ci!=0;i+) for (i=0;ci!=0;i+) printf(%c,ci);printf(%c,ci); Tianjin University of Science & Technology计算机系计算机系 宁爱军宁爱军30字符串处理举例字符串处理举例eg7_08eg7_08,求一行字符中单词的个数。,求一行字符中单词的个数。单词以空格分开,如单词以空格分开,如strIstrI非空格,而其前一字符是空格非空格,而其前一字符是空格,则是一个新单词。单词数,则是一个新单词。单词数numnum加加1 1。word word :1 1,表示前,表示前1 1字符是空格,字符是空格,0 0前前1 1字符不是空格。字符不是空格。eg: I am a boy!eg: I am a boy!Tianjin U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论