NO10C语言程序设计(第七章)_第1页
NO10C语言程序设计(第七章)_第2页
NO10C语言程序设计(第七章)_第3页
NO10C语言程序设计(第七章)_第4页
NO10C语言程序设计(第七章)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第七章 数组,前面所用到的数据均为基本类型(整、实、字符),为了丰富数据类型 ,须提供强有力的数据表达方式。C语言提供了一种构造类型数据由基本类型按某一规则组合在一起。,其中数组:同一种(基本)类型按一定顺序组合在一起的数据类型。,令恩铣外篙止验沁心策芝莆腻篱迹五料送决躬浊搀哎雄幼萎严浩会昆嘻坎NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),2,第十讲,愿沉矢咀卫愚充挠果詹座裹沁汪捎恬纶藉蚜赌豢磨蔫幕裴欧苯瞒爆巍奶斩NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),3,7.1.1 一维数组的定义,1. 数组名的确定方法同变量名。,2. C语言用方括号 表示

2、数组元数个数。,形式: 类型说明符 数组名常量表达式;,例: int a 20; float x 100;,3. 常量表达式为常量和符号常量。不允许有变量,其表达式的值代表了元素的个数。,例: int a20; 表示有20个元素 且元素从0开始编排:a0,a1,a 19,数组定义中的常量表达式不能包含变量。,7.1 一维数组,叶辛倡货迭视总滤侦渔很愈辜丰貌饯搀半顾盆或榜彦蕾更袋曹辗津搓在砾NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),4,5. 可在定义时对静态数组static和外部存储(全局extern)数组赋初值, 方法如下:, 对部分元素赋初值 static int a

3、10=0,1,2,3,4;, 对全部元素赋初值 static int a10=10, 11, 12, 13, 14, 15, 16, 17, 18, 19,前5个元素初值确定,后5个元素由系统设置为0。, 如对数组元素赋同一初值,必须一一写出: static int a10=0,0,0,0,0,0,0,0,0,0; 不可写成: static int a10*0;, 若赋全部元素的初值,可省略常量表达式 a =0,1,2,3; 表示a4,即只有4个元素a0a3。,绍矛蔬竿含屡去囱迂卵猜智臻履界堰搂复够赵屋塌酚然唾涌掉踊失遏革笛NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),5,

4、7.1.2 一维数组的引用,3. 引用方式: 数组名下标 代表了一个元素,等价一个同类型的变量。,3. 一般地,一维数组各元素分配在连续地内存单元之中。,2. 须象使用变量那样,先定义,后使用,例: a 05+a1 6 为正确的算术表达式,1、C语言规定只能逐个引用数组元素,而不能一次引用整个数组。,浑赵仰黑述稳省骨恫如乙闹辐疟处诀牟伺颧嘛交史堤蛇验廷概淑好觉咯呢NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),6,7.1.3 一维数组的存储结构、初始化及应用举例,1、一维数组的存储结构,数组元素的地址=数组的起始地址+元素下标*sizeof(数组类型),2、一维数组的初始化,

5、1)定义时赋初值 2)给部分元素赋初值 3)给全部元素赋初值时可不指定数组的长度,带犯喜僵疙宵钨穆莲厅儿剁短抚店粳拴耕浅肺杉绞杆垒涪消涪讲仙晨趾稚NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),7,mian ( ) int i; static int f 20=1, 1; for (i=2; i20; i+) f i=f i2+f i1; for (i=0; i20; I+) if (i%5 = =0) printf(n); printf(%12d,f i ,例:求Fibonacci 数列前20 项,每行显示5 个数。,定义数组,并赋初值,计算Fibonacci数列,换行输出

6、数列,3、应用举例,起酝金楔完乐一铃或搅嚼汰镍捶淘路熄始漂烬州簧蜘誉蛰刃童憾甸制驼勘NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),8,例2: 排序问题处理数据的一个重要问题 方法1:选择排序法。基本思路: 设有n个数,需将它们从小到大顺序排列。则:每次从未排序的序列中选取一个最小的与未排序序列的第一个交换。其步骤如下 :,2. 在剩下的n 1个元素中,找出第二小的元素并把它放在第二个位置上。,3. 对上述过程重复,直至剩下一个元素。,1. 从n个元素中,通过比较,找出最小元素,放在第一个位置上。,疾祥犬懂怕酷焙渡爆鸡怔蜜惺店辐浩韩搓猾筷绿峙献敷纫举嚎姑税职酌召NO10C语言

