https://pintia.cn/problem-sets/994805260223102976/problems/994805321640296448
思路
既然要求输出成绩最好和最差,且成绩均不相同,可以利用map建立成绩和学生信息结构体的映射,因为map会根据关键字自动升序排列
C++实现
#include <iostream>
#include <map>
using namespace std;
typedef struct {
string name,snum;
} stu;
int main()
{
int n,score;
scanf("%d",&n);
map<int,stu> stud;
char name1[11],snum1[11];
for (int i=0; i<n; i++) {
scanf("%s %s %d",name1,snum1,&score);
stud[score].name=name1;
stud[score].snum=snum1;
}
auto it=stud.end(); it--; //迭代器的end是尾部 不含元素 要--
cout<<it->second.name<<" "<<it->second.snum<<endl;
cout<<stud.begin()->second.name<<" "<<stud.begin()->second.snum;
return 0;
}
C语言实现
用三个结构体,成绩最高、成绩最低、临时结构体,一边读入 一边判断
#include <cstdio>
struct {
char name[11];
char num[11];
int score;
}temp,max,min;
int main()
{
int n;
scanf("%d",&n);
max.score=-1,min.score=101;
for(int i=0; i<n; i++ ){
scanf("%s %s %d",&temp.name,&temp.num,&temp.score);
if (temp.score>max.score) max=temp;
if (temp.score<min.score) min=temp;
}
printf("%s %s\n",max.name,max.num);
printf("%s %s",min.name,min.num);
return 0;
}