题目描述:
读入 n ( > 0 ) n(>0) n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… …
… …
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
代码:
/*利用头文件algorithm.h中的排序函数sort进行排序,
最后输出排序后学生数组【0】和【n-1】的信息*/
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int MAXN = 1000; //定义最大值
struct stu { //定义学生结构体
string name; //名字和ID
string id;
int cj; //成绩
};
//cmp函数可以让sort函数对结构体中cj数值的排序,接受stu x和y
bool cmp(stu x,stu y)
{
return x.cj<y.cj; //从小到大排序
}
int main() {
stu student[MAXN];
int n;
cin>>n;
for(int i =0;i<n;i++)
cin>>student[i].name>>student[i].id>>student[i].cj; //输入学生信息
sort(student,student+n,cmp); //sort(起始地址,最终地址,cmp(如果是对普通数组的从小到大排序,那么cmp可以没有;但如果想要对结构体的某一元素排序或者从大到小排序,需要用户自己写一个cmp函数,注意cmp为bool类型的函数))
cout<<student[n-1].name<<' '<<student[n-1].id<<endl; //最大
cout<<student[0].name<<' '<<student[0].id; //最小
}