- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C程序设计实例教程》中ppt199
《C程序设计实例教程》中 第4章 数据组织第5章 文件第6章 函数与指针 第4章 数据组织 4.1 数组 数组是一组同类型数据的有序集合。数组在内存中占有一片连续的存储空间,但可以随机地访问数组中的任意一个元素,即数组是顺序存放、随机访问的。 在一片连续的内存空间中,每一个元素占用的空间大小相同(字节数相同),只要知道这片空间的起始地址就可以取得任何一个元素的地址,也就很容易取或存某个元素的值。 4.1.1 一维数组 一维数组与内存空间的组织形式一样,是线性排列的,每一个数据元素用一个下标索引。 【例4-1】 输入10个整数,再逆序存放,最后输出。 【分析】 ① 如果使用简单变量,对于10个数,需要定义10个简单变量,如果是100个或更多数据呢?显然,使用简单变量是不现实的。 ② 如果一组数据中,每个数据元素的数据类型相同,就可以使用“数组”。 ③ 我们可以用第一个数与最后一个数交换,第二个数与倒数第二个数交换……依次类推。如图4.1(a)是存放的数据,其中下标是元素的位置(从0开始),图4.1(b)用变量i指向左边的元素,用变量j指向右边的元素,把第i个元素与第j个元素交换,然后i增加1,j减少1,直到i=j结束(即循环条件为ij)。 【说明】 ① 数组是一种构造类型的数据,在使用数组之前必须先定义。 一维数组的定义格式: 数据类型 数组名[数组长度] 数组中每一个元素的数据类型是一样的;数组名必须符合程序设计语言的标识符的命名规则(例2-1的说明③);数组长度是数组中数据元素的个数,只能是常量表达式。数组在内存中占有一片连续的存储空间,数组名就是这一片空间的首地址。 ② 在使用数组时,不能使用数组的整体,只能使用数组中的个体,即数组中的每个元素,数组元素的性质和使用方法与简单变量一样。 ③ 使用数组元素:是通过使用下标来完成的,如程序中a[i],下标是整数表达式,是可以变化的。 C语言规定数组的下标是从0开始的,因此,最大的下标是“数组长度”-1,如程序中用了i=0,j=N-1,这两个整数正好是数组a的第一个与最后一个元素的下标。超出这个下标范围是非常危险的(因为用到了别人的内存空间!) ④ 初始化:在定义数组时,也可以同时对数组进行初始化,初始值依次写在{…}中,用逗号隔开。 如 int X[100]={100,102,0,105,102} 说明了数组X的前5个元素X[0]、X[1]、X[2]、X[3]、X[4]依次为100、102、0、105、102,而其它元素均为0。 如果要把数组X的全部元素都初始化为0,则在定义时写成int X[100]={0}。 程序中定义了int a[N]={4,3,8,10,5,2,9,6,13,7}就意味着分配了一片连续的内存空间存放N个元素(注意:定义数组时,长度必须是常数;如果不给长度,则长度是初始数据个数): ⑤ 如果程序中不是用初始化的方法得到数据,而需要用键盘输入,那么应该一个一个的数据输入。在数组中,用循环实现: for(i=0; iN; i++) scanf(%d, a[i]); 对每一个元素a[i]就如同前面章节中使用的简单变量一样。 注意:scanf(%d, a)是错误的用法。 ⑥ 一旦有了数组的概念,就可以处理大批量的数据了,而这是用简单变量几乎无法想象的事情。但大量的数据用键盘输入,在上机调试程序时非常不方便,利用随机函数产生数据是提倡的方法(参见例3-15)。 【例4-2】交换两块数据。 如图4.3,把前4个元素与后6个元素整体交换。 【分析】 解题方法很多,如再设一个同样大小的数组作为过渡。 本例题的做法是:先将两块数据分别逆序(例4-1),再将它们整体逆序即可。这样做有两个好处:一是不需要额外增加存储空间,二是反复使用三次“逆序”。因此,我们将逆序操作定义成一个函数,调用三次即可完成。 【说明】 ① 本程序是交换两块数据很好的方法。 ② 比较printf中使用的格式%3d和%-3d的区别。 ③ 程序中调用了三次函数invert,每次调用改变了部分参数即可,这也是函数的优点之一。 ④ 已经看到,无论是输出还是逆序数组元素,都必须对数组元素一个一个的处理。处理这些数据最关键的问题是确定元素的下标。 【例4-3】随机产生10个整数,用冒泡排序法从小到大排序。 【分析】 随机产生数据(例3-15)相当于输入数据,是为处理(排序)作准备的。为了检验排序的结果,把原始数据和排序后的数据都显示出来。 首先,用数组存储N个数据,一个一个地存入数组元素,元素下标用变量(如i)从0变化到N-1; 其次,一个一个地显示(仿例4-1); 再其次,排序; 最后,再一次显示。 本题的核心工作是“排序”。用冒泡法将这N个数据
您可能关注的文档
- Java基础及应用教程(下)ppt228.ppt
- 全国经济专业技术资格考试商业经济专业知识与实务(初级)综合自测模拟.doc
- Java程序设计之网络编程(第2版)上ppt301.ppt
- 全国职工《劳动合同法》知识竞赛.doc
- 全国职工《劳动合同法》知识竞赛试题.doc
- Java程序设计实践教程ppt188.ppt
- Java程序设计教程与实验(数组、字符串、向异常处理、图形用户界面)ppt159.ppt
- Java程序设计之网络编程(第2版)中ppt285.ppt
- Java程序设计教程与实验(Java概述、应用基础、类和对象)ppt120.ppt
- Java程序设计(清华大学软件学院)上ppt163.ppt
- 《Java 2面向对象程序设计基础》线程ppt72.ppt
- 《Java 2面向对象程序设计基础》输入与输出ppt49.ppt
- 《Java程序设计之网络编程》GUI程序设计、Applet应用程序ppt142.ppt
- 《Java程序设计之网络编程》Java安全、Web编程、J2EE概述ppt153.ppt
- 全面面向企业营销的网站设计.doc
- 《Java程序设计之网络编程》Java标准类库、Java异常处理ppt124.ppt
- 《Java程序设计之网络编程》高级程序设计与字符串处理ppt104.ppt
- 《Java程序设计之网络编程》输入输出处理、线程ppt122.ppt
- 全面领会十七大精神,正确认识社会新变化.ppt
- 《Visual Basic应用与开发案例教程》ppt315.ppt
最近下载
- 海南省乡村旅游用地精细化管理问题与对策研究.pdf VIP
- 10kV变压器及高低压柜安装施工方案 - 电气安装工程.docx VIP
- 初中数学八年级上册 三角形 练习题.doc VIP
- GST-QKP04型气体灭火控制器检验报告.pdf VIP
- 专题13 看图写话-2022-2023学年二年级语文上册寒假专项提升(部编).docx VIP
- 北京某养老院居室空间使用调查研究.pdf VIP
- 2023-2024年中国付费自习室行业发展现状与消费趋势调查分析报告.docx VIP
- 2025年九年级数学中考二轮复习专题四边形中的十字架模型与相似三角形综合问题.docx VIP
- 廉洁文化进校园,廉洁在我心.ppt VIP
- 避免潜在的风险.pdf VIP
原创力文档


文档评论(0)