输出最高分数的学生姓名 - 计蒜客题目

输出最高分数的学生姓名

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入格式
第一行输入一个正整数 N(N≤100),表示学生人数。接着输入 N 行,每行格式如下:

分数 姓名

分数是一个非负整数,且小于等于 100;

姓名为一个连续的字符串,中间没有空格,长度不超过 20。
数据保证最高分只有一位同学。

输出格式

获得最高分数同学的姓名。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 name.in,输出文件为 name.out

样例输入
5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim
样例输出
hanmeimei

思路:
这道题不能使用sort, 因为一使用sort他的数字的顺序全部都会改变, 这样就很难输出名字了

我们只需要保存一个成绩的最大值和一个成绩最大值的名字的下标. 我们在利用打擂台的思想,将成绩的最大值求出来,更换最大值的同时更新最大值的名字的下标.

代码:

#include 
#include 
#include 
using namespace std;
int score[105];
string name[105];
int main() {
    freopen("name.in", "r", stdin);
    freopen("name.out", "w", stdout);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> score[i] >> name[i];
    }
    int maxset=0,maxscore=0;
    //遍历从0-n-1
    for(int i=0;i<n;i++){
        if(score[i]>maxscore){
            //更新最大值
            maxscore=score[i];
            //更新最大值下标
            maxset=i;
        }
    }
    cout<<name[maxset];
    return 0; //华丽的结束
}

这是蒟蒻的第一篇博客,希望大家多多支持!!!
我们下一篇博客见!

你可能感兴趣的:(输出最高分数的学生姓名 - 计蒜客题目)