电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

程序设计基础 教学课件 ppt 作者 C语言 7-10章 第7章

  • 资源ID:89364174       资源大小:885KB        全文页数:85页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

程序设计基础 教学课件 ppt 作者 C语言 7-10章 第7章

第7章 数 组,7.1 一维数组 7.2 函数间一维数组的传递 7.3 二维数组 7.4 函数间二维数组的传递 习题,7.1 一 维 数 组 7.1.1 数组概述 通过前面的学习,我们知道,如果在程序中需要暂时存放几个数据,就需要定义几个变量。但是,这种方法在处理大批量的同类型的数据的时候,就显得不是很方便了。例如,某个班级有45名同学,在“程序设计基础”这门课程考试结束后,要编写一个程序,统计一下成绩高于平均分的人数。针对这个问题,可以设计出如下算法: 依次接受并暂存45个成绩; 计算总分和平均分;, 置计数器为0; 对每一个成绩,若它大于平均分,则计数器累加1; 输出计数器的值。 按照以上算法的要求,如果在程序中定义45个变量去暂存这45个成绩,显然是一种比较笨拙的办法。 那么,有没有更好的办法呢?其实,针对这种大批量数据的存储问题,C语言中提供了数组这种数据类型来解决。,数组的实质是内存中一段连续的存储空间,例如内存中连续的20个字节的存储空间就可以称为一个数组。这个数组如果用来存放int型的数据,则可以存放10个(若每个int型的数据需要两个字节的存储空间)。此时每两个字节构成数组中一个存储单元,称为数组元素或数组分量;当然,这个数组也可以用于存放5个float型的数据(若每个float型的数据需要4个字节的存储空间),此时,每4个字节构成一个数组分量。在程序中,数组用一个名字来表示,数组中分量用编号来区分。采用这种方式,不但解决了大批量同类型数据的存储问题,而且方便用循环的方式来对这些数据进行运算和处理。,存放在数组中的多个数据,从逻辑上可以看做是按一个方向排列的,也可以看做是按两个方向排列的。例如20个整数可以看做是按一个方向排列的,在C语言中称为一维数组;这20个整数也可以分为4组,每组5个,在C语言中就称为二维数组。这种情况下,通常仿照数学中行列式的形式,称这20个数构成4行5列的二维数组。当然,一组数也可以看做是按多个方向排列的,这在C语言中就称为多维数组了。,7.1.2 一维数组的定义和初始化 一维数组的定义形式如下: 数据类型 数组名分量个数; 数组名和变量名一样,是C语言中的标识符,必须符合标示符的命名规则。分量个数必须是一个整型数,通常是常量或常量表达式。分量个数表示的数组中存储单元的个数,也就是这个数组中可以最多存放的数据的个数。数据类型用来指定数组中可以存放的数据的类型。例如: int array10;,以上语句,定义array是一个数组,这个数组是用来存放int型数据的,最多可以存放10个int型的数据。 定义了数组之后,如果这个数组是外部数组,则数组中每个分量中存放的都是0,也就是说,每个数组元素的值都是0;如果这个数组是内部数组,则数组中元素的值是随机值。定义数组时,可以把特定的值存放在数组中,这种情况称为数组的初始化,例如: int array10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;,以上语句,定义array是一个有10个元素的int型数组,同时把1,2,3,10这10个数依次存放在数组的10个元素中。当然,也可以对数组进行部分初始化,例如: int array10 = 1, 2, 3; 以上语句,在定义数组的同时,把1、2、3依次存放在数组的第1、第2和第3个元素中,此时,数组中其余元素自动被初始化为0。,7.1.3 一维数组元素的引用 数组在使用中,通常不会做整体的引用,更多的是引用数组中某一个分量中存放的数据。一维数组中的每一个分量都对应一个编号。需要特别注意的是分量的编号是从0开始的,即数组中第一个分量的编号为0,第二个分量的编号为1,依此类推。在程序中,引用数组分量的形式为“数组名编号”,这里的编号为一个取值为int型的表达式。例如,对如下定义的数组: int array10;,如果要将其中的第1个分量赋值为5,则表达为如下语句: array0 = 5; 再例如要将数组array中第3个分量和第4个分量中存放的值求和后,存放在数组的第5个分量中,可使用如下语句: array4 = array2 + array3; 在对数组中存放的数据进行运算和处理时,通常采用循环的方式,例如对于前面提到的成绩统计的问题,可以编写出如下的源程序:,/*源程序7-1*/ #include“stdio.h“ main() float score45, sum, avg; int i, counter; for(i=0; i45; i+) printf(“Palease input score%d:“, i); scanf(“%d“, , sum = 0; for(i=0; i avg) counter +; printf(“counter=%dn“, counter); ,7.1.4 简单排序算法 排序问题是计算机编程中的一个常见问题。在日常的数据处理中,面对大量的数据,也许有成百上千种的处理要求,而这些处理往往是以排序作为前提的。例如查找,在有序的数据中进行查找,当然比在无序的数据中进行查找要容易得多。在计算机发展的历史中,前人为我们留下了很多经典的排序算法,它们都是智慧的结晶。下面就讨论其中比较简单的两种排序算法。首先把排序的问题具体化:假如有10个整数,按照任意次序存放在计算机的一段连续内存(为了描述方便,把这一段连续内存看做是有10个分量的一维数组array)中,我们要做的就是将array数组中的这10个数的存放位置调整为由大到小。,下面先看第一种简单排序方法,选择排序法。 针对前面所描述的问题,可以采用如下算法来解决: (1) 从array0至array9中找出一个最大的数,假如这个数在arraymax_index中,把它交换到数组的第一个位置,即arraymax_index与array0交换; (2) 从array1至array9中找出一个最大的数,假如这个数在arraymax_index中,把它交换到数组的第一个位置,即arraymax_index与array1交换; (3) 从array2至array9中找出一个最大的数,假如这个数在arraymax_index中,把它交换到数组的第一个位置,即arraymax_index与array2交换; ,(9) 从array8至array9中找出一个最大的数,假如这个数在arraymax_index中,把它交换到数组的第一个位置,即arraymax_index与array8交换。 以上的算法,用伪代码的形式描述如下: for ( i=0; i=9; i+) 从arrayi至array9中找出一个最大的数,假如这个数在arraymax_index中, 把它交换到数组的第一个位置,即arraymax_ index与arrayi交换; 我们再把从arrayi至array9中找最大数的算法和交换的算法细化,得到如下算法描述:,for ( i=0; iarraymax_index) max_index = j; if(max_index != i) t = arrayi; arrayi = arraymax_index; arraymax_index = t; ,下面给出一个完整的源程序,程序中的10个数是调用随机函数生成的100以内的数。 /*源程序7-2*/ #include“stdio.h“ #include“stdlib.h“ main() int array10, i, j, t, max_index; for(i=0; i=9; i+) arrayi = rand() % 100;,printf(“Before sorting:n“); for(i=0; iarraymax_index) max_index = j; if(max_index != i),t = arrayi; arrayi = arraymax_index; arraymax_index = t; printf(“nAfter sorting:n“); for(i=0; i=9; i+) printf(“%dt“, arrayi); ,程序运行结果如下: 上面的程序中,每一次都是通过比较先找到最大数所在位置的编号max_index,然后再进行交换。还可以把比较的过程和最后的交换结合起来,也就是在比较的过程中完成交换,这样,源程序可以修改成如下形式:,/*源程序7-3*/ #include“stdio.h“ #include“stdlib.h“ main() int array10, i, j, t; for(i=0; i=9; i+) arrayi = rand() % 100; printf(“Before sorting:n“); for(i=0; i=9; i+) printf(“%dt“, arrayi);,for ( i=0; iarrayi) t = arrayi; arrayi = arrayj; arrayj = t; printf(“nAfter sorting:n“); for(i=0; i=9; i+) printf(“%dt“, arrayi); ,选择排序法之所以叫做选择排序法,就是因为这种方法每次选出一个合适的数,放到合适的位置上。很容易就可以推知,对n个数进行排序,共需要n-1次这样的选择。 下面再来看另一种简单排序算法,这种排序算法有一个非常有趣的名字,叫做冒泡排序。为什么叫做冒泡排序呢?还是以前面给出的问题为例来说明。 要对数组array中存放的10个整数排序,首先对array数组做一遍这样的处理: 从array0至array9,相邻的两个数依次比较,即array0与array1比较,array1与array2比较,array8与array9比较,在比较的过程中,如果前面的数小于后面的数,则交换两个数的位置。,通过这样一遍处理,虽然整个数组还是没有顺序的,但是最小的一个数在比较的过程中被逐渐的后移,最终被交换到最后一个位置了。这个过程有点像水里的气泡从水底逐渐地浮到水面的过程,所以这种排序算法叫做冒泡排序法。然后,使用同样的方法,依次对array0至array8、array0至array7、array0至array1做同样的处理。前后共做9次这样的处理,就可以得到由大到小的次序。这个过程用伪代码描述为: for(i=9; i=1; i-) 从array0至arrayi,相邻的两个数依次比较,如果前面的数小于后面的数,则交换两个数的位置。 ,对相邻两个数比较并交换的算法进行细化,得到如下算法描述: for(i=9; i=1; i-) for(j=0; j=i-1; j+) 若arrayjarrayj+1,则交换arrayj与arrayj+1; 下面,给出完整的源程序:,/*源程序7-4*/ #include“stdio.h“ #include“stdlib.h“ main() int array10, i, j, t; for(i=0; i=9; i+) arrayi = rand() % 100; printf(“

注意事项

本文(程序设计基础 教学课件 ppt 作者 C语言 7-10章 第7章)为本站会员(E****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.