【精品】c c++语言程序设计(西电版第4章 数组精品ppt课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《【精品】c c++语言程序设计(西电版第4章 数组精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】c c++语言程序设计(西电版第4章 数组精品ppt课件.ppt(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C C+语言程序设计(西电版)第4章 数组第第4章章 数数组4.1 一一维数数组4.2 二二维数数组4.3 字符数字符数组与字符串与字符串4.4 指指针与数与数组4.5 指向指指向指针的指的指针4.6 小小结第第4章章 数数组l一个人一个人N门课的成的成绩怎怎样存存储和和处理?理?l一个班一个班N门课的成的成绩怎怎样存存储和和处理?理?.这些数据的特点些数据的特点:具有相同的数据具有相同的数据类型。型。为了方便地使用了方便地使用这些数据,些数据,C语言提供了一种言提供了一种构造数据构造数据类型:型:数数组。数数组是个是个多多值变量量,由一由一组同名同名但但不同下不同下标的元素构成。的元素构成。
2、一个数一个数组被被顺序序存放在一存放在一块连续的内存中的内存中,用用数数组名名和和下下标就可以唯一地确定某个数就可以唯一地确定某个数组元素。元素。只有一个下只有一个下标的数的数组被称被称为一一维数数组,有两,有两个下个下标的数的数组被称被称为二二维数数组,以此,以此类推。推。C语言允言允许使用任意使用任意维数的数数的数组。4.1 一一维数数组 “数据数据数据数据类类型型型型”:是数是数是数是数组组元素的数据元素的数据元素的数据元素的数据类类型。型。型。型。“数数数数组组名名名名”:遵循遵循遵循遵循C C语语言言言言标识标识符符符符规则规则。“整型常量表达式整型常量表达式整型常量表达式整型常量表
3、达式”:表示数表示数表示数表示数组组中有多少个元素,中有多少个元素,中有多少个元素,中有多少个元素,即数即数即数即数组组的的的的长长度。它可以是整型常量、整型常量表达度。它可以是整型常量、整型常量表达度。它可以是整型常量、整型常量表达度。它可以是整型常量、整型常量表达式或符号常量,但不能包含式或符号常量,但不能包含式或符号常量,但不能包含式或符号常量,但不能包含变变量。量。量。量。例如:例如:例如:例如:float xfloat x1010;数数数数组组名表示数名表示数名表示数名表示数组组第一个元素第一个元素第一个元素第一个元素x0 x0的地址,也就是的地址,也就是的地址,也就是的地址,也就是
4、整个数整个数整个数整个数组组的首地址,是一个地址常量。的首地址,是一个地址常量。的首地址,是一个地址常量。的首地址,是一个地址常量。4.1.1 一一维数数组的定的定义数据类型数据类型 数组名数组名整型常量表达式整型常量表达式;数数数数组组定定定定义义中中中中应应注意以下几个注意以下几个注意以下几个注意以下几个常常常常见错误见错误:(1 1)“int xint x;”数数数数组组名后面的方括号中内容不能名后面的方括号中内容不能名后面的方括号中内容不能名后面的方括号中内容不能为为空,必空,必空,必空,必须为须为整型常量表达式。整型常量表达式。整型常量表达式。整型常量表达式。(2 2)“int x(
5、5);int x(5);”数数数数组组名后名后名后名后应该为应该为方括号。方括号。方括号。方括号。(3 3)“int n=4;int xn;int n=4;int xn;”方括号中不能是方括号中不能是方括号中不能是方括号中不能是变变量,量,量,量,必必必必须须是常量。是常量。是常量。是常量。以下数以下数以下数以下数组组定定定定义义是正确的:是正确的:是正确的:是正确的:#define N 10#define N 10float score1N,score2N;float score1N,score2N;int num10+N;int num10+N;char c26;char c26;4.1.
6、1 一一维数数组的定的定义(续)84.1.2 一一维数数组的引用(的引用(续)说明明:(1 1)由于数)由于数)由于数)由于数组组元素与同一元素与同一元素与同一元素与同一类类型的型的型的型的简单变简单变量具有相量具有相量具有相量具有相同的地位和作用,因此,同的地位和作用,因此,同的地位和作用,因此,同的地位和作用,因此,对变对变量的任何操作量的任何操作量的任何操作量的任何操作都适用于数都适用于数都适用于数都适用于数组组元素。元素。元素。元素。(2 2)在引用数)在引用数)在引用数)在引用数组组元素元素元素元素时时,下,下,下,下标标可以是整型常数或可以是整型常数或可以是整型常数或可以是整型常数
7、或表达式,表达式内允表达式,表达式内允表达式,表达式内允表达式,表达式内允许变许变量存在。若定量存在。若定量存在。若定量存在。若定义义“int x5;int x5;”,设设i=3i=3,下列引用都是正确的:,下列引用都是正确的:,下列引用都是正确的:,下列引用都是正确的:xi/*引用数引用数组x的第的第3个元素个元素*/xi+/*引用数引用数组x的第的第3个元素个元素*/x2*i6 /*引用数引用数组x的第的第0个元素个元素*/4.1.2 一一维数数组的引用(的引用(续)说明明:(3 3)下)下)下)下标标从从从从0 0开始(下界开始(下界开始(下界开始(下界为为0 0),数),数),数),数
8、组组的最大下的最大下的最大下的最大下标标(上界)是数(上界)是数(上界)是数(上界)是数组长组长度减度减度减度减1 1。例如:例如:例如:例如:int a10;int a10;scanf(%d,&a10);scanf(%d,&a10);/*/*下标越界下标越界下标越界下标越界*/C编译系统不做越界检查,如果引用的数组元素编译系统不做越界检查,如果引用的数组元素超出数组范围会破坏其他变量的值。超出数组范围会破坏其他变量的值。4.1.2 一一维数数组的引用(的引用(续)说明明:(4 4)在在在在C C语语言中,一般需逐个地使用下言中,一般需逐个地使用下言中,一般需逐个地使用下言中,一般需逐个地使用
9、下标变标变量引用量引用量引用量引用数数数数组组元素。例如,元素。例如,元素。例如,元素。例如,输输出有出有出有出有1010个元素的整型数个元素的整型数个元素的整型数个元素的整型数组组,须须使用循使用循使用循使用循环语环语句逐个句逐个句逐个句逐个输输出各下出各下出各下出各下标变标变量:量:量:量:int a10;int a10;for(i=0;i10;i+)for(i=0;i10;i+)printf(%d ,ai);printf(%d ,ai);而不能用一个而不能用一个而不能用一个而不能用一个语语句句句句输输出整个数出整个数出整个数出整个数组组,下面的写法是,下面的写法是,下面的写法是,下面的写
10、法是错错误误的:的:的:的:printf(%d ,a);printf(%d ,a);114.1.2 一一维数数组的引用(的引用(续)(5)是是下下标运算符运算符,引用引用数数组元素元素时,根据数,根据数组的的首地址首地址和和下下标数,数,计算出算出该元素的元素的实际地址,取出地址,取出该地地址的址的内容内容进行操作。行操作。如引用如引用 score2:(1)计算算 20002000+2 2*4=*4=20082008(2)(2)取出取出20082008的内容的内容2000H2004H2008H200CH218CHscore0score1score2score3score491.534.567.
11、572.084.0124.1.3 一一维数数组元素的初始化元素的初始化初始化:初始化:在定在定义数数组时给数数组元素元素赋初初值。(1)在定在定义数数组时,对全部数全部数组元素元素赋初初值。例如:例如:int x5=1,2,3,4,5;此此时可以省略数可以省略数组长度,例如:度,例如:int x=1,2,3,4,5;(2)在定在定义数数组时,对部分数部分数组元素元素赋初初值。例如:例如:int x5=1,2,3;只只给前面三个元素前面三个元素赋初初值(x0=1,x1=2,x2=3),),为其余元素其余元素赋00。(3)当初当初值的个数多于数的个数多于数组元素的个数元素的个数时,编译出出错。例如
12、:例如:int x5=1,2,3,4,5,6;数据类型数据类型 数组名数组名整型常量表达式整型常量表达式=常量表常量表 达式,常量表达式,达式,常量表达式,4.1.4 一一维数数组应用用举例例【例例4.2】数数组赋值与数与数组拷拷贝。#include stdio.h#include stdio.hvoid main()void main()int a10,b10,i;int a10,b10,i;for(i=0;i10;i+)for(i=0;i10;i+)ai=i+1;ai=i+1;for(i=0;i10;i+)for(i=0;i10;i+)bi=ai;bi=ai;for(i=0;i10;i+)
13、for(i=0;imaxaimax 则则:max=ai;k=imax=ai;k=i;否否否否则则判断判断判断判断:若若若若aiminaimin 则则:min=ai;j=i;min=ai;j=i;l l当所有的数都比当所有的数都比当所有的数都比当所有的数都比较较完之后,将完之后,将完之后,将完之后,将aj=maxaj=max;ak=minak=min;l l输输出出出出a a数数数数组组。main()main()int a5,max,min,i,j,k;int a5,max,min,i,j,k;for(i=0;i5;i+)for(i=0;i5;i+)scanf(%d,&ai);scanf(%d,
14、&ai);min=a0;max=a0;min=a0;max=a0;j=k=0;j=k=0;for(i=1;i5;i+)for(i=1;i5;i+)if(aimin)if(aimax)max=ai;k=i;else if(aimax)max=ai;k=i;aj=max;ak=min;aj=max;ak=min;for(i=0;i5;i+)for(i=0;i5;i+)printf(%5d,ai);printf(%5d,ai);printf(n);printf(n);程序运行情况如下:程序运行情况如下:5 7 2 3 1 5 1 2 3 716【例例4.4】冒泡法排序(从小到大)。冒泡法排序(从小到
15、大)。以以6个数:个数:3、7、5、6、8、0为例例。第一趟排序情况如下:第一趟排序情况如下:3 7 5 6 8 0第一次第一次 3和和7比比较,不交,不交换 3 7 5 6 8 0第二次第二次 7和和5比比较,交,交换 3 5 7 6 8 0第三次第三次 7和和6比比较,交,交换 3 5 6 7 8 0第四次第四次 7和和8比比较,不交,不交换 3 5 6 7 8 0第五次第五次 8和和0比比较,交,交换 3 5 6 7 0 8在第一趟排序中,在第一趟排序中,6个数比个数比较了了5次,把次,把6个数中个数中的最大数的最大数8排在最后。排在最后。17冒泡法排序冒泡法排序(续)第二趟排序情况如下
16、第二趟排序情况如下第二趟排序情况如下第二趟排序情况如下:3 53 5 6 7 0 8 6 7 0 8第一次第一次第一次第一次 3 3和和和和5 5比比比比较较,不交,不交,不交,不交换换 3 3 5 65 6 7 0 8 7 0 8第二次第二次第二次第二次 5 5和和和和6 6比比比比较较,不交,不交,不交,不交换换 3 5 3 5 6 76 7 0 8 0 8第三次第三次第三次第三次 6 6和和和和7 7比比比比较较,不交,不交,不交,不交换换 3 5 6 3 5 6 7 07 0 8 8第四次第四次第四次第四次 7 7和和和和0 0比比比比较较,交,交,交,交换换 3 5 6 0 7 83
17、 5 6 0 7 8在第二趟排序中,在第二趟排序中,在第二趟排序中,在第二趟排序中,最大数最大数最大数最大数8 8不用参加比不用参加比不用参加比不用参加比较较,其余的,其余的,其余的,其余的5 5个数比个数比个数比个数比较较了了了了4 4次,把其中的最大数次,把其中的最大数次,把其中的最大数次,把其中的最大数7 7排在最后,排出排在最后,排出排在最后,排出排在最后,排出7 87 8。以此以此以此以此类类推:推:推:推:第三趟比第三趟比第三趟比第三趟比较较3 3次,排出次,排出次,排出次,排出 6 7 86 7 8第四趟比第四趟比第四趟比第四趟比较较2 2次,排出次,排出次,排出次,排出 5 6
18、 7 85 6 7 8第五趟比第五趟比第五趟比第五趟比较较1 1次,排出次,排出次,排出次,排出 3 5 6 7 83 5 6 7 8最后最后最后最后还还剩下剩下剩下剩下1 1个数个数个数个数0 0,不需再比,不需再比,不需再比,不需再比较较,得到排序,得到排序,得到排序,得到排序结结果:果:果:果:0 3 5 6 7 80 3 5 6 7 818冒泡法排序冒泡法排序(续)从上述从上述从上述从上述过过程可以看到:程可以看到:程可以看到:程可以看到:n n个数要比个数要比个数要比个数要比较较n1n1趟,而趟,而趟,而趟,而在第在第在第在第j j趟比趟比趟比趟比较较中,要中,要中,要中,要进进行行
19、行行njnj次两两比次两两比次两两比次两两比较较。冒泡法排序冒泡法排序for(i=0;iN;i+)输入输入ai for(j=1;jN;j+)for(i=0;iai+1 T F ai与与ai+1交换交换输出输出a0aN-119程序运行情况如下:程序运行情况如下:3 7 5 6 8 0 0 3 5 6 7 8#define N 6main()int aN;int i,j,t;for(i=0;iN;i+)/*给数数组a赋值*/scanf(%d,&ai);for(j=1;j=N1;j+)/*外外层循循环控制比控制比较的趟数的趟数*/for(i=0;iai+1)/*前后两数比前后两数比较、交、交换*/t
20、=ai;ai=ai+1;ai+1=t;printf(The sorted numbers:n);for(i=0;iN;i+)printf(%dt,ai);20以以6个数:个数:3、7、5、6、8、0为例。例。思路:思路:第一趟第一趟:将:将第一个数第一个数依次和后面的数比依次和后面的数比较,如果后面的某数小于如果后面的某数小于第一个数第一个数,则两个数交两个数交换,比比较结束后,束后,第一个数第一个数则是是最小最小的数。的数。第二趟第二趟:将:将第二个数第二个数依次和后面的数比依次和后面的数比较,如果后面的某数小于如果后面的某数小于第二个数第二个数,则两个数交两个数交换,比比较结束后,束后,第
21、二个数第二个数则是是次小次小的数;的数;。【例例4.5】比比较法排序(从小到大)。法排序(从小到大)。21【例例4.5】比比较法排序(法排序(续)图4.3 比较法排序for(i=0;iN;i+)输入输入ai for(j=0;jN-1;j+)for(i=j+1;iai T F aj与与ai交换交换 输出输出a0aN-122程序运行情况如下:程序运行情况如下:96 78 65 86 40 The sorted numbers:40 65 78 86 96#define N 5main()int aN;int i,j,t;for(i=0;iN;i+)scanf(%d,&ai);printf(n);f
22、or(j=0;jN1;j+)/*确定基准位置确定基准位置*/for(i=j+1;iai)t=aj;aj=ai;ai=t;printf(The sorted numbers:n);for(i=0;iN;i+)printf(“%dt”,ai);234.2 二二维数数组 “整型常量表达式整型常量表达式1”:规定了二定了二维数数组中一中一维数数组的个数。的个数。“整型常量表达式整型常量表达式2”:规定了一定了一维数数组中元中元素的个数。素的个数。例如:例如:float x23;4.2.1 二二维数数组的定的定义 X00X00 X01X01 X02X02X10X10 X11X11 X12X12int a
23、3,4,b(3,4),c ,d(3)(4);数据类型数据类型 数组名数组名整型常量表达式整型常量表达式1整型常量表达式整型常量表达式2;24x00 x01x02x10 x11x122000H2004H2008H200cH2010H2014H 地址地址值数数组元素元素与一与一维数数组相同,其下相同,其下标只能是正整数,并且从只能是正整数,并且从0开开始始编号的。号的。二二维数数组元素在内存中的元素在内存中的排列排列顺序序:按行存放按行存放25x0是数组名,是元素是数组名,是元素x00的地址的地址x1是数组名,是数组名,是元素是元素x10的地址的地址x0 x00,x01,x02x1 x10,x11
24、,x12 可以把可以把可以把可以把x x数数数数组组看作是包含二个元素的一看作是包含二个元素的一看作是包含二个元素的一看作是包含二个元素的一维维数数数数组组,每,每,每,每个元素又是一个含有三个元素的一个元素又是一个含有三个元素的一个元素又是一个含有三个元素的一个元素又是一个含有三个元素的一维维数数数数组组。必必必必须强调须强调的是,二的是,二的是,二的是,二维维数数数数组组x x中的中的中的中的x0 x0、x1x1、x2x2是是是是数数数数组组名,不是一个名,不是一个名,不是一个名,不是一个单纯单纯的数的数的数的数组组元素,不能当作普通元素,不能当作普通元素,不能当作普通元素,不能当作普通变
25、变量使用。量使用。量使用。量使用。二二维数数组可看作是一种特殊的一可看作是一种特殊的一维数数组26a34=3;/*下标越界下标越界*/a1,2=1;/*应写成应写成 a12=1;*/4.2.2 二二维数数组的引用的引用下下标表达式是表达式是结果果为任意非任意非负整型表达式,每个整型表达式,每个下下标都从都从0开始。开始。例:例:int a34;a00=3;a01=a00+10;数数组元素的表示形式元素的表示形式:数组名数组名 行下标表达式行下标表达式列下标表达式列下标表达式 274.2.2 二二维数数组的引用的引用注意:注意:数数组元素和数元素和数组定定义在形式中有些相似,但在形式中有些相似,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 【精品】c c+语言程序设计西电版第4章 数组精品ppt课件 c+ 语言程序设计 西电版第 数组 ppt 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内