方法1:用数组下标来表示成绩,输出时,按照stu[maxgrade]输出即可:

#include<cstdio>
#include<algorithm>
#include<cstring>

using namespace std;

struct Student{
    char name[12];
    char number[12];
}stu[105];



int main(){

    int n;
    scanf("%d",&n);

    int grade;
    char name[12];
    char number[12];

    int maxnumber=0,minnumber=100;

    for(int i=0;i<n;i++){
        scanf("%s %s %d",name,number,&grade);
        strcpy(stu[grade].name,name);
        strcpy(stu[grade].number,number);
        maxnumber = max(grade,maxnumber);
        minnumber = min(grade,minnumber);
    }

    printf("%s %s\n",stu[maxnumber].name,stu[maxnumber].number);
    printf("%s %s",stu[minnumber].name,stu[minnumber].number);


    return 0;
}

方法二:
这个方法更好

#include<stdio.h>
#include<string.h>

using namespace std;

struct student{
    char name[15];
    char id[15];
    int score;
}temp,ans_max,ans_min;

int main(){

    int n;
    scanf("%d",&n);

    ans_max.score = 0;
    ans_min.score = 101;

    for(int i=0;i<n;i++){
        scanf("%s%s%d",temp.name,temp.id,&temp.score);
        if(temp.score > ans_max.score)    ans_max = temp;
        if(temp.score < ans_min.score)    ans_min = temp;
    }

    printf("%s %s\n",ans_max.name,ans_max.id);
    printf("%s %s",ans_min.name,ans_min.id);


    return 0;
}