第4章(下).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文档。上传文档
查看更多
第4章(下)

第四章(下) 数组 回顾 C语言的一维和二维数组 使用循环语句和流程控制语句对一维和二维数组进行操作 课程目标 能够熟练掌握数组元素的排序及求出数组元素中的最大值和最小值等数组的相关算法 数组的常用算法 数组最常用的算法有:数组的最值算法与排序算法 求数组中的最值 数组含有许多元素,如何快速求出这些元素中的最大值或最小值,就是我们本节要学习的内容。求最值的算法应用在方方面面。 比如当早上第四节下课铃敲响后,如何找出从教室到食堂最近的一条路,以及如何找出一条街上你喜欢的那条裙子卖的最便宜的那家店等等。 求出数组中的元素的最大值 #include stdio.h #include string.h void main() { int n[5] = {2,3,1,4,0}; int N = n[0]; for( int i = 1; i 5; i++) { if(n[i] N) N = n[i]; } printf(%d\n,N); } 循环从数组下标1开始,因为从算法的表述中,我们也看到了,N一开始就等于数组中的第一个数,而后和“下一个数”开始比较。 上面的例子中数组只能是5个元素,为了让上面的算法能用到数组元素不同的数组上,我们可以把代码改良,以让它方便应用在任何个数的元素上,这样数组n的维数就可以变化了,比如下面例4.10中数组元素变为6个。 int n[] = {2,3,1,4,0,8}; int N = n[0]; int count = sizeof(n) / sizeof(n[0]); for( int i = 1; i count; i++) { if (n[i] N) N = n[i]; } printf(%d\n,N); 数组元素排序 对数组元素的排序有很多种方法,其中最常用的是 冒泡排序 快速排序。 冒泡排序 冒泡排序是执行以下的过程(从小到大): 第一步,比较相邻的两个元素,如果后面的比前面小,就交换位置。循环比较,直到最后两个元素。每次循环的结果是最大值被交换到了最末位置。 反复第一步,直到所有较大值都跑到靠后的位置。 下面看一下冒泡排序(从小到大)的实现过程,具体代码见例 冒泡排序实例 for (int i = 0; i count; i++) { swapped = false; for(int j = 0; j count - i - 1; j++) { if(num[j+1] num[j]) { tmp = num[j+1]; num[j+1] = num[j]; num[j] = tmp; swapped = true; } } if (!swapped) break; } 本章实践项目——卡拉OK大奖赛的计分系统 程序的实现要求如下: 提示卡拉OK大奖赛正式开始,然后请10位裁判中的每一位裁判给选手打分,并将打分结果输出到屏幕,同时注意要将每位裁判的打分结果保存到一个数组中,而且要注意数组是保存浮点数。 将各位裁判的打分结果输出成一行,注意要从数组中读出数据。 要计算出打分结果的最大值和最小值,并输出“去掉一个最高分和去掉一个最低分”及对应的分值。 (4) 在去掉打分结果中的最大值和最小值后,计算出其余分数的平均值,做为选手的最后得分,并精确到小数点后三位,输出到屏幕上。 二、为了实现上面的实践项目,我们需要以下几个步骤: (1) 设计程序的界面,注意做界面时,要导入需要的头文件,即调用: #includestdio.h (2) 定义需要的变量。由于有十位裁判,所以需要一个整型变量I,由于裁判的打分结果为浮点型,所以需要一个浮点型的数组,相应的最大值和最小值及平均值都是浮点型,即: float a[10],max,min,sum,avg; (3) 用一个循环读取十位裁判的打分结果,并保存到数组中。 for (i=0;i=9;i++) { printf(\t请第%d位裁判打分:,i+1); scanf(%f,a[i]); } (4) 然后用一个循环,从数组中将裁判打分结果作一汇总输出,注意这里为了显示界面的美观,采用了每五个分数为一行,于是用一个if语句作判断,即如果已经输出了五个,就输出换行,并调用continue语句,让循环继续,直到输出所有的数组元素。程序参考代码如下所示: for (i=0;i=9;i++) { printf(%.2f ,a[i]); if(i==4) { printf(\n\t); continue; } } (5)下面开始求出最高分和最低分,然后输出。为了求出最大值和最小值,我们先用第一个数组元素作为最大值变量max和最小值变量min的初值,然后分别用数

文档评论(0)

saa9099 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档