批量数据处理-数组程序设计.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文档。上传文档
查看更多
批量数据处理-数组程序设计.ppt

高级语言程序设计 第6章 批量数据处理—数组程序设计(1) 引言 现在已经能解决很多问题了,但是学生成绩管理问题中 如果要求把全班学生成绩进行排序,用学过的方法就不好解决,你有解决的办法吗? 再比如在一个成绩单中查询某个同学的成绩,你现在能查吗? 问题的关键在于如何在内存中存储批量数据 今天要解决的问题 学生成绩排序问题 学习目标 理解数组存储数据的特点 掌握数组定义、初始化、数组引用的基本方法 理解数组作为函数的参数的特征,学会数组作为函数参数的定义和使用方法 用数组解决排序问题 问题1:某一门课程成绩的排序问题 问题描述:某班某门课程考试之后,通常要把成绩进行排序。写一个程序实现输入学生学号和成绩,然后按成绩进行排序(升序或降序),排序的结果输出到屏幕上或重定向到一个文件中。假设班级人数确定。 输入样例(假设有5个人) 1 55 2 89 3 90 4 77 5 66 输出样例(降序) 3 90 2 89 4 77 5 66 1 55 分析: 5个人的数据如果是求和,求平均怎么存储? 如果是排序该怎么办呢? 假设一个班级有60个学生,就应该有60个成绩数据,又该怎么存储? 60个成绩和学号数据都需要存储 能写成int grade1,grade2,grade3,…… ,grade60; ? 还有60个学号 不能省略写法,更多的怎么写? 解决方案:同类型的数据用数组存储起来 怎么排序?--交换法 交换法降序(升序)的基本过程是:假设有n个数据要排序,则 第一趟:把第一个数依次和后面的数比较,如果后面的某数大于(小于)第一个数,则两个数交换,否则不交交换,比较结束后,第一个数则是最大(最小)的数。 第二趟:把第二个数依次和后面的数比较,如果后面的某数大于(小于)第二个数,则两个数交换,否则不交交换,比较结束后,第二个数则是次大(次小)的数; …依上类推… 第n-1趟: 从剩下的两个数据中找出较大(小)的数,并将它交换到第n-1个位置。 算法设计(主流程) 0 确定人数SIZE 1 原始数据输入 2 用交换法排序 3 输出排序结果 算法设计(数据输入模块) for (i=0;iSIZE;i++) 循环从键盘或从文件读学号和成绩,保存到数组中 算法设计(交换排序模块) for(i=0;iSIZE-1;i++) for(j=i+1;jSIZE;j++) 第i个和第j个成绩数据比较 较大者放在第i个位置 同时学号数据也跟着变化 算法设计(数据输出模块) for (i=0;iSIZE;i++) 循环把学号和成绩数据输出到屏幕或文件 算法实现( 非函数模块版, 标准I/O) #includestdio.h #define SIZE 60 int main(void) { int i,j,temp; int grade[SIZE],num[SIZE]; for(i=0; iSIZE; i++){ scanf(%d %d, num[i],grade[i]);} for(i=0;iSIZE-1;i++){ for(j=i+1; jSIZE; j++){ if (grade[j] grade[i]) { temp=grade[j]; grade[j]=grade[i]; grade[i]=temp; temp=num[j]; num[j]=num[i]; num[i]=temp; }} } for(i=0; i SIZE; i++) printf(%d %d\n, num[i], grade[i]); return 0; } 算法实现( 函数模块版) #includestdio.h #define SIZE 60 void input (int[ ],int[ ],int); void exchangeSort(int[ ], int[ ], int); void print (const int[ ],const int[ ], int); int main(void) { int i,j,temp; int grade[SIZE],num[SIZE]; input (grade, num, SIZE)

文档评论(0)

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

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

1亿VIP精品文档

相关文档