博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7-07. PAT排名汇总(25) (结构体 ZJU_PAT)
阅读量:7081 次
发布时间:2019-06-28

本文共 2842 字,大约阅读时间需要 9 分钟。

题目链接:

编程能力測试(Programming Ability Test,简称PAT)是浙江大学计算机科学与技术学院主办的专业技术认证考试(网址http://pat.zju.edu.cn/)。

每次考试会在若干个不同的考点同一时候举行。每一个考点用局域网。产生本考点的成绩。考试结束后。各个考点的成绩将即刻汇总成一张总的排名表。如今就请你写一个程序自己主动归并各个考点的成绩并生成总排名表。

输入格式说明:

输入的第1行给出1个正整数N(<=100),代表考点总数。随后给出N个考点的成绩。格式为:首先1行给出正整数K(<=300)。代表该考点的考生总数。随后K行。每行给出1个考生的信息,包含考号(由13位整数字组成)和得分(为[0,100]区间内的整数)。中间用空格分隔。

输出格式说明:

首先在第1行里输出考生总数。随后输出汇总的排名表,每一个考生的信息占一行,顺序为:考号、终于排名、考点编号、在该考点的排名。

当中考点按输入给出的顺序从1到N编号。考生的输出须按终于排名的非递减顺序输出,获得同样分数的考生应有同样名次,并按考号的递增顺序输出。

例子输入与输出:

序号 输入 输出
1
251234567890001 951234567890005 1001234567890003 951234567890002 771234567890004 8541234567890013 651234567890011 251234567890014 1001234567890012 85
91234567890005 1 1 11234567890014 1 2 11234567890001 3 1 21234567890003 3 1 21234567890004 5 1 41234567890012 5 2 21234567890002 7 1 51234567890013 8 2 31234567890011 9 2 4
2
4104000000000011 1004000000000008 904000000000005 1004000000000001 904000000000003 954000000000009 804000000000006 904000000000007 1004000000000002 904000000000004 9063000000000003 753000000000013 853000000000007 863000000000009 923000000000010 983000000000020 6022000000000002 982000000000003 9811000000000001 100
191000000000001 1 4 14000000000005 1 1 14000000000007 1 1 14000000000011 1 1 12000000000002 5 3 12000000000003 5 3 13000000000010 5 2 14000000000003 8 1 43000000000009 9 2 24000000000001 10 1 54000000000002 10 1 54000000000004 10 1 54000000000006 10 1 54000000000008 10 1 53000000000007 15 2 33000000000013 16 2 44000000000009 17 1 103000000000003 18 2 53000000000020 19 2 6
3
119999999999999 0
19999999999999 1 1 1

PS:

就是一道结构体运用的果题!

代码例如以下:

#include 
#include
#include
#include
using namespace std;const int maxn = 41700;struct ss{ char num[17]; int s; int rank;//在当前考点的排名 int mark;//在几号考点 int flag;//总排名}stu[maxn];bool cmp1(ss a, ss b){ if(a.s == b.s) { return strcmp(a.num, b.num) < 0; } return a.s > b.s;}int main(){ int N; int k[117]; int sum = 0; scanf("%d",&N); { int i, j; int l = 0, p = 0; for(i = 1; i <= N; i++) { scanf("%d",&k[i]); sum += k[i]; int tt = l; for(j = 1; j <= k[i]; j++) { scanf("%s%d",stu[l].num,&stu[l].s); stu[l].mark = i; l++; } sort(stu+tt,stu+l,cmp1); p = 2; stu[tt].rank = 1; for(int h = tt+1; h < l; h++) { if(stu[h-1].s == stu[h].s) { stu[h].rank = stu[h-1].rank; } else { stu[h].rank = p; } p++; } } sort(stu,stu+l,cmp1); int f = 1; int flag = 0; printf("%d\n",sum); stu[0].flag = 1; printf("%s %d %d %d\n",stu[0].num,stu[0].flag,stu[0].mark,stu[0].rank); p = 2; for(int h = 1; h < l; h++) { if(stu[h-1].s == stu[h].s) { stu[h].flag = stu[h-1].flag; } else { stu[h].flag = p; } p++; } for(i = 1; i < l; i++) { printf("%s %d ",stu[i].num,stu[i].flag); printf("%d %d\n",stu[i].mark,stu[i].rank); } } return 0;}

转载地址:http://qelml.baihongyu.com/

你可能感兴趣的文章
C++/CLI思辨录之内部指针的两面性
查看>>
谨慎注意WebBrowser控件的DocumentCompleted事件
查看>>
回头再说 005 --温暖的文字和音乐
查看>>
JavaWeb之tomcat安装、配置与使用(一)
查看>>
解: Eclipse+pydev中文显示
查看>>
自动填写表单有风险吗?
查看>>
JSON下载与解析
查看>>
我的友情链接
查看>>
react+react-router+redux+react-redux构建一个简单应用
查看>>
二叉树遍历 (先序遍历、中序遍历、后序遍历) 递归
查看>>
shell编程学习之sed
查看>>
windows server 2012安装后规划分区
查看>>
Python学习笔记(2)--Python的安装
查看>>
使用cygwin/openSSH搭建windows下的SSH服务器
查看>>
Ubuntu里网卡IP设置的步骤&/etc/passwd文件
查看>>
Windows系统中 五大免费开源的SVN工具
查看>>
排序规则引起的冲突问题
查看>>
我的友情链接
查看>>
onTouch事件传递机制
查看>>
那些年的坑--双精度数值转成整形
查看>>