《c语言程序设计基础》4数组.ppt





《《c语言程序设计基础》4数组.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计基础》4数组.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 数数组和字符串和字符串2第第4 4章章 数组数组4.1 一维数组一维数组 4.2 二维数组二维数组 4.3 字符数组字符数组 4.4 数组元素的查找和排序数组元素的查找和排序 本章内容本章内容3第第4 4章章 数组数组v构造类型数据是由一些基本类型数据按照一定的构造类型数据是由一些基本类型数据按照一定的规则组成。数组类型是构造类型数据的一种。规则组成。数组类型是构造类型数据的一种。v数组是有序数据的集合,数组中的每一个元素都数组是有序数据的集合,数组中的每一个元素都属于同一个数据类型。属于同一个数据类型。v用一个统一的数组名和下标来唯一地确定数组中用一个统一的数组名和下标来唯一地确
2、定数组中的元素。的元素。例如:例如:int sum3;int sum3;说明一个整型数组,数组名称说明一个整型数组,数组名称sumsum,共有,共有3 3个个intint型变量型变量元素:元素:sum0sum0,sum1sum1,sum2sum2v注意:注意:数组名代表该数组在内存中的首地址。数组名代表该数组在内存中的首地址。4第第4 4章章 数组数组v数组的基本概念:数组的基本概念:v所谓所谓数组数组,是若干个相同类型数据元素的有序集,是若干个相同类型数据元素的有序集合。所起的名字称为合。所起的名字称为数组名。数组名。v用对应的序号来区分这个集合中的一个个元素。用对应的序号来区分这个集合中的
3、一个个元素。序号称为数组元素的序号称为数组元素的下标下标v用一个下标来区分其元素的数组,称为用一个下标来区分其元素的数组,称为一维数组一维数组;用两个或多个下标来区分其元素的数组,称为用两个或多个下标来区分其元素的数组,称为二二维数组维数组或或多维数组多维数组5 4.1 4.1 一维数组一维数组本节内容本节内容 4.1.2 一维数组的初始化一维数组的初始化 4.1.3 一维数组元素的引用一维数组元素的引用 4.1.4 一维数组的应用举例一维数组的应用举例 4.1.1 一维数组的定义一维数组的定义64.1 4.1 一维数组一维数组v只有一个下标变量的数组叫做只有一个下标变量的数组叫做一维数组一维
4、数组。v数组是一组变量,这组变量具有相同的名字,相数组是一组变量,这组变量具有相同的名字,相同的数据类型,并且在存储器中连续存放。同的数据类型,并且在存储器中连续存放。v每一个变量称为数组的一个每一个变量称为数组的一个“数组单元数组单元”,保存,保存在其中的数据值称为在其中的数据值称为“数组元素数组元素”。用。用“下标变下标变量量”来标识来标识区分数组中的各数组元素。区分数组中的各数组元素。v数组按下标个数分类有一维数组按下标个数分类有一维二维二维三维数组等。三维数组等。一维数组的数组名后只有一对方括号,而二维数一维数组的数组名后只有一对方括号,而二维数组的数组名后面有两对方括号。组的数组名后
5、面有两对方括号。74.1.1 4.1.1 一维数组的定义一维数组的定义v一维数组的定义方式为:一维数组的定义方式为:v类型说明符类型说明符 数组名数组名 常量表达式常量表达式;v例如:例如:int a6int a6;v如图,编译时分配连续内存单元。如图,编译时分配连续内存单元。a00145a1a2a3a4a523a8v注意事项:注意事项:数组名的命名遵循标识符命名规则。数组名的命名遵循标识符命名规则。类型说明符说明该数组中数组元素的数据类型。类型说明符说明该数组中数组元素的数据类型。数组名后是用方括号括起来的常量表达式。数组名后是用方括号括起来的常量表达式。方括号中的常量表达式表示数组中元素的
6、个数。方括号中的常量表达式表示数组中元素的个数。C C语言规定数组元素的下标从语言规定数组元素的下标从0 0开始,因此在开始,因此在int int a10a10中的中的1010个元素,分别为个元素,分别为a0a9a0a9,不能使用,不能使用a10a10 。方括号中的常量表达式可以是常量或者符号常量,但方括号中的常量表达式可以是常量或者符号常量,但不能包含变量。不能包含变量。94.1.2 4.1.2 一维数组的初始化一维数组的初始化v数组的初始化即为数组元素赋初始值数组的初始化即为数组元素赋初始值 v用赋值语句为数组元素赋初值。例如:用赋值语句为数组元素赋初值。例如:int a10int a10
7、;a0=0a0=0;a1=1a1=1;a2=2a2=2;v在定义数组时对数组全部元素赋初值。例如:在定义数组时对数组全部元素赋初值。例如:int a10=0int a10=0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,99;v在定义数组时对数组中一部分元素赋值。例如:在定义数组时对数组中一部分元素赋值。例如:int a10=0int a10=0,1 1,2 2,3 3,44;v在定义数组时给数组全部元素赋值为在定义数组时给数组全部元素赋值为0 0。v为全部数组元素赋初值时,可以不指定数组长为全部数组元素赋初值时,可以不指定数组长度。例如:度。例如:int a=0int a
8、=0,1 1,2 2,3 3,44;104.1.3 4.1.3 一维数组元素的引用一维数组元素的引用v数组元素引用的一般形式为:数组元素引用的一般形式为:v数组名数组名 下标下标 v引用数组元素的几点说明:引用数组元素的几点说明:下标可以是整型常量或整型表达式。例如下标可以是整型常量或整型表达式。例如:“a0=a1+a2*a3a0=a1+a2*a3a5a52”2”C C语言中数组元素的下标从语言中数组元素的下标从0 0开始,并且数组元素的下开始,并且数组元素的下标一定要小于数组的长度。标一定要小于数组的长度。C C语言规定只能逐个引用数组元素,而不能一次引用语言规定只能逐个引用数组元素,而不能
9、一次引用整个数组。整个数组。v C C语言规定,语言规定,数组名就是分配给该数组存储区的数组名就是分配给该数组存储区的首地址,即数组第一个元素存放的地址首地址,即数组第一个元素存放的地址。114.1.3 4.1.3 一维数组元素的引用一维数组元素的引用inta10;inti,max,min;printf(Pleaseinput:);for(i=0;i10;i+)scanf(%d,&ai);max=a0;min=a0;for(i=0;imax)max=ai;elseif(aimin)min=ai;printf(max=%d;min=%d,max,min);124.1.4 4.1.4 一维数组的应
10、用举例一维数组的应用举例#includemain()intscore10;/10个评委的评分floatmark;/记录最后得分inti;intmax=-1;/最高分intmin=101/最低分intsum=0;/10个评委评分的总和for(i=0;i10;i+)/输入10个分数printf(PleaseEntertheScoreofNo.%d:,i+1);scanf(%d,&scorei);sum=sum+scorei;134.1.4 4.1.4 一维数组的应用举例一维数组的应用举例for(i=0;imax)max=scorei;for(i=0;i10;i+)/遍历数组,找最低分if(scor
11、eimin)min=scorei;mark=(sum-max-min)/8.0;/求平均printf(Themarkofthissingeris%4.2fn,mark);144.1.4 4.1.4 一维数组的应用举例一维数组的应用举例154.1.4 4.1.4 一维数组的应用举例一维数组的应用举例v利用数组计算利用数组计算FibonacciFibonacci数列的前数列的前1010个数个数,并按每并按每行打印行打印5 5个数的格式输出。个数的格式输出。v其中:其中:FibonacciFibonacci数列计算公式如下:数列计算公式如下:F1=1F1=1,F2=1F2=1,F3=F1+F2F3=
12、F1+F2,Fn=Fn-2+Fn-1Fn=Fn-2+Fn-1。#includevoidmain()inti;intf10=1,1;/用数组存储Fibonacci数列,并赋初值/f0=1,f1=1,f2=f3=f9=0for(i=2;i10;i+)/为f2f9按计算公式重新赋值fi=fi-2+fi-1;164.1.4 4.1.4 一维数组的应用举例一维数组的应用举例for(i=0;i10;i+)/输出10个Fibonacci数printf(%dt,fi);if(i+1)%5=0)/i+1为当前输出的Fibonacci数的序号printf(n);/每输出五个数换行17 4.1 4.1 二维数组二维
13、数组本节内容本节内容 4.2.2 二维数组的初始化二维数组的初始化 4.2.3 二维数组元素的引用二维数组元素的引用 4.2.4 二维数组的应用举例二维数组的应用举例 4.2.1 二维数组的定义二维数组的定义184.2.1 4.2.1 二维数组的定义二维数组的定义v二维数组定义的一般形式为:二维数组定义的一般形式为:v类型说明符类型说明符 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22;v例如,例如,“int a23;int a23;”(注意,不能写成(注意,不能写成“int int a2,3a2,3;”;”)定义了数组)定义了数组a a。数组。数组a a为为3 3行行4 4列
14、的整型数列的整型数组,即数组元素为组,即数组元素为:a00,a01,a02a00,a01,a02a10,a11,a12a10,a11,a12194.2.1 4.2.1 二维数组的定义二维数组的定义v二维数组可以看作是由一维数组嵌套构成的。二维数组可以看作是由一维数组嵌套构成的。v我们可以把二维数组看作是一种特殊的一维数我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。组:它的元素又是一个一维数组。v例如,可以把数组例如,可以把数组a a看作一个一维数组,它有三看作一个一维数组,它有三个元素:个元素:a0a0、a1a1,每一个元素又是一个包,每一个元素又是一个包含含3 3个元
15、素的一维数组。个元素的一维数组。a0a0 a00a00a01a01a02a02a1a1 a10a10a11a11a12a12204.2.2 4.2.2 二维数组的初始化二维数组的初始化v按行分段整体初始化。按行分段整体初始化。int a34=1,4,6,6,4,6,7,1,8,4,1,0,;int a34=1,4,6,6,4,6,7,1,8,4,1,0,;v按行连续整体初始化。按行连续整体初始化。int a34=1,4,6,6,4,6,7,1,8,4,1,0;int a34=1,4,6,6,4,6,7,1,8,4,1,0;v按行分段部分初始化。按行分段部分初始化。int a34=5,7,1,8
16、,5,2,5,6;int a34=5,7,1,8,5,2,5,6;v按行连续部分初始化。按行连续部分初始化。int a34=2,5,8,6,2,4,7,2,1,;int a34=2,5,8,6,2,4,7,2,1,;v如果提供全部的初始值,在定义时可不指明第如果提供全部的初始值,在定义时可不指明第一维的长度。一维的长度。int4=4,5,0,1,3,5,7,6,1,0,2,3;int4=4,5,0,1,3,5,7,6,1,0,2,3;214.2.3 4.2.3 二维数组元素的引用二维数组元素的引用v维数组元素的表示形式为:维数组元素的表示形式为:v数组名数组名 下标下标11下标下标22v下标可
17、以是整型常量或整型表达式。下标可以是整型常量或整型表达式。v要严格区分定义数组时的要严格区分定义数组时的int a34int a34和引用元素和引用元素时的时的a34a34。v定义时,定义时,a34a34用来定义数组的维数和各维的大用来定义数组的维数和各维的大小。引用时,小。引用时,a34a34中的中的3 3和和4 4是下标值,显然引是下标值,显然引用数组用数组a a中第中第4 4行第行第5 5列位置上的的元素列位置上的的元素a34a34是是错误的,因为二维数组的下标和一维数组一样都错误的,因为二维数组的下标和一维数组一样都是从是从0 0开始,即数组开始,即数组a a的下标的下标1 1的范围是
18、的范围是0202,下标,下标2 2的范围是的范围是0303。224.2.4 4.2.4 二维数组的应用举例二维数组的应用举例#include#defineN3main()inti,j,n;intaNN,bNN;printf(pleaseinput:n);for(i=0;i=N-1;i+)/循环输入for(j=0;j=N-1;j+)printf(a%d%d:,i,j);scanf(%d,&aij);for(i=0;i=N-1;i+)/a行列互换得到转置矩阵存入bfor(j=0;j=N-1;j+)bij=aji;234.2.4 4.2.4 二维数组的应用举例二维数组的应用举例for(i=0;i=N
19、-1;i+)/输出两个矩阵for(j=0;j=N-1;j+)/输出数组a的第i+1行printf(%2d,aij);printf(t);/矩阵的间隔for(j=0;j=N-1;j+)/出数组b的第i+1行printf(%2d,bij);printf(n);244.2.4 4.2.4 二维数组的应用举例二维数组的应用举例25 4.3 4.3 字符数组字符数组本节内容本节内容 4.3.2 字符串与字符数组字符串与字符数组 4.3.3 字符数组的初始化字符数组的初始化 4.3.4 字符数组的引用字符数组的引用 4.3.1 字符数组的定义字符数组的定义26 4.3 4.3 字符数组字符数组本节内容本节
20、内容 4.3.6 常用字符串处理函数常用字符串处理函数 4.3.7 综合应用举例综合应用举例 4.3.5 字符数组的应用举例字符数组的应用举例274.3.1 4.3.1 字符数组的定义字符数组的定义v用来存放字符数据的数组是用来存放字符数据的数组是字符数组字符数组,字符数组,字符数组中的一个数组元素存放一个字符。中的一个数组元素存放一个字符。v字符数组的定义一般形式如下:字符数组的定义一般形式如下:vchar char 数组名数组名 常量表达式常量表达式 v例如例如“char c10;”char c10;”定义了一个一维字符数组定义了一个一维字符数组c c,它的长度为,它的长度为1010,可以
21、存放,可以存放1010个字符或一个长度个字符或一个长度不大于不大于9 9的字符串。的字符串。v又如又如“char c35;”char c35;”定义了一个二维字符数组定义了一个二维字符数组c c,它可以存放,它可以存放1515个字符或个字符或3 3个长度不大于个长度不大于4 4的字符的字符串。串。284.3.2 4.3.2 字符串与字符数组字符串与字符数组vC C语言中有字符串常量,却没有字符串变量,通语言中有字符串常量,却没有字符串变量,通常用字符数组来存放字符串。常用字符数组来存放字符串。v字符串是以字符串是以00作为结束符的字符序列作为结束符的字符序列。v当一个字符串存入字符数组时,当一
22、个字符串存入字符数组时,C C编译系统会自编译系统会自动将结束符动将结束符00存入数组,以此作为该字符串存入数组,以此作为该字符串结束的标志,这要比用字符逐个的给字符数组赋结束的标志,这要比用字符逐个的给字符数组赋值多占一个字节来存放字符串结束标志值多占一个字节来存放字符串结束标志00。如:如:char c8=Li Chen;char c8=Li Chen;L Li i C Ch he en n00294.3.2 4.3.2 字符串与字符数组字符串与字符数组v采用采用00标志作为字符串的结束标志后,在用标志作为字符串的结束标志后,在用字符串赋初值时无需指定数组的长度,可以由编字符串赋初值时无需
23、指定数组的长度,可以由编译系统自动处理。译系统自动处理。如:如:char c=Li Chen;char c=Li Chen;在内存中占在内存中占8 8个字节,分别存储个字节,分别存储L,i,L,i,C,h,e,nC,h,e,n和和00。v字符串常量字符串常量“Li ChenLi Chen”,”,代表字符串所在内存的代表字符串所在内存的首地址,而不是字符串序列本身首地址,而不是字符串序列本身,所以只能在定义所以只能在定义数组时用字符串常量初始化,不能给已经定义好数组时用字符串常量初始化,不能给已经定义好的数组赋字符串常量。的数组赋字符串常量。如不能:如不能:char c10;char c10;C
24、10=C10=Li Chen;Li Chen;304.3.3 4.3.3 字符数组的初始化字符数组的初始化v对字符数组初始化,最容易理解的方式是用字对字符数组初始化,最容易理解的方式是用字符常量初始化字符数组。如:符常量初始化字符数组。如:char c110=I,a,m,h,a,char c110=I,a,m,h,a,p,p,y;p,p,y;v用字符串常量初始化字符数组。如:用字符串常量初始化字符数组。如:char c4=I am happy;char c4=I am happy;char c511=I am happy;char c511=I am happy;v总之,对字符数组赋值可以有以
25、下几种形式:总之,对字符数组赋值可以有以下几种形式:char c68=Li Chen;char c68=Li Chen;char c7=Li Chen;char c7=Li Chen;char c8=L,i,C,h,e,nchar c8=L,i,C,h,e,n;314.3.3 4.3.3 字符数组的初始化字符数组的初始化v区分区分00与与000=0逻辑逻辑假假0=48逻辑逻辑真真0与与0324.3.3 4.3.3 字符数组的初始化字符数组的初始化v区分区分AA与与AAAA1.1.占占1 1个字节个字节;2.2.是数值是数值;3.3.格式符格式符%c c;4.4.赋值方式:赋值方式:char c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言程序设计基础 语言程序设计 基础 数组

限制150内