




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章,数组,主要内容,3.1一维数组的定义和引用3.2二维数组3.3字符数组3.4综合举例,【例4-1】使用多个变量实现成绩打印。#includevoidmain()inta1,a2,a3,a4,a5,a6,a7,a8,a9,a10,t;scanf(%d%d%d%d%d%d%d%d%d%d,4数组,一个班学生的学习成绩一行文字一个矩阵这些数据的特点是:1.具有相同的数据类型2.使用过程中需要保留原始数据,C语言为这些数据,提供了一种构造数据类型:数组。所谓数组就是一组具有相同数据类型的数据的有序集合。,语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。根据数组元素的类型,把数组分为数值数组、字符数组、指针数组、结构数组等各种类别。,4数组,4.1一维数组的定义和引用,1.一维数组的定义格式为:类型说明符数组名常量表达式;例如:inta10;它表示定义了一个整型数组,数组名为a,此数组有10个元素。,说明:1.“类型说明符”是指数组元素的数据类型。,4.1一维数组的定义和引用,2.数组名定名规则和变量名相同,遵循标识符命名规则。3.在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。4.常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义.,charch20;/*说明字符数组ch,有20个元素*/floatb10,c20;/*说明实型数组b,有10个元素,实型数组c,有20个元素*/inta5=3,6,9,4,8;/*说明整型数组a,有5个元素*/,4.1一维数组的定义和引用,例:,2.一维数组在内存中的存放,一维数组:floatmark100;,每个数据元素占用的字节数,就是基类型的字节数一个元素占4个字节,注意:1、对于同一个数组,其所有元素的数据类型都是相同的。2、数组名不能和其他变量名相同。voidmain()inta;floata10;3、允许在同一个类型说明中,说明多个数组和多个变量。例如:inta,b,c,d,k110,k220;,4.1一维数组的定义和引用,4.1一维数组的定义和引用,4.1.2一维数组元素的表示方法数组元素是组成数组的基本单元,也是一种变量,通常也称为下标变量。一般形式:数组名下标,下标可以是整型常量或整型表达式,表示元素在数组中的顺序号,例如:inta5=3,6,9,4,8;,a5表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a0=3,a1=6,a2=9,a3=4,a4=8,注意:定义数组时用到的“数组名常量表达式”和引用数组元素时用到的“数组名下标”是有区别的。例如inta10;t=a6;,4.1一维数组的定义和引用,注意:1、先定义数组,再使用数组下标。2、只能逐个引用下标变量,而不能一次引用整个数组。(在C语言中,数组作为1个整体,不能参加数据运算,只能对单个的元素进行处理。),4.1一维数组的定义和引用,例如:输出有10个元素的数组必须使用循环语句逐个输出各下标变量:for(i=0;i10;i+)printf(%d,ai);,printf(“%d”,a);,【例4-2】使用数组实现成绩打印。#includevoidmain()inta10;/*定义1个整型数组w10存放成绩*/intt,i;for(i=0;i10;i+)scanf(%d,/*循环输出小于平、均值的数组元素*/,4.1一维数组的定义和引用,【例4-3】数组下标使用。#includevoidmain()inti,a10;/*定义普通变量和数组a*/for(i=0;i=0;i-)/*逆序输出ai*/printf(%d,ai);printf(n%d%dn,a5.2,a5.8);/*下标为实数时,系统自动取整*/,4.1一维数组的定义和引用,4.1.3一维数组元素的赋值1、数组初始化赋值数组初始化赋值是指在数组说明时给数组元素赋予初值。初始化赋值的一般形式为:类型说明符数组名常量表达式=值1,值2值n;在中的各数据值即为各元素的初值,各值之间用逗号间隔。,4.1一维数组的定义和引用,inta10=0,1,2,3,4,5,6,7,8,9;相当于:a0=0;a1=1;.a9=9;,4.1一维数组的定义和引用,例:,(1)可以只给一部分元素赋值。例如:inta10=0,1,2,3,4;定义a数组有10个元素,但花括弧内只提供5个初值,这表示只给前面5个元素赋初值,后5个元素值为0。,4.1一维数组的定义和引用,注意:,(2)只能给元素逐个赋值,不能给数组整体赋值。例如:给10个元素全部赋1值,inta10=1;,inta10=1,1,1,1,1,1,1,1,1,1;,4.1一维数组的定义和引用,(4).在对全部数组元素赋初值时,由于数组元素的个数已经确定,因此可以不指定数组长度。例如:inta5=1,2,3,4,5;也可以写成inta=1,2,3,4,5;inta10=1,2,3,4,5;只初始化前5个元素,后5个元素为0。,(3).如果想使一个数组中全部元素值为0,可以写成:inta10=0,0,0,0,0,0,0,0,0,0;或inta10=0;,2、动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合函数scanf()逐个对数组元素赋值。,4.1一维数组的定义和引用,【例4-4】使用数组求数组最大值。#includevoidmain()inti,max,a10;printf(input10numbers:n);for(i=0;imax)max=ai;printf(maxnum=%dn,max);,4.1一维数组的定义和引用,【例4-5】使用数组实现排序。#includevoidmain()inti,j,p,q,s,a10;printf(ninput10numbers:n);for(i=0;i10;i+)scanf(%d,4.2二维数组,4.2.1二维数组的定义,二维数组定义的一般形式为类型说明符数组名常量表达式1常量表达式2;,表示第一维下标的长度,表示第二维下标的长度,例如:inta34;说明了一个3行4列的数组,数组名为a,其数组元素的类型为整型。,该数组的下标变量共有34个,即:a00,a01,a02,a03a10,a11,a12,a13a20,a21,a22,a23在语言中,二维数组是按行排列的,即二维数组中的元素是按照行的顺序依次存放在一维的存储器中(一段连续的地址列表)。,4.2二维数组,注意:我们可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如:可以把a34看作是一个一维数组,它有3个元素:a0、a1、a2,每个元素又是一个包含4个元素的一维数组。,4.2二维数组,二维数组在内存中的存放,二维数组中的元素在内存中的排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素,下图表示对a34数组存放的顺序,4.2.2二维数组的引用,4.2二维数组,二维数组元素的表示形式为:数组名下标下标例如:a23下标可以是整型常量或整型表达式,如:a22*2,常出现的错误有:inta34;/*定义a为34的数组*/a34=3;,在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。,4.2二维数组,4.2二维数组,【例4-6】一个学习小组有5个人,每个人有三门课的考试成绩,具体信息如表4-1所示。求全组分科的平均成绩和各科总平均成绩。,可设一个二维数组a53存放五个人三门课的成绩。再设一个一维数组v3存放所求得各分科平均成绩,设变量k为全组各科总平均成绩。,#includevoidmain()inti,j,s=0,k,v3,a53;printf(inputscoren);for(i=0;i3;i+)for(j=0;j5;j+)scanf(%d,4.2.3二维数组的初始化,数据类型数组名常量表达式1常量表达式2初始化数据;,可以用下面2种方法对二维数组初始化:,.分行给二维数组赋初值。例如:inta53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,85;,二维数组初始化是在类型说明时给各下标变量赋以初值.一般形式:,.可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。例如:inta53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,75;,4.2.3二维数组的初始化,【例4-7】使用数组赋值完成例4-6。#includevoidmain()inti,j,s=0,k,v3;inta53=80,75,92,61,65,71,59,63,70,85,87,90,76,77,85;for(i=0;i3;i+)for(j=0;j5;j+)s=s+aji;vi=s/5;/*求各科平均*/s=0;k=(v0+v1+v2)/3;/*求总平均*/printf(math:%dnclanguag:%dndbase:%dn,v0,v1,v2);printf(total:%dn,k);,4.2.3二维数组的初始化,4.2.3二维数组的初始化,说明:1.可以对部分元素赋初值,未赋值的元素自动取0值;例如:inta33=1,2,3;,100200300,010002300,而inta33=0,1,0,0,2,3;,4.2.3二维数组的初始化,.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。例如:inta34=1,2,3,4,5,6,7,8,9,10,11,12;它等价于:inta4=1,2,3,4,5,6,7,8,9,10,11,12;,4.3字符数组,用来存放字符量的数组称为字符数组。一维字符数组的定义格式:char数组名常量表达式;例如:charc10;字符数组也可以是二维或多维数组,例如:charc510;为二维字符数组。,4.3.1字符数组初始化,字符数组也允许在类型说明时作初始化赋值。例如:charc10=c,p,r,o,g,r,a,m;赋值后各元素的值及存储情况如下:,其中c9未赋值,由系统自动赋予0值,0,4.3.1字符数组初始化,如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。,charc=I,a,m,h,a,p,p,y;,数组c的长度自动定为10。,【例4-8】使用字符数组实现二维数组运算。#includevoidmain()inti,j;chara5=B,A,S,I,C,d,B,A,S,E;for(i=0;i=1;i+)for(j=0;j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防洪排洪工程合同范本
- 灯箱租赁合同范本长
- 收购咖啡鲜果合同范本
- 加装电梯签约合同范本
- 混凝土块购销合同范本
- 防水施工合同范本2017
- 合作双方出资合同范本
- 护士医院劳务合同范本
- 店面展位出租合同范本
- 终身售后装修合同范本
- 2024高海拔地区模块化增压式建筑技术标准
- 于永正教育文集:于永正:我怎样教语文
- 高中英语新外研版选择性必修四Unit2知识点归纳总结(复习课件)
- XX市选调生跟班学习鉴定表
- 身为职场女性:女性事业进阶与领导力提升
- 普洱市森洁乳胶制品有限公司灭菌乳胶医用手套工厂项目环评报告书
- 著名文学著作列夫托尔斯泰《复活》教育阅读名著鉴赏课件PPT
- 泛微协同办公应用平台解决方案
- (新)部编人教版高中历史中外历史纲要上册《第13课-从明朝建立到清军入关课件》讲解教学课件
- 医药行业专题报告:VCTE技术(福瑞股份子公司)专利概览
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
评论
0/150
提交评论