2010.11.16讲义.docVIP

  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文档。上传文档
查看更多
2010.11.16讲义

2010.11.16 周二 复习回顾: 什么是函数?函数声明、形参、实参 数组名作为形参和实参的使用注意事项 Void函数类型的注意事项 什么是结构体?结构体数组? 【例】 int a[10]; qsort(a,5,sizeof(int),cmp) a为 ,10为 ,sizeof(int)为 ,cmp为 cmp函数的指针写法: 数组快排,cmp函数必须使用指针形式 int cmp(const void *a,const void *b) {return *(int*)a-*(int*)b;} 快排函数: “.”C语言中的成员运算符 “-”C语言中的指向运算符。即(*p).num改用p-num来代替,表示p所指向的结构体变量中的num成员。 以下三个语句等价: 结构体变量.成员名 (*p).成员名 p-成员名 p-n 得到p指向结构体变量成员n的值 p-n++ 得到p指向结构体变量成员n的值,用完该值后加1 ++p-n 得到p指向结构体变量成员n的值加1,然后再使用它 (类型说明符*) 表示把返回值强制转换为该类型指针 结构体快排: 一维数组快排: int cmp(const void *a, const void *b) { return *(int *)a-*(int*)b; } qsort(a,5,sizeof(int),cmp); 字符串快排 int cmp(const void *a, const void *b) { return strcmp( (char *)a , (char*)b ); } qsort(a,5,sizeof(a[0]),cmp); 结构体某关键字快排 struct student { int num; char name[12]; int s; }a[50]; int cmp(const void *a,const void *b) { return ((struct student*)a)-s-((struct student*)b)-s; } qsort( (void*)a , 5 , sizeof(a[0]) , cmp ) 对结构体中字符串进行排序: struct student { int num; char name[12]; int s; }a[50]; int cmp(const void *a,const void *b) { return strcmp(((struct student*)a)-s,((struct student*)b)-s); } qsort((void*)a,5,sizeof(a[0]),cmp) 结构体多个关键字快排(二级为例) struct student { int num; char name[12]; int s1,s2; }a[50]; int cmp(const void *a,const void *b) { if( ( (struct student*)a)-s1 != ((struct student*)b )-s1 ) return ((struct student*)a)-s-((struct student*)b)-s; else return ((struct student*)a)-s2-((struct student*)b)-s2; } qsort((void*)a,5,sizeof(a[0]),cmp) 【复赛真题】——Noip 2007 《奖学金》 描述 Description ?   某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。   任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:   7 279   5 279   这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:   5 279   7 279   则按输出错误处理,不能得分。 输入格式 Input Format?   输入包含n+1行:

文档评论(0)

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

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

1亿VIP精品文档

相关文档