结构体和泛型程序设计分析.ppt

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结构体和泛型程序设计分析

结构体和泛型编程 1068谈起 1068题目 要找出排名前5的人。 这5个人的排名要求是先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。 这里的排序就比较别扭了。 两个问题 学生一共有三个数据项,我们如何来存储三个数据项? 怎么排序?怎么用 #include algorithm 中的sort。 第一个问题:struct 在c++中,允许自己定义类型。(和pascal中的record效果一样) 在本题中我们就可以自己定义一个student类型。 struct student { int yuwen; int id; int score; }; 这里我定义了一个类型 student,他包含三个数据项,分别是整型的语文成绩,整型的学号,整型的总分。 具体语法规则 声明一个结构体类型的一般形式为: struct 结构体类型名 {成员表列}; 定义struct可以放在 main的上方,也可放在main里。 具体用法可以参看谭浩强的教材。 我们在pasacl中没有一些标准算法可以调用,所以,我们经常不用record,而用很多一维数组代替。比如本道题,我们就可以用三个一维数组。但是c++里有很多标准算法,所以,我们更要习惯 定义结构体来做题目。 排序 数组的排序 #include iostream #include algorithm //算法库 using namespace std; bool mycmp( int a, int b) //返回true表示排序时a应该放在b前面 {return ab;} int main() { int a[10]={1,4,2,3,6,7,5,9,0,8}; int N=10; sort(a, a+N); //从起点到终点从小到大排序 for (int i=0; iN; i++) cout a[i] ; //结果是10个数字从小到大排列 cout endl; sort(a, a+N, mycmp); //调用自己定义的比较函数,第三个参数。 //见上面的mycmp函数 for (int i=0; iN; i++) cout a[i] ; //结果是10个数字从大到小排列 cout endl; return 0; } 第二个问题,排序 这道题的排序需要比较三个数据项,并且有降序有升序。 我们需要自己定义比较方式。 C++的排序内置在algorithm 库中。 如果你自己编的过程必须要制定类型。 Sort这个函数是不分类型的。这就是常说的泛型程序设计。 泛型,就是所有类型都支持。当然对于自己定义的类型也支持。 练习题 1069 1134 * *

文档评论(0)

little28 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档