PAT—A1012 The Best Rank (25 分)

题目地址:
PAT—A1012 The Best Rank (25 分)

题意
首先输入给出 n , m 代表 n 个学生和 m 个查询,接下来的 n 行分别输入 n 个学生的学号和 C , M , E 三科成绩( A 是三科成绩四舍五入得到的平均成绩。现在要求分别按 4 个分数(C , M , E , A)对 n 个学生进行排名(分数一样的具有相同的名次),这样对每个学生来说都有四个名次(每个分数都有 1 个名次)。接下来会有 m 个查询,每个查询输入一个考生的学号,要求输出该考生 4 个排名中最高的那个排名及对应的是 A,C,M,E 中的哪一个。如果对不同的课程有相同的排名,则按 A>C>M>E 的优先级输出;如果查询的考生的学号不存在,则输出 N/A。

思路

  • 安排下标:因为优先级为:A>C>M>E,不妨在设置数组是就按照这个顺序分配下标:0-A,1-C,2-M,3-E。
  • 存储结构:每个学生用一个结构体进行存储,包含的信息有:学号,四个分数,四个排名。
  • 输入:读入每个学生的学号,三门课的成绩,然后四舍五入算出平均成绩,这样就将学生的信息存入到结构体数组中。
  • 排名次:分别根据四个分数对结构体数组进行排序,给出每个学生每个分数的名次。
  • 输出:根据输入的查询和优先级关系,输出该考生 4 个排名中最高的那个排名及对应的是 A,C,M,E 中的哪一个

需要注意

  • 因为要求输出最高排名及对应的是 A,C,M,E 中的哪一个,所以可以用一个 char 数组(或者用map)mp[0]='A';mp[1]='C';mp[2]='M';mp[3]='E';
  • 如果分数相同则排名相同,所以不可以简单的进行排序,在排序之后再一个个的给出他们的名次
  • 根据给的例子可以看出来平均分是由三门课分数之和求平均然后四舍五入得到。

参考代码

#include<bits/stdc++.h>
using namespace std;
typedef struct
{
   
	int s[4],r[4];
	char no[7];
}STU;
char mp[4];int now;
bool cmp(STU s1,STU s2)
{
   
	return s1.s[now]>s2.s[now];
}
int main
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值