【编程实现】
蓝桥杯 STEMA 测评,成绩排名与证书的对应关系如下:
排名 奖项等级
前 10% 一等奖
前 30% 二等奖
前 60% 三等奖
前 80% 优秀奖
已知小蓝同学的成绩及其他所有考生的成绩,你能帮助小蓝计算一下他能获得的奖项等级吗?
输入:
第一行为一个整数 score,(0≤score≤100)代表小蓝的成绩。
第二行为一个整数 n,(10≤n≤1000)代表参加测评的总人数。
第三行为n 个整数,每个整数代表每个参加测评考生的成绩,中间用空格分
隔,成绩范围同 score。输出:
A、B、C、D、E 五个字母,分别代表一、二、三等奖,优秀奖及未获奖。注意:分数相同则等级相同,后续选手排名顺延。
【结果样例】
样例输入:
95
10
99 95 90 99 80 70 71 78 77 60
样例输出:
B
样例说明:小蓝在 10 名参赛选手中排名第 3,属于前 30%,故获得二等奖,
所以输出 B。另,两名 99 分的选手由于分数相同,所以并列一等奖。
【评分标准】(考试系统内置本题目的四组测试用例,从最为普通情况的用例一到相对极端情况的用例四;每个用例通过得分不同,本题合计 25 计分点)
3 分:检测通过第一组测试用例;
5 分:检测通过第二组测试用例;
7 分:检测通过第三组测试用例;
10 分:检测通过第四组测试用例。 分值5分
//答案
#include<iostream>
using namespace std;
int main(){
int score,n,s[1005],temp;
cin>>score>>n;
for(int i=0;i<n;i++)
cin>> s[i];
//简单排序一下,这里用冒泡排序
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(s[j]<s[j+1]){
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
//排好序的数组从前往后查找看是第几个,计算百分比
for(int i=0;i<n;i++){
if(s[i]==score){
temp=i;
break;
}
}
//找到后计算排名百分比
double pm=(double)(temp+1)/n;
if(pm<=1.0){
cout<<'A';
}else if(pm<=3.0){
cout<<'B';
}else if(pm<=6.0){
cout<<'C';
}else if(pm<=8.0){
cout<<'D';
}else{
cout<<'E';
}
return 0;
}