C语言7数组课件教程

上传人:无*** 文档编号:245279592 上传时间:2024-10-08 格式:PPT 页数:41 大小:1.12MB
返回 下载 相关 举报
C语言7数组课件教程_第1页
第1页 / 共41页
C语言7数组课件教程_第2页
第2页 / 共41页
C语言7数组课件教程_第3页
第3页 / 共41页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C,语言程序设计,第,7,章 数 组,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C,程序设计,第,7,章 数 组,第,7,章 数 组,构造数据类型之一,数组,:,有序数据的集合,用数组名标识,元素,:,属同一数据类型,用数组名和下标确定,1,7.1,一维数组,一维数组的定义,:,数据类型 数组名,常量,表达式,;,合法标识符,表示元素个数,下标从,0,开始,例,int,a6;,编译时分配连续内存,内存字节数,=,数组定义的元素个数*,sizeof,(,元素数据类型,),数组名表示内存首地址,,是,地址常量,a,0,1,4,5,2,3,a0,0,1,4,5,a1,a2,a3,a4,a5,2,3,a,2,一维数组的引用,数组必须,先定义,后使用,只能,逐个,引用数组,元素,,不能一次引用整个数组,数组元素表示形式:数组名下标,其中:下标可以是整型常量或整型表达式,以,0,开始,到,n-1,结束,例,int,a10;,printf(“%d”,a,);(,),必须,for(j=0;j10;j+),printf(“%dt”,aj,);,(,),例,int,data5;,data5=10;,/C,语言对数组不作越界检查,使用时要,注意,3,一维数组的初始化,初始化方式,在定义数组时,为数组元素赋初值,(,在编译阶段使之得到初值),int,a5=,1,2,3,4,5,;,等价于:,a0=1;a1=2;a2=3;a3=4;a4=5;,说明:,数组不初始化,其元素值为随机数,对,static,数组元素不赋初值,系统会自动赋以0值,当全部数组元素赋初值时,可不指定数组长度,如,int,a5=6,2,3;,等价于:,a0=6;a1=2;a2=3;a3=0;a4=0;,如,int,a3=6,2,3,5,1;(,),static,int,a5;,等价于:,a0=0;a1=0;a2=0;a3=0;a4=0;,只给部分数组元素赋初值,int,a=1,2,3,4,5,6;,编译系统根据初值个数确定数组,元素个,数,4,一维数组遍历方法:,/n,为数组元素个数,for(i=0;in;i+),printf(“%d”,ai,);,5,程序举例,例 读,10,个整数存入数组,找出其中最大值和最小值,步骤,:,1.,输入,:for,循环输入10个整数,2.,处理,:,(a),先令,max=min=x0,(b),依次用,xi,和,max,min,比较(循环),若,maxxi,令,min=xi,3.,输出:,max,和,min,#include,#define SIZE 10,main(),int,xSIZE,i,max,min,;,printf(Enter,10 integers:n);,for(i,=0;i,SIZE;i,+),scanf(%d,&,xi,);,max=min=x0;,for(i,=1;i,SIZE;i,+),if(max,xi,)min=,xi,;,printf(Maximum,value is%,dn,max,);,printf(Minimum,value is%,dn,min,);,6,例 用数组求,Fibonacci,数列前20个数,f0,f1,f2,f3,f4,f5,f19,.,1,1,f19,0,1,4,5,2,3,19,2,3,5,#include,main(),int,i;,int,f20=1,1;,for(i,=2;i20;i+),fi,=fi-2+fi-1;,for(i,=0;ia1,,,则交换;然后比较第二个数与第三个数;依次类推,直至第,n-1,个数和第,n,个数比较为止,第一趟冒泡排序,,结果,最大,的数被安置在最后一个元素位置上,(2)对前,n-1,个数进行第二趟冒泡排序,结果使,次大,的数被安置在第,n-1,个元素位置,(3)重复上述过程,共经过,n-1,趟冒泡排序后,排序结束,8,例,38 49 65 76 13 27 30,97,第二趟,38 49 65 13 27 30,76,第三趟,38 49 13 27 30,65,第四趟,38 13 27 30,49,第五趟,13 27 30,38,第六趟,13 27,30,第七趟,49 38 65 97 76 13 27 30,第一趟,n=8,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,13,27,一共比较了,7,趟,相当于,n-1,趟,i=0 to,n-j,i=0 to 7,0 to 6,0 to 5,0 to 4,0 to 3,0 to 2,0 to 1,j,表示趟数,i,表示每次比较的数组元素下标,9,输入,n,个数给,a0,到,an-1,for j=1 to n-1,for i=0 to n-j,aiai+1,真,假,ai,ai+1,输出,a0,到,an-1,#include,main(),int,a10,i,j,t;,printf(Input,10 numbers:n);,for(i,=0;i10;i+),scanf(%d,&ai,);,printf(n,);,for(j,=1;j10;j+),for(i,=0;iai+1),t=,ai,;,ai,=ai+1;ai+1=t;,printf(The,sorted numbers:n);,for(i,=0;i10;i+),printf(%d,ai,);,10,7.2,二维数组及多维数组,二维数组和多维数组的定义,定义方式:,数据类型数组名,常量表达式,常量表达式,;,数组元素的存放顺序,原因:内存是一维的,二维数组:按行序优先,多维数组:最右下标变化最快,例,int,a34;,float b25;,int,c234;,int,a3,4;,(,),行数,列数,元素个数,=,行数*列数,int,a32,a01,a10,a11,a20,a21,0,1,4,5,2,3,a00,a00 a01,a10 a11,a20 a21,11,二维数组理解,例,int,a34;,2016,17,2018,19,2020,21,2022,23,2008,9,2010,11,2012,13,2014,15,2000,1,2002,3,2004,5,20006,7,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,每个元素,ai,由包含,4,个元素,的一维数组组成,二维数组,a,是由,3,个元素组成,a0,a1,a2,行名,0,1,4,5,2,3,a01,a02,a03,a10,a11,a00,a13,a20,a21,a22,a23,a12,6,7,10,11,8,9,a0,a1,a2,12,二维数组元素的引用,形式:,数组名,下标,下标,二维数组元素的初始化,分行初始化:,例,int,a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,按元素排列顺序初始化,例,int,a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,0,4,0,0,部分初始化,例,int,a3=,1,4,5,;,a00,a01,a02,a10,a11,a12,1,0,0,4,5,0,第一维,长度省略初始化,例,int,a23=,1,2,3,4,5,6,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,6,全部初始化,例,int,a23=,1,2,4,;,a00,a01,a02,a10,a11,a12,1,2,4,0,0,0,部分初始化,例,int,a3=,1,2,3,4,5,;,a00,a01,a02,a10,a11,a12,1,2,3,4,5,0,第一维,长度省略初始化,13,遍历所有二维数组元素,anm,for(i,=0;i,n;i,+),for(j,=0;jm;j+),printf(“%d”,aij,);,14,程序举例,例 将二维数组行列元素互换,存到另一个数组中,a=,1 2 3,4 5 6,b=,1 4,2 5,3 6,#include,main(),int,a23=1,2,3,4,5,6;,int,b32,i,j;,for(i,=0;i 2;i+),for(j,=0;j 3;j+),bji,=,aij,;,printf(array,b:n,);,for(i,=0;i 3;i+),for(j,=0;j max,真,假,max=aij,row=i,colum,=j,输出,:,max,和,row,colum,#include,main(),int,a34=1,2,3,4,9,8,7,6,-10,10,-5,2;,int,i,j,row,=0,colum=0,max;,max=a00;,for(i,=0;i=2;i+),for(j,=0;j max),max=,aij,;,row=i;,colum,=j;,printf(max,=%,d,row,=%d,colum,=%,dn,max,row,colum,);,16,例 读入下表中值到数组,分别求各行、各列及表中所有数之和,12 4 6,15 7 9,8 23 3,2 5 17,12 4 6,22,15 7 9,31,8 23 3,34,2 5 17,24,37,39,35,111,#include,main(),int,x54,i,j;,for(i,=0;i4;i+),for(j,=0;j3;j+),scanf(%d,&xij,);,for(i,=0;i3;i+),x4i=0;,for(j,=0;j5;j+),xj3=0;,for(i,=0;i4;i+),for(j,=0;j3;j+),xi3+=,xij,;,x4j+=,xij,;,x43+=,xij,;,for(i,=0;i5;i+),for(j,=0;j4;j+),printf(%5dt,xij);,printf(n,);,x40,x41,x42,x03,x13,x23,x43,x33,17,7.3,字符数组和字符串,在,C,语言中对于字符串没有专门的变量定义,使用的是字符数组,.,字符数组中每个元素存放字符串中的一个字符,.,字符数组是数组的一种特殊情况,.,它的定义和引用和数学数组相类似,也有特殊的引用方式,.,18,字符数组,定义,字符数组的初始化,逐个字符赋值,用字符串常量,例,char ch5=H,e,l,l,o;,ch0,H,e,l,l,o,逐个字符赋值,ch1,ch2,ch3,ch4,例,char c10,ch34;,例,char ch5=B,o,y;,ch0,B,o,y,0,0,逐个字符赋值,ch1,ch2,ch3,ch4,例,char ch5=“Boy”;,ch0,B,o,y,0,0,用字符串常量,ch1,ch2,ch3,ch4,例,char ch6=“Hello”;,char ch6=“Hello”;,char,ch,=“Hello”;,用字符串常量,ch0,H,e,l,l,o,ch1,ch2,ch3,ch4,0,ch5,注意:,数组长度应至少为字符串长度,+1.,19,例,char diamond,5=.,.,*,.,*,.,*,*,.,.,.,*,.,*,.,*,.,.,*;,二维字符数组初始化,.,.,*,0,0,.,*,.,*,0,*,.,.,.,*,.,*,.,*,0,.,.,*,0,0,diamond0,diamond1,diamond2,diamond3,diamond4,20,字符串,字符串及其结束标志,字符串结束标志:,0,以,0,此来判定字符串结束,例 “,hello”,共5个字符,在内存占6个字节 字符串长度5,h e l l o,0,104 101
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!