ImageVerifierCode 换一换
格式:PPT , 页数:65 ,大小:1.55MB ,
资源ID:13341692      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13341692.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第05章数组.ppt)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第05章数组.ppt

1、Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Logo,*,Click to edit Master title style,第5章 数组,C+,程序设计,本章主要内容,1,2,3,4,5,5.2 一维数组的定义和引用,5.3 二维数组的定义和引用,5.4 用数组名作函数参数,5.5 字符数组,*5.6,C+,处理字符串的方法,字符串类与字符串变量,6,5.1,数组的概念,Logo,5.1 数组的概念,数组,是具有一定,顺序关系,的若干,相同类型变量的集合体,,组成数组的变量

2、称为该数组的,元素,。,数组必须包含两个要素:,数组名,和,下标,。,数组名和下标惟一地标识一个数组中的一个元素,如,a1、a2,等。,一个数组在内存中占一片连续的存储单元。,Logo,short,int,a10;,假设数组的起始地址为2000,则该数组在内存中的存储情况如图所示。,Logo,cout,a+i,endl,;,输出数组第,i,个元素,ai,的地址。,要输出数组第,i,个元素的值,必须用,ai:,cout,ai,endl,;,数组名,a,为数组的起始地址:,cout,a,endl,;,输出数组,a,的起始地址。,有关数组的输出问题,Logo,5.2 一维数组的定义和引用,5.2.1

3、 定义一维数组,定义一维数组:,类型标识符 数组名,常量表达式,;,例如,int,a10;,/,名为,a,的整型数组,有10个元素。,10表示,a,数组有10个元素,下标从0开始,这10个元素分别是:,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9。,注意:最后一个元素是,a9,,而不是,a10。,Logo,5.2 一维数组的定义和引用,2.,常量表达式,常量表达式可以包括,常量,、,常变量,和,符号常量,,但不能包含变量。,C+,不允许动态定义,数组的大小。,下列数组定义是否正确:,Logo,5.2 一维数组的定义和引用,5.2.2 引用一维数组的元素,数组必须,先定义,,,后使

4、用,。,只能逐个引用数组元素,不能一次引用整个数组中的全部元素。如:,a=1,2,3,数组元素的表示形式:,数组名,下标,下标可以是,整型常量/变量,或,整型表达式,。,Logo,例5.1 将数组元素的值逆序输出。,#,include,using,namespace,std,;,int,main,(),int,i,a,10;,for,(,i,=0;,i,a,i,;,for,(,i,=9;,i,=0;,i,-),cout,a,i,;,cout,endl,;,return,0;,Logo,5.2.3 一维数组的初始化,(1),在定义数组时给数组元素全部赋予初值。,例如:,int,a,10=0,1,

5、2,3,4,5,6,7,8,9;,(2),可以只给部分元素赋初值。例如,int,a,10=0,1,2,3,4;,(3),如果想使一个数组中全部元素值为1,可以写成,int,a,10=1,1,1,1,1,1,1,1,1,1;,不能写成:,int,a,10=,1*10;,或,int,a,10=1;,不能用一个值给数组所有元素赋初值。,Logo,5.2.3 一维数组的初始化,(4)在对全部数组元素赋初值时,可以不指定数组长度。,例如,int,a,5=0,1,2,3,4;,可写成:,int,a,=0,1,2,3,4;,注意:,若定义的数组长度与初值个数不相符,则不能省略数组长度。,Logo,例题:,5

6、2,一维数组程序举例,有一对兔子从出生后第3个月起每个月都生一对兔子。小兔子到第3个月又生一对兔子。假设所有兔子都不死,求第20个月的兔子对数,。,求,Fibonacci,数列问题,Logo,用数组处理:,#include,using,namespace,std,;,int,main,(),int,i,;,int,f,20=1,1;,for,(,i,=2;,i,20;,i,+),f,i,=,f,i,-2+,f,i,-1;,cout,f,19,endl,;,return,0;,Logo,不用数组处理:,#include,using,namespace,std,;,int,main,(),int

