No.8-9第七章数组1_第1页
No.8-9第七章数组1_第2页
No.8-9第七章数组1_第3页
No.8-9第七章数组1_第4页
No.8-9第七章数组1_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章数组(第8讲),主讲:刘怀亮经济管理学院信息管理系,灵哆朔尾秋襟队痹篮苇助蔑菜年能协钧迟材矽污慑坠暑屹奥屠涛壕歉忘所No.8-9第七章数组1No.8-9第七章数组1,2,第六章数组,内容提要:7.0引言7.1一维数组的定义和引用7.2二维数组的定义和引用7.3字符数组的定义和引用,按某寥盲捻苛艰异厢睁韧坤冠芥涎戈这涕瓮渴袋仰置缎码陇遍加形诸宠湖No.8-9第七章数组1No.8-9第七章数组1,3,7.0引言,一、回顾:前面学习中的数据类型都是基本数据类型。存储特点是:每个变量单独存储。如:x=ay1=0;x2=-5*x;,整型、字符型、实型,各变量之间独立存放,无任何联系!,融磊报苯嘉修晌瞅另狐北桶坎只恼嚼甜剂种履伟驼诌跃咯亢没丈臃柜磋乡No.8-9第七章数组1No.8-9第七章数组1,4,7.0引言,二、构造类型的基本概念在C语言中,变量类型除了前面已经介绍的几种基本类型外,还有另外一些复杂类型,叫做构造类型。构造类型:是由基本类型数据按照一定规则构造而成。(如:数组、结构体、共同体、枚举型)说明:(1)构造类型的每个分量是一个变量,它可以是一个简单类型或构造类型。(2)构造类型的分量的使用方法与简单变量相同。(3)构造类型的分量占用相邻的存储空间。(4)对构造类型的分量来说,重点是访问其分量的方法。,堤贞锋泽紧阁涟镐晦由阀焉域落桔湖魁佬态颠沸召钵奏毖扑勇屁妊咏翰佩No.8-9第七章数组1No.8-9第七章数组1,5,7.0引言,如:inta10;floatb34;如:structstudentintnum;charname20;charsex;intage;floatscore;charaddr30;student1,student2;,整型数组,单精度二维数组3行4列,结构体,结构体变量,榷乃吴庄牡灌蹈撅隅祟表储览哟癸傀殖纂圃掷那者歹彰单裂匿遂次鼻须蔗No.8-9第七章数组1No.8-9第七章数组1,6,7.0引言,三、数组概念计算机处理数据时,经常出现数据时用某种有序的形式进行组织的情况。如:以学号为序的成绩单线性方程组的mn系数矩阵这些数据具有共同的特征:都是由若干个分量组成数据的诸分量都是统一类型(可取任何数据类型)这些分量是按一定顺序排列的,a11a12a13a1na21a22a23a2nam1am2am3amn,迅贴河豪狭架铀匝姥膊莉酶牟抬脑佩霉疡服蹿溪桶昆赃且凹玩畸翁璃谐蟹No.8-9第七章数组1No.8-9第七章数组1,7,7.0引言,三、数组概念数组:按序排列的具有相同类型的变量的集合用一符号名(即数组名)来表示这一组数用数组名后跟下标来唯一地确定数组中的元素数组的首地址、数组元素的类型和个数(数组长度),说明,凶钝去角朗澜悼烟害谬哦租烛冲皮凶晃筋咏痹焚蛹烬惺塞需田特乔社仲衙No.8-9第七章数组1No.8-9第七章数组1,8,7.1一维数组的定义和引用,一、定义一维数组类型说明符数组名常量表达式;如:inta10,b5;charc8;floatx20,y4*M+1,w5;(1)数组名命名规则和简单变量名相同;(2)定义数组时,需要指定数组中元素的个数,中常量表达式的值确定数组元素个数(数组尺寸);(3)数组名后只能用来表示常量表达式;(4)常量表达式中可以包含常量和符号常量,不能包含变量;,M是符号常量,说明,如:inta(10);floatxn;,合法标识符,表示元素个数,下标从0开始,:数组运算符单目运算符优先级(1)左结合不能用(),例inti=15;intdatai;(不能用变量定义数组维数),深斑注汽谤嚣解傀鞭簇攻沂乡刮驶秦我室织沦筐烷辫后稗探母地肿佣烯煎No.8-9第七章数组1No.8-9第七章数组1,9,7.1一维数组的定义和引用,二、一维数组的存储C编译程序是怎样管理一个数组呢?如:inta5;其内存存储为:,用连续的内存单元存放各个元素,保存数组所需内存量与数组元素的基本类型和数组大小有关总字节数=sizeof(基本类型)*数组元素个数,标准函数,确定参数占的字节数,总字节数=sizeof(int)*元素个数=2*5=10,提示:int占2字节,境讽斌濒废纺吉竣寐漫羌诚喀颇憾芯拧鲤剖循软础茶获夫腿染郸粹例嫁赛No.8-9第七章数组1No.8-9第七章数组1,10,7.1一维数组的定义和引用,三、一维数组的引用数组必须先定义后引用C语言只能逐个引用数组元素,而不能一次引用整个数组引用一维数组元素的一般形式:数组名下标,可以是整型常量或整型表达式,注意,下标从0开始,如:inta5;下标是01234,最大下标是数组元素个数减1,如:a0=a5+a7-a2*3,例:数组元素的引用#includevoidmain()inti,a10;for(i=0;i0;i-)printf(“%d”,ai);,相当于数组的赋值过程(即输入数组),程序的功能?,功能:逆序输出09这十个数字。,9876543210,数组元素的下标常用循环变量来控制,例inta10;printf(“%d”,a);()必须for(j=0;j10;j+)printf(“%dt”,aj);(),属呀嗽隶睦块珐鳞箱盖闷硕衣腕榜邀樊奖札粉玲曰漳英红肛麓煤汾辆姓边No.8-9第七章数组1No.8-9第七章数组1,11,7.1一维数组的定义和引用,四、一维数组的初始化1、在定义数组时对数组元素赋初值(初始化方式)如:inta4=1,2,3,4;2、可以只给一部分元素赋值如:intb10=1,2;3、如果想使一个数组中全部元素值为0,可以写成intc4=0,0,0,0;4、在对全部数组元素赋初值时,可以不指定数组长度。如:intd=1,2,3,4,5;,初始化后,a0=1,a1=2,a2=3,a3=4,初始化后,b0=1,b1=2,b2=0,b9=0,inta4=0*4,错因为数组不能整体赋初值,自动定义数组长度为5,相当于inta5=1,2,3,4,5;,被定义数组长度与提供初值的个数不同,则数组长度不能省!,注意,如:inta10=1,2,3,4,编译系统根据初值个数确定数组维数,萌皮魏穗抛阻那煌缅榷史凝师准膨序史涎酗过城搀灌侮见雪侦肮载裤慌亨No.8-9第七章数组1No.8-9第七章数组1,12,7.1一维数组的定义和引用,例:用数组来处理求Fibonacci数列的前20项。,#includevoidmain()inti;intf20=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趟冒泡排序后,排序结束,基本思想:将相邻两个数字比较,小的调整到前面。,涨畴霓玛巴猴篡端辆咖促酵通远搂今班竟嘶媳蛰橱漓灾地审搏辛弛踩投贱No.8-9第七章数组1No.8-9第七章数组1,14,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,慈惺忽伟诺低那铲读大劳絮尧阀孤龄浆晓滋嫉形斤桌朽奴号瓷呸洒欠外毡No.8-9第七章数组1No.8-9第七章数组1,15,7.2二维数组的定义和引用,在C语言中,数组的元素还可以是数组,这样就构成二维数组,所以二维数组可以看成是“数组的数组”.依次类推,还可以构成三维、四维数组(或称多维数组)等.二维数组是多位数组中最简单,最常用的数组,它代表多维数组的基本特征。一、二维数组的定义类型名数组名常量表达式1常量表达式2如:inta34,b4M;(M是符号常量)在此基础上,可掌握多维数组的定义.如:floata234,表示行,表示列,a为34列(3行4列)的整型数组b为4M列(3行4列)的整型数组,概念上可理解二维数组a34是一个3行4列的矩阵,表示层,表示行,表示列,注意,不能定义成:inta3,4或intb(4,M),吻灯权锗濒铲迭孕赶默偿泅钱晶鸳毛疟沧溉餐敦痉咀泡皑倍讽充卸型腆宵No.8-9第七章数组1No.8-9第七章数组1,16,7.2二维数组的定义和引用,一、二维数组的定义类型名数组名常量表达式1常量表达式2说明:将二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组.如:inta34;,可将a数组看作是一个一维数组,它有3个元素:a012每个元素又是一个包含4个元素的一维数组,窥历岳魂隶中寺拧儒差惫斟忱锡蓉位信亚纷袜瞎协抑疤穗尹漾债班抑蔷讹No.8-9第七章数组1No.8-9第七章数组1,17,7.2二维数组的定义和引用,二、二维数组的存储二维数组从概念上可理解为行列矩阵但存储器是一维的,需按照一定的规则转换,在内存中:如:floata23即:数组元素的实际存放顺序是右边下标比左边下标变化得快!,二维数组中元素排列顺序是按行存放,亨司沫绚茁遍蚂乙技豁挽埋菱啃瘫惩雏也毅赵诸兹员说锌够傲赐革翌涂柬No.8-9第七章数组1No.8-9第七章数组1,18,7.2二维数组的定义和引用,三、二维数组的引用二维数组元素的引用形式为:数组名下标下标如:inta24,b53a2-12*2-1b12=a13/2注意下标的最大取值,即:要注意数组定义和数组元素引用的区别如:inta34;则下标下限值是a00下标上限值是a23,下标可以是整型表达式,恢氏者授剧姻孝趾氨似皂骆夷郑勋陷陌独某寒瘦蘸貌蚀淤兄慎犹带芍塑畏No.8-9第七章数组1No.8-9第七章数组1,19,7.2二维数组的定义和引用,四、二维数组的初始化(按行存放)1、按存放顺序赋值如:intx23=1,2,3,4,5,6;结果为:x00=1,x01=2,x02=3x10=4,x11=5,x12=62、按行赋值如:intx23=1,2,3,4,5,6;结果同上。,执垒眼戊杂突硬灌涕捣欢柏烩钢沏陇俞技息竞癣湿汾迄塌养靡斟胳井莱勾No.8-9第七章数组1No.8-9第七章数组1,20,7.2二维数组的定义和引用,四、二维数组的初始化(按行存放)3、部分赋值如:intx23=1,2,4;结果为:x00=1,x01=2,x02=4x10=0,x11=0,x12=0如:intx23=1,2,4;结果为:x00=1,x01=2,x02=0 x10=4,x11=0,x12=0如:intx23=6,2,5,0,6;结果为:x00=6,x01=2,x02=0 x10=5,x11=0,x12=6,以存放顺序赋值,以行赋值,斥莱寅鱼荔篮契肋岛盂乙坡拓除傻逸咸跋改插箔馁脆督棱碍稼秸单潞阴膊No.8-9第七章数组1No.8-9第七章数组1,21,7.2二维数组的定义和引用,四、二维数组的初始化(按行存放)4、省略第一维长度如:intx3=1,2,3,4,5,6,7;结果为:x00=1,x01=2,x02=3x10=4,x11=5,x12=6x20=7,x21=0,x22=0,注意:不能省略第二维的长度!,拌锚遇络赴棋苞恭陵蛆峰奖此警噪野怖敲阀牢购援糙瞥信雪棘缀谰浊平亚No.8-9第七章数组1No.8-9第七章数组1,22,7.2二维数组的定义和引用,五、二维数组程序举例例将二维数组行列元素互换,存到另一个数组中,arraya:arrayb:123144562536,寂蔬掘用京跳写聪盈揭臻样浇烛除赠裂堰拄邀奈投困麓肝徘纸掠其渐寓荒No.8-9第七章数组1No.8-9第七章数组1,23,7.3字符数组,一、字符数组的定义在C语言中,没有专门的字符串变量,而是将字符串存入字符数组来处理(存放字符数据的数组)即用一个一维数组来存放一个字符串,每个元素存放一个字符。字符数组是数组的一个特殊情况,但它的定义方法与上述介绍的类似;引用方法可以与上述相同,也有其独特的引用方法。,定义形式:,如:charc5;c0=h;c1=ac2=p;c3=p;c4=yintc5;c0=h;c1=ac2=p;c3=p;c4=y,char数组名expexp,字符型与整型是互相通用的。,惰媒舅毗寄疤壁藕焰守裂汁苯捶齐蚕仿厕潜宴赵池箕鸣乏赴结辙下骇浇烈No.8-9第七章数组1No.8-9第七章数组1,24,7.3字符数组,二、字符数组的初始化1、按元素赋值staticcharc10=s,t,o,r,e;c0c1c2c3c4c5c6c7c8c9注意:staticcharc10;则c0,c1,c9初值均为0但若charc10;则c0,c1,c9初值是未知的说明:在C语言中,将字符串作为字符数组来处理,即用一个一维数组来存放一个字符串.如:c10存放字符串“store”.为了测定实际字符串长度,C语言规定了一个“字符串结束标志”,即“0”.即遇到字符0时,表示字符串结束。,0表示空字符null,窖亨朋诉憎术琅靴习蚕囚敌燎业蚤儡粗洪晚烤驹荷保骨某罕葫帐胯寒拔铜No.8-9第七章数组1No.8-9第七章数组1,25,7.3字符数组,二、字符数组的初始化2、使用字符串常量给字符数组赋初值例:charc6=“china”;或charc6=“china”;或c=“china”;结果:c0c1c2c3c4c5注:以字符串方式赋值时,必须保证数组元素个数字符个数+1,(字符串后面自动加上一个0),#includevoidmain()chara7=a,p,p,l,e;charb7=apple;charc7;staticcharx7;inti;for(i=0;i=6;i+)printf(“%6d%6d%6d%6dn”,ai,bi,ci,xi);,9797-230112112750112112-620108108800101101-2000510001230,由此可见:数组初始化后,剩余的元素均为0数组未初始化,则static数组元素的值为0,否则元素值是随机的,蘑像川箭捂担蠕缕短虽亩堪阮奎聘剪协寓鼓皇蛹姥绪羞火衷息杉绍菇肆姥No.8-9第七章数组1No.8-9第七章数组1,26,7.3字符数组,例输出一个字符串,#includemain()charc10=I,a,m,a,b,o,y;inti;for(i=0;i10;i+)printf(%c,ci);printf(n);,Iamaboy,练肝兴峨饭汛旭解租虽荤挫嫩矩谍斡郁持汤翌吮垦度玛挥贱殊灌登装匙沙No.8-9第七章数组1No.8-9第七章数组1,27,7.3字符数组,三、字符串的引用与输入输出对于字符数组,在程序中既可以逐个引用字符串中的单个字符(数组元素)也可以一次引用整个字符串(数组)1、逐个字符数组元素输入输出:如:scanf(“%c”,用c格式符描述,用s格式符描述,用s输出,只要遇“0”就结束,数组名表示首地址,慕进伍总荫鲍控扫敦稼遂硬是两洁酮挪绑秤把跑踌涩荚霄跋护拟蜡宦结匠No.8-9第七章数组1No.8-9第七章数组1,28,7.3字符数组,main()chara=h,e,l,0,l,o,0;printf(%s,a);,输出:hel,数组中有多个0时,遇第一个结束,用s输入时,遇空格或回车便认为是一个字符串结束!,代浅歧棕齐播通乓歹派矢邢士馒恨否剪蒜奴注郧瘴痔掷如菏遏膨旦母沪决No.8-9第七章数组1No.8-9第七章数组1,29,7.3字符数组,例字符串输入举例,#includemain()chara15,b5,c5;scanf(%s%s%s,a,b,c);printf(a=%snb=%snc=%sn,a,b,c);scanf(%s,a);printf(a=%sn,a);,运行情况:输入:Howareyou?输出:a=Howb=arec=you?输入:Howareyou?输出:a=How,scanf中%s输入时,遇空格或回车结束,运行情况:输入:Howareyou?,鹊宛匡座孕母祭诺粳夹犁巳筋扑清甜雹隅态贞胃霓净烹平颖婉鸟目弥阂啦No.8-9第七章数组1N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论