第5章-1数组摘要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 §5.1 数组概述 对于n个数据,若用变量Top、Bott分别表示每次“折半”的首位置和末位置,则中间位置M为 M=(Top+Bott)/2 这样就将[Top, Bott]分成两段,即[Top, M-1]和[M+1, Bott], 若要找的数据小于由M指示的数据,则该数据在[Top,M-1]范围内,反之,则在[M+1,Bott]范围内。 例:用二分法重做例5.22。 程序代码如下: 思考:在上题中,当出现插入的数比数组中所有数都大或都小的情况时,上面的程序能处理吗? 例1(教材P205页习题5):编写程序,将数组的前n个元素中,前端的m个元素和随后的n-m个元素互换。n和m从键盘输入并要求程序不另用其他数组。如:a[]={1,2,3,4,5,6,7,8,9,0},设n=7,m=3。交换后有a[]={4,5,6,7,1,2,3,8,9,0}。 思路:需移动的元素为m个,每个元素需产生n次移动。因此,在每次移动中,首先将第0个元素暂存起来,将其后的n-1个元素向前移动一个位置,再将第0个元素保存到第n个位置。 程序代码如下: 例2(教材P205页习题6):编写程序,将已知数组复制到一个新数组,使复制产生的新数组包含已知数组中全部出现过的值,而又不重复。如:已知数组 a[5]={1,1,2,3,3},复制产生的新数组b[5]={1,2,3}。 思路1:创建2个长度相同的数组a和b,首先将a数组中第0个元素复制到b数组中,然后将a数组中第1个元素及其后的n-1个元素分别与b数组中现有的每个元素相比较,如没有相同的,则复制到b数组中,同时b数组中元素个数值增加1。 程序代码如下(方法1): 思路2:创建2个长度相同的数组a和b,将a数组中第0个元素与其前面的所有元素相比较,如果没有相同的就复制到b数组中,同时b数组中元素个数值增加1。如果有相同的,则不复制。元素后移一个,从第1个元素开始;再与其前面的所有元素比较,如没有相同的,则复制到b数组中,这个过程一直重复到第n-1个元素止。 程序代码如下(方法2): 作业: 教材P204页习题:1、6 上机指导与习题P107页习题:一选择题 1——11,二填空题 1——4,三程序分析题 1——5,四程序设计题 1——6 GG * 问题:有如下几组数据,它们分别该如何存储呢? 一组具有相同数据类型的数据的有序集合。 数组: 一个班学生的学习成绩 一行文字 一个矩阵 这些数据的特点是: 1、具有相同的数据类型 2、使用过程中需要保留原始数据 C语言为这些数据,提供了一种构造数据类型:数组。 一、一维数组的定义格式为: 类型说明符 数组名[常量表达式]; 例如: int a[10]; 它表示定义了一个整形数组,数组名为a,此数组有10个元素。 1、说明: (1)数组名定名规则和变量名相同,遵循标识符定名规则。 (2)在定义数组时,需要指定数组中元素的个数,方括弧中的常量表达式用来表示元素的个数,即数组长度。例如:指定a[10],表示a数组有10个元素,数组元素下标是从0开始。这10个元素是,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。请持别注意,按上面的定义,不存在数组元素a[10]。 § 5.2一维数组 (3)常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的: 举例: int n; scanf(“%d″,n); /*在程序中临时输入数 组的大小 */ int a[n]; 数组说明中其他常见的错误: ① float a[0]; /* 数组大小为0没有意义 */ ② int b(2)(3); /* 不能使用圆括号 */ ③ int k, a[k]; /* 不能用变量说明数组大小*/ 2、一维数组在内存中的存放 一维数组: float mark[100]; mark[0] mark[1] mark[2] mark[3] . . . mark[99] 86.5 92.0 77.5 52.0 . . . 94.0 低地址 高地址 每个数据元素占用的字节数,就是基类型的字节数 一个元素占4个字节 数组名[下标] 下标可以是整型常量或整型表达式。例如: a[0]=a[5]+a[7]-a[2*3] 定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用到的“数组名[下标]” 是有区别的。 例如∶ int a[10];

文档评论(0)

基本资料 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档