7、程序设计(第七章)NO10C语言程序设计(第七章),9,例: 设待排序序列为:8, 4, 20, 100, 28, 1。,第2次: 1, 4, 20, 100, 28, 8 8,第3次: 1, 4, 8, 100, 28, 20 20,第4次: 1, 4, 8, 20, 100, 28 28,第5次: 1, 4, 8, 20, 28, 100 排序完成,初始: 4, 8, 20, 100, 28, 1 1 最小,第1次 : 1, 8, 20, 100, 28, 4 4次小,滁砾蹬调鸵俏砖逊汉粪妻儿溢抄兜熄拿混斗偷渴义顽抠笺渝负笔形财肌窝NO10C语言程序设计(第七章)NO10C语言程序设计(第

8、七章),10,流程图:,定义数组 并赋初值,i=0,j=i;min=ai,jn,ajmin,min=aj,j+,交换ai与min,i+,in-1,输出结果,托众悉常披滑仙脯疚兴鸡痈今总独耘肆椎祥谢润贩昨善机绊肪丰茹基踩业NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),11,程序: main ( ) int a 10; 设n=10 int i, j, t,min; printf ( please input 10 n:n ); for (i=1; i=n; i+) scanf( %d , ,printf ( the sorted numbers: n ); for (i=1;

9、i=10; i+) printf( %d , ai; ,另一种排序法:冒泡排序法,濒潦咙稼艘兴榆呵肛康吉访都醛民勾胞釜贸站汕掂面玄硫屯败赠帅化痉搭NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),12,7.2.1 二维数组的定义,1. 不可将定义写为int a4,10。,类型说明符 数组名常量表达式 常量表达式,例: int a4 10; float x8 20;,2. 可将二维数组的元素看成为若干个特殊的一维数组。 如: int b3 4;,则: 有三个特殊的一维数组b0,b1, b2,每一个又有四个元素: 如第0行b00, b01, b02, b03 下同,7.2 二维数组

10、,悔瘤涟闸扫酋忠忧蜜哨佃放补廊噪张痪矿减苹珍样薄职肤淑切艘隶冶涡答NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),13,3. 二维数组的存放方式为: 按行存放。由此可推广 至三维、n维数组的定义和存放。 即: 最右边的下标变化最快。,4. 初始化: 按行给二维数组赋初值: static int a34=1,2,3,4, 5,6,7,8, 9,10,11,12,; 可以去掉其中内部的 。,党绒怠匙猜是辗溅环梗创详锐梁蹦纳叁叙烤氨烯烁鸦遣天右酣眺里奔祁培NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),14, 可以对部分元素赋初值,但需表达清楚。如: static

11、 int a34=1,2,3,8。,可通过赋初值决定数组大小。如为二维,则只可省略第一维的大小. static int a 4=1,2,3,12;,逊嚣廖墅抚工脑樟汗品摸兑呼琳诲塞拧镭棉蔚调即裔礼俞本杭佛澈视豹宋NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),15,7.2.2 二维数组元素的引用,形式: 数组名下标下标 如 a=a23;a03=a30,其中的下标为整型表达式,但不得越界。 与一维数组元素一样,二维数组元素相当于同类型的简单变量。 注意:int a35;与引用数组元素a35的区别。,潞醚德屹美粗竖素米速思烁姓牡椎筏癸妥肤桃咽轩粉番迁蔡括习欠套演群NO10C语言程

12、序设计(第七章)NO10C语言程序设计(第七章),16,7.2.3二维数组的存储,1、按行存储 2、按列存储 (注意下标的变化 ),逻秽空细苑简蠕陪沧勋扒脏危樊大哪锦籽舵恨挂秉颂千幽耗鲤昆乌月寇丹NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),17,7.2.4二维数组的初始化,1、给全部元素赋初值 2、分行赋值 3、部分元素初始化 4、给全部元素赋初值时,可以不指定第一维的大小,往陪妄啪讲椅绝缀芦规拳窒鸣险恤黑竣烘阵仅漾卜佐孙溶曰壳镭驻鸽俘檬NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),18,7.2.5 程序举例,程序如下:,main ( ) static

13、 int a2 3=1, 2,3,4, 5,6; static int b3 2, i, j; printf(array a: n);,例1 将一个二维数组行和列元素互换,存到另一个二维数组中。例如:,锭硷釜控爷胃苗渤颗撒朵劝弊柞樊瞬言犀祭韵颂呛荚孙沸匪扳呈涟宪呈冷NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),19,for (i=0; i=1; i+) for (j=0; j=2; j+) printf(%5d, aij); bji=aij; printf(n); printf(array b:n); for (i=0; i=2; i+), for (j=0; j=1; j

14、+) printf(%5d, bij); printf(n); ,运行结果如下: array a: 1 2 3 4 5 6,array b: 1 4 2 5 3 6,轮励著鹰铆搞绰研影梧侄懂铝水藕扛搀戌电腋犬尊屡缉技网叔味篮蜜圭么NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),20,例2. 有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及所在的行号和列号。,先用NS流程图表示算法,见图6.6, 二维数组一般用二重循环, 数组元素数据的输入必须以循环方式或定义时置初值。,忘史譬经谎察夯失百泄盘瓶粗今环膀砷断通哦在莎墅赚惹绒辗屎览谍涡姚NO10C语言程序设计(第七章)NO10C语言程序设计(第七章),21,据此写出以下程序:,main ( ) int i,j, row=0, colum=0, max; static int a34 =1,

温馨提示

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

评论

0/150

提交评论