NOIP普及组解题呈报.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  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文档。上传文档
查看更多
NOIP普及组解题呈报

NOIP 2007普及组解题报告 奖学金 (scholar.pas/c/cpp) 【问题描述】 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。 任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是: 7 279 5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是: 5 279 7 279 则按输出错误处理,不能得分。 【输入】 输入文件scholar.in包含行n+1行: 第l行为一个正整数n,表示该校参加评选的学生人数。 第2到年n+l行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。 所给的数据都是正确的,不必检验。 【输出】 输出文件scholar.out共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。 【输入输出样例l】 scholar.in 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 scholar.out 6 265 4 264 3 258 2 244 1 237 【输入输出样例2】 scholar.in 8 80 89 89 88 98 78 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 scholar.out 8 265 2 264 6 264 1 258 5 258 【限制】 50%的数据满足:各学生的总成绩各不相同 100%的数据满足:6=n=300 【试题分析】 简单的排序。因为n=300,所以选择排序不会超时。 存储方面只需存储三个数:学好、语文成绩和总分。 【参考程序】 program a1(input,output); var n,x,y,z,i,j:integer; a:array[1..300,1..3] of integer; procedure swap(var a,b:integer); {交换过程} var s:integer; begin s:=a; a:=b; b:=s; end; begin assign(input,scholar.in); assign(output,scholar.out); reset(input); rewrite(output); readln(n); for i:=1 to n do begin readln(x,y,z); a[i,1]:=i; a[i,2]:=x; a[i,3]:=x+y+z; end; for i:=1 to n-1 do {选择排序} for j:=i+1 to n do if (a[i,3]a[j,3]) or ((a[i,3]=a[j,3]) and (a[i,2]a[j,2])) or ((a[i,1]a[j,1]) and (a[i,3]=a[j,3]) and (a[i,2]=a[j,2])) then begin swap(a[i,1],a[j,1]); swap(a[i,2],a[j,2]); swap(a[i,3],a[j,3]); end; for i:=1 to 5 do writeln(a[i,1], ,a[i,3]); close(input); {文件不要忘记关闭} close(output); end. 纪念品分组(group.pas/c/cpp) 【题目描述】 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的

文档评论(0)

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

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

1亿VIP精品文档

相关文档