批量数据处理数组程序设计()9.pptVIP

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
批量数据处理数组程序设计()9

高级语言程序设计 第6章 批量数据处理—数组程序设计(2) 问题3 在成绩单中查找某人的成绩 问题描述:问题2已经建立了有3门课程的成绩单(学号(假设学号在1到100之间,不一定连续) 、数学成绩、英语成绩、计算机成绩和总分)中,现在按照学号查找某人的成绩信息。 样例输入1 30 输出样例1 70 80 90 240 样例输入2 150 输出样例2 not found 分析 假设3门课程的成绩单已经存储在数组 int num[60 ], grade[60][3], total[ 60]中 我们的问题是用户输入一个学号,一般称为key,程序在学号数组中查找有没有对应的学号,如果有,则把相应的成绩信息打印出来,如果没有,显示not found 怎么查找(Search) 查找是另一个计算机领域里的比较经典的问题。 如果数据以数组的形式存放,并且知道要查找的数据与下标的关系,就非常容易在数组中定位感兴趣的数据(有一种散列查找就具备这样的特点,在数据结构课程中详细介绍)。 但是如果要查的数据没有与下标建立起直接的对应关系,只好从头开始进行逐个比较,这称为线性查找(顺序查找)。 如果数据已经按照要查的数据排好序,那么采用折半查找可以提高查找的效率。 算法设计(线性查找函数) 对于给定的查找key,和学号数组num[M] for( i=0;iM;i++) if num[i]等于key 则 return i 如果i=M 返回-1 算法实现 int linearSearch(const int num[], int key) { int i; for(i=0;iM;i++) if(num[i]==key) return i; if(i=M) return -1; } 在主函数中测试 scanf(“%d”,key); i = linearSearch( num, key); if( i != -1 ) { for( j=0; jN; j++){ printf(%10d,grade[i][j]); //print grade printf(%10d\n,total[i]); //print total } } else printf(“not found\n”); 折半查找 折半查找也叫二分查找。前提: 数组num中的元素已经排好顺序(升或降) 算法设计(折半查找函数) 设num[ ]数组的下标范围[low,high], 且数组元素已有序, 在num[ ]中查找key 1) 如果 low = high,循环执行2)到5) 2) 计算中点: mid = (high-low) / 2 3) 如果 key num[mid], 则修改 low=mid+1, 转到1) 4) 否则,如果 key num[mid], 则修改high=mid-1, 转到1) 5) 否则,已经找到 return mid, 算法实现(二分查找函数) int binSearch ( int num[ ], int key) { int low, high, mid; low=0; high= M-1; while ( low = high) { mid=(high+low)/2; if( num[mid]key) low = mid + 1; else if (num[mid]key) high = mid - 1; else return (mid); } return (-1); } 字符型数组与字符串 实际问题当中,学生的ID是一个比较长的字符串,不是整数值, 字符串怎么比较呢? 每个人的ID字符串怎么存储呢? 全部所有学生的ID又怎么存储呢? 在C语言中字符串到底是怎么定义的呢? 什么是字符串? 用双引号引起来的一串字符就是字符串 姓名字符串“zhangqiang”,学号ID字符串“0308606709”等等 ,字符串常量 字符串是怎么存储到内存中呢? 是一个字符占一个字节,10个字符的ID就占用10个字节吗?如果有两个字符串需要连续存储怎么办呢?例如

文档评论(0)

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

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

1亿VIP精品文档

相关文档