C语言这个名单要怎么解啊

现有一份用户名单,你需要找出得分最高的用户。用户名单中含有以下信息:
 name :一个长度在 [1,15]范围内的字符串,字符串中只含有大小写字母、
数字和下划线,当然不同用户的name 可能重复。
 id :一个在 [1,10
7]范围内的整数, id 具有唯一性。
 score :一个在 [−9999,9999]范围内的整数,不同用户的 score 可能重复。
当有多个 score 最高的用户时,输出 id 最小的。

img

img

img

你题目的解答代码如下:

#include <iostream>

using namespace std;
typedef struct  {
    int id;
    char name[15];
    int score;
} Student;

int main()
{
    int n,i,max=0;
    cin >> n;
    Student a[n];
    for (i = 0; i < n; i++)
        cin >> a[i].name >> a[i].id >> a[i].score;
    for (i = 0; i < n; i++)
        if (a[max].score < a[i].score || (a[max].score == a[i].score && a[max].id > a[i].id))
            max = i;
    cout << a[max].name << " " << a[max].id << " " << a[max].score << endl;
    return  0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img