7、i,num,;,int,f1,f2;,f1=f2,=1;,for,(,i=3;i=20;i+,),num=f1+f2;,f1=f2;,f2=num;,cout,num,endl,;,return,0;,Logo,用递归处理:,#,include,using,namespace,std,;,int,main,(),int,fib,(,int,n,);,cout,fib,(20),endl,;,return,0;,int,fib,(,int,n,),int,num,;,if,(,n,=1|,n=,2),num,=1;,else,num,=,fib,(,n,-1)+,fib,(,n,-2);,re

8、turn,num,;,Logo,5.3 二维数组的定义和引用,有些数据要依赖于两个因素才能惟一地确定,例如有3个学生,每个学生有4门课的成绩。,可用二维数组表示:,int,stu_score34;,其中,s23,表示第,3,个学生第,4,门课的成绩。,Logo,5.3.1 定义二维数组,定义二维数组的一般形式:,类型标识符 数组名常量表达式常量表达式,例如:,float a34;,定义,a,为34(3行4列)的单精度数组,共12个元素,。,注意:,float a3,4;,Logo,5.3.1 定义二维数组,二维数组中元素存放的顺序是:,按行存放,,即在内存中先顺序存放第一行的元素,再存放第二行

9、的元素。例如:,int,a34;,数组存放的顺序。,Logo,5.3.1 定义二维数组,a,为二维数组的首地址;,a0,a1,a2,分别为第0、1、2行元素的首地址。,Logo,5.3.2 二维数组的引用,二维数组元素的表示形式为:,数组名下标下标,使用数组元素时,应该注意下标值不要越界。,int,a34;/,定义3行4列的数组,a34=15;/,引用,a34,元素,错误,定义,a,为34的数组,它可用的行下标值最大为2,列坐标值最大为3。最多可以用到,a23,a34,就超过了数组的范围。,Logo,5.3.3 二维数组的初始化,初始化方法,:,(1),分行给二维数组赋初值。如:,int,a,

10、34=,1,2,3,4,5,6,7,8,9,10,11,12,;,第1个花括号内的数据赋给第0行的元素,第2个花括号内的数据赋给第1行的元素即按行赋初值,。,Logo,5.3.3 二维数组的初始化,初始化方法:,(2),将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。如,:,int,a,34=1,2,3,4,5,6,7,8,9,10,11,12;,用第2种方法如果数据多,写成一大片,容易遗漏,也不易检查。,Logo,5.3.3 二维数组的初始化,初始化方法:,(3)对部分元素赋初值。如:,int,a,34=1,0,5,0,0,9;,它的作用是只对各行某些列的元素赋初值,其余元素值自

11、动置为0。赋初值后数组各元素为:,1 0 0 0,0 5 0 0,0 0 9 0,对非0元素少时比较方便,Logo,5.3.3 二维数组的初始化,初始化方法:,(4),如果,对全部元素都赋初值,,则定义数组时对,第一维的长度可以不指定,,但第二维的长度不能省。,如,int,a,4=1,2,3,4,5,6,7,8,9,10,11,12;,表示定义了34的数组,a,,行数=总个数/列数。,Logo,5.3.3 二维数组的初始化,注意:,如果定义时只,对部分元素赋初值而省略第一维的长度,,则必须分行赋初值。如:,int,a,4=1,0,5,0,0,9;,/,数组共有3行。,Logo,5.3.4 二维

12、数组程序举例,例5.,5,有一个34的矩阵,要求编程序求出,所有元素,的最大值,以及其所在的行号和列号。要求用函数处理。,编程思想:,按照行和列逐个比较元素,Logo,#,include,using namespace std;,int,main(),int,i,j,row,=0,colum=0,max;,int,a34=5,12,23,56,19,28,37,46,-12,-34,6,8;,max=a00;,for(i=0;i=2;i+),for(j=0;jmax,),max=,aij,;row=i;,colum,=j;,cout,max=max,row=row,colum,=,colum,

13、endl,;,return 0;,Logo,5.4 用数组名作函数参数,1.用,数组元素,作函数,实参,用数组元素作函数实参与用变量作实参一样,,将数组元素的值传送给形参变量,。,形参是变量,而不是数组,。,Logo,int,add(int,x,int,y),x,=2*,x,;,y,=2*,y,;,return,x,+,y,;,int,main(),int,a2=3,4;,int,sum;,sum=add(,a0,a1,);,cout,sum,endl,;,cout,a,0,endl,;,cout,a,1,endl,;,return,0;,Logo,5.4 用数组名作函数参数,2.用,数组名,

14、作函数,参数,用数组名作函数参数,此时,实参与形参都用数组名,。,实参与形参的数组为同一个数组,。,Logo,5.4 用数组名作函数参数,例5.,7,用选择法对数组中10个整数按由小到大排序。,所谓选择法:,就是先将10个数中最小的数与,a0,对换;再将,a1,到,a9,中最小的数与,a1,对换每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。,Logo,int,main(),void,select_sort,(,int,array,int,n);,int,a10,i;,cout,输入10个数,:,endl,;,for(i,=0;i,ai,;,cout,endl,;,select_so

15、rt(,a,10);,/,函数调用,数组名作实参,cout,the sorted array:,endl,;,for(i,=0;i10;i+)/,输出10个已排好序的数,cout,ai,;,cout,endl,;,return 0;,Logo,void,select_sort(int,array,int,n),/,形参,array,是数组名,int,i,j,k,t,;,for(i,=0;in-1;i+),k=i;,for(j,=i+1;j,n;j,+),if(arrayj,arrayk,),k=j;,t=,arrayk,;,arrayk,=,arrayi,;,arrayi,=t;,Logo,5

16、4 用数组名作函数参数,例5.,3,编写程序,用,冒泡法,对,n(n,=,1;i-),flags,=,true,;,for,(,j,=0;jbj+1,),flags,=,false,;,temp=,bj,;,bj,=bj+1;,bj+1=temp;,if,(,flags,),break,;,Logo,int,main,(),int,a10,i,n;,cin,n;,for,(,i,=0;i,ai,;,bubble_sort,(,a,n,);,for,(,i,=0;i,n;i,+),cout,ai,;,cout,endl,;,return,0;,Logo,5.4 用数组名作函数参数,说明:,(1

17、)如果,函数实参是数组名,,,形参也应为数组名,,形参不能声明为普通变量(如,int,array;)。,实参数组与形参数组类型应一致(如都为,int,型),如不一致,结果将出错。,(2),数组名代表数组首元素的地址,,并不代表数组中的全部元素。因此,用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参,.,Logo,5.4 用数组名作函数参数,3.用多维数组名作函数参数,如果用二维数组名作为实参和形参,在对形参数组声明时,,必须指定第二维(即列)的大小,,,且应与实参的第二维的大小相同,。第一维的大小可以指定,也可以不指定。如,int,array310;,

18、/,形参数组的两个维都指定,int,array 10;,/,第一维大小省略,下面的形参数组写法不合法:,int,array ;,/,不能确定数组的每一行有多少列元素,int,array3;,/,不指定列数就无法确定数组的结构,Logo,5.4 用数组名作函数参数,3.用多维数组名作函数参数,例5.8 有一个34的矩阵,要求编程序求出所有元素的最大值,以及其所在的行号和列号。要求用数组处理。,Logo,#,include,using namespace std;,int,main(),int,max_value,(,int,array 4,);,int,a,34=11,32,45,67,22,4

19、4,66,88,15,72,43,37;,cout,max value is,max_value(,a,),endl,;,return 0;,int,max_value,(,int,array 4,),int,i,j,max,;,max=array00;,for(i=0;i3;i+),for(j,=0;jmax)max=,arrayij,;,return max;,Logo,5.5 字符数组,存放,字符数据,的数组是字符数组,字符数组中的,一个元素存放一个字符,。,字符数组具有数组的,共同属性,。,字符数组又具有,特殊的属性,。,Logo,5.5.1 字符数组的定义和初始化,一维字符数组定义:

20、char c10;,一维字符数组初始化:,char,c,10,=I,a,m,h,a,p,p,y,;,上面定义了,c,为字符数组,包含10个元素。,Logo,5.5.1 字符数组的定义和初始化,二维字符数组定义:,char,stu,510;,包含有5*10个元素(5行10列)。,二维字符数组初始化:,char,stu,510=,J,o,h,n,M,i,k,e,;,赋初值个数大于数组长度,编译出错;,赋初值个数小于数组长度,未赋初值元素的值自动为空(0)。,Logo,int,main(),int,i,j,upper,lower,digit,space,other,;char text310;,u

21、pper=lower=digit=space=other=0;,for(i=0;i3;i+),cout,“,输入一行字符:,i+1,endl;gets(texti,);,for(j=0;j=A&,textij,=a&,textij,=0&,textij,=9),digit+;,else if(,textij,=)space+;,else,other+;,cout,upper lower digit space string1;,cout,string2;,例:将输入的一串字符简单译码后输出。译码规则:每个字符均译成其后面的第4个字符。,Logo,#include,#include,using,

22、namespace,std,;,int,main,(),string,string1;,cin,string1;,for,(,int,i=0;istring1.length();i+),string1i=string1i+4;,cout,string1(大于)、=(大于或等于)、=(小于或等于),比较字符串。,使用这些运算符比使用字符串函数直观而方便。,Logo,5.6.3 字符串数组,不仅可以用,string,定义字符串变量,也可以用,string,定义,字符串数组,。如,string name5;,String name5=,Zhang,Li,Fun,Wang,Tan,;,Logo,5.6

23、3 字符串数组,(1)在一个字符串数组中包含若干个(现为5个)元素,每个元素相当于一个字符串变量。,(2)字符串数组的每一个元素存放一个字符串,而不是一个字符。,字符串数组相当于二维的字符数组。,(3)但每个字符串元素不要求具有相同的长度,即使对同一个元素,当向其重新赋值时,其长度可能发生变化。,(4)每一个字符串元素中只包含字符串本身的字符而不包括0。,Logo,5.6.4 字符串运算举例,例5.12 一个班有,n,个学生,需要把每个学生的简单材料(姓名、学号)输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料。当输入一个姓名后,程序就查找该班中有无此学生,如果有,则输出他的姓名

24、和学号,如果查不到,则输出“查无此人”。,Logo,#,include,#include,using namespace std;,string name50,num50;,/,定义两个字符串数组,分别存放姓名和学号,int,n;/n,是实际的学生数,void,input_data,(),int,i;,for(i=0;i,n;i,+),cout,输入学生姓名和学号,i+1,namei,numi,;,Logo,void,search(string,find_name,),int,i;,bool,flag=false;,for(i,=0;i,n;i,+),if(namei,=,find_name,

25、)/,如果要找的姓名与本班某一学生姓名相同,cout,namei,已找到,他的学号是,numi,endl,;,flag=true;,break;,if(flag,=false),cout,查无此人,;,Logo,int,main(),string,find_name,;,/,定义字符串变量,cout,n;,/,输入学生数,input_data,();,cout,find_name,;,search(find_name,);,/,调用,search,函数,寻找学生姓名,return 0;,Logo,5.6.3 字符串数组,C+,对字符串的处理有两种方法:,用字符数组的方法,这是,C,语言采取的方

26、法。,用,string,类定义字符串变量,称为,string,方法。,string,方法概念清楚,使用方便,最好采用这种方法。,C+,保留字符数组方法主要是为了与,C,兼容,使以前用,C,写的程序能用于,C+,环境。,Logo,#include,using namespace std;,int,main(),const,n=10,;,int,i;,char,an,;,cout,“,请输入字符串,:;,for(i,=0;i,ai,;,for(i,=n-1;i=0;i-),cout,ai,;,cout,endl,;,return 0;,P163,第,16,题(,1,),Logo,#include,#include,using namespace std;,int,main(),string a;,int,i,n,;,cout,a;,n=,a.size,();,for(i,=n-1;i=0;i-),cout,ai,;,return 0;,P163,第,16,题(,2,),Logo,Thank you,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服