当前位置:网站首页>1095 解码PAT准考证 (25 分)(C语言)
1095 解码PAT准考证 (25 分)(C语言)
2022-08-03 05:09:00 【破烂摆烂人】
PAT 准考证号由 4 部分组成:
第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;
第 2~4 位是考场编号,范围从 101 到 999;
第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;
最后 11~13 位是考生编号,范围从 000 到 999。
现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。
输入格式:
输入首先在一行中给出两个正整数 N(≤10
4
)和 M(≤100),分别为考生人数和统计要求的个数。
接下来 N 行,每行给出一个考生的准考证号和其分数(在区间 [0,100] 内的整数),其间以空格分隔。
考生信息之后,再给出 M 行,每行给出一个统计要求,格式为:类型 指令,其中
类型 为 1 表示要求按分数非升序输出某个指定级别的考生的成绩,对应的 指令 则给出代表指定级别的字母;
类型 为 2 表示要求将某指定考场的考生人数和总分统计输出,对应的 指令 则给出指定考场的编号;
类型 为 3 表示要求将某指定日期的考生人数分考场统计输出,对应的 指令 则给出指定日期,格式与准考证上日期相同。
输出格式:
对每项统计要求,首先在一行中输出 Case #: 要求,其中 # 是该项要求的编号,从 1 开始;要求 即复制输入给出的要求。随后输出相应的统计结果:
类型 为 1 的指令,输出格式与输入的考生信息格式相同,即 准考证号 成绩。对于分数并列的考生,按其准考证号的字典序递增输出(题目保证无重复准考证号);
类型 为 2 的指令,按 人数 总分 的格式输出;
类型 为 3 的指令,输出按人数非递增顺序,格式为 考场编号 总人数。若人数并列则按考场编号递增顺序输出。
如果查询结果为空,则输出 NA。
输入样例:
8 4
B123180908127 99
B102180908003 86
A112180318002 98
T107150310127 62
A107180908108 100
T123180908010 78
B112160918035 88
A107180908021 98
1 A
2 107
3 180908
2 999
输出样例:
Case 1: 1 A
A107180908108 100
A107180908021 98
A112180318002 98
Case 2: 2 107
3 260
Case 3: 3 180908
107 2
123 2
102 1
Case 4: 2 999
NA
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
struct pat{
char a[14] ;
int score ;
char level[2] ; /*级别*/
int room ; /*考场编号*/
int data ; /*考试日期*/
int number ; /*考生编号*/
}P[10000];
int cmp(const void *a,const void *b){
struct pat *ipa = (struct pat*)a ;
struct pat *ipb = (struct pat*)b ;
if(ipa->score!=ipb->score){
return ipb->score-ipa->score ; //升序排列
}else{
return strcmp(ipa->a,ipb->a) ;
}
}
int main(int argc, char *argv[]) {
int n , m ;
scanf("%d %d",&n,&m) ;
int i , j , k ;
/*读取结构数据和分解*/
for( i = 0 ; i < n ; i++ ){
scanf("%s %d",P[i].a,&P[i].score) ;
sscanf(P[i].a,"%1s%3d%6d%3d",P[i].level,&P[i].room,&P[i].data,&P[i].number) ;
}
qsort(P,n,sizeof(P[0]),cmp) ;
for( i = 0 ; i < m ; i++ ){
int type ;
scanf("%d",&type) ;
if(type==1){
char level ;
int flag = 0 ;
scanf(" %c",&level) ;
printf("Case %d: %d %c\n",i+1,type,level) ;
for( j = 0 ; j < n ; j++ ){
if( level == P[j].level[0] ){
flag = 1 ;
printf("%s %d\n",P[j].a,P[j].score) ;
}
}
if(flag == 0){
printf("NA\n") ;
}
}else if(type==2){
int room ;
int cnt = 0 , sum = 0 ;
scanf(" %d",&room) ;
printf("Case %d: %d %d\n",i+1,type,room) ;
for( j = 0 ; j < n ; j++ ){
if( room == P[j].room ){
cnt++ ;
sum += P[j].score ;
}
}
if(cnt==0){
printf("NA\n");
}else{
printf("%d %d\n",cnt,sum);
}
}else if(type==3){
int data ;
scanf(" %d",&data) ;
int room[1000] = {
0} , max = 0;
printf("Case %d: %d %06d\n",i+1,type,data) ;
for( j = 0 ; j < n ; j++ ){
if( data == P[j].data ){
room[P[j].room]++ ;
if(max<room[P[j].room]){
max = room[P[j].room] ;
}
}
}
if(max == 0){
printf("NA\n") ;
}else{
for( j = max ; j > 0 ; j-- ){
for( k = 101 ; k < 1000 ; k++ ){
if( room[k] == j ){
printf("%d %d\n",k,j) ;
}
}
}
}
}
}
return 0;
}
边栏推荐
- Jmeter 模拟多用户登录的两种方法
- High availability, two locations and three centers
- Where is the value of testers
- Shell条件语句判断
- IO process thread -> thread -> day5
- odps的临时查询能在写sql的时候就给结果一个命名不?
- BIOTIN ALKYNE CAS:773888-45-2价格,供应商
- Coordinate knowledge in digital twin campus scenarios
- 接口测试框架实战(四)| 搞定 Schema 断言
- [Harmony OS] [ARK UI] ETS context basic operations
猜你喜欢
typescript42-readonly修饰符
Tributyl-mercaptophosphane "tBuBrettPhos Pd(allyl)" OTf), 1798782-17-8
接口和协议
常见亲脂性细胞膜染料DiO, Dil, DiR, Did光谱图和实验操作流程
Coordinate knowledge in digital twin campus scenarios
typescript40-class类的保护修饰符
Shell conditional statement judgment
传统企业如何转型社交电商,泰山众筹的玩法有哪些?
Interface test practice | Detailed explanation of the difference between GET / POST requests
接口测试框架实战(四)| 搞定 Schema 断言
随机推荐
tag单调栈-单调栈预备知识-lt.739. 每日温度
BIOTIN ALKYNE CAS:773888-45-2价格,供应商
Ali cloud object storage oss private barrels to generate links
接口测试框架实战(四)| 搞定 Schema 断言
Talking about GIS Data (5) - Geographic Coordinate System
Modified BiotinDIAZO-Biotin-PEG3-DBCO|diazo-biotin-tripolyethylene glycol-diphenylcyclooctyne
[Harmony OS] [ArkUI] ets development graphics and animation drawing
MOSN 反向通道详解
typescript46-函数之间的类型兼容性
在竞争白热化的电商行业,链动2+1为什么还有企业在用
Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature
shell脚本循环语句
Harmony OS ets ArkUI 】 【 】 the development basic page layout and data connection
接口和抽象
数字化时代,企业如何建立自身的云平台与商业模式的选择?
荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
typescript41-class类的私有修饰符
[Fine talk] Using native js to implement todolist
idea使用@Autowired注解爆红原因及解决方法
MySQL 入门:Case 语句很好用