题目描述
建立一个对象数组,内放4个学生的数据(学号 int、成绩 int),设立一个函数max(),用指向对象的指针作函数参数,在max函数中找出4个学生中成绩最高者,并输出其学号和成绩。如有相同最高成绩,输出所有符合的学号和成绩,顺序按照学号从小到大排列。
输入
输入8个整数:学号1 成绩1 学号2 成绩2… 用空格分隔。
输出
最高成绩和对应的学号
样例输入
3 100 2 90 4 78 5 100
样例输出
3 100
5 100
#include <iostream>
#include <algorithm>
using namespace std;
//题目描述
//建立一个对象数组,内放4个学生的数据(学号 int、成绩 int),设立一个函数max(),用指向对象的指针作函数参数,
//在max函数中找出4个学生中成绩最高者,并输出其学号和成绩。如有相同最高成绩,输出所有符合的学号和成绩,顺序按照学号从小到大排列。
//输入
//输入8个整数:学号1 成绩1 学号2 成绩2… 用空格分隔。
//输出
//最高成绩和对应的学号
struct Student {
int id;
int grade;
};
bool cmp(Student& a, Student& b) {
return a.id < b.id;
}
void max(Student* arr, int n) {
int maxGrade = -1;
for (int i = 0; i < n; i++) {
maxGrade = max(maxGrade, arr[i].grade);
}
bool flag = false;
for (int i = 0; i < n; i++) {
if (arr[i].grade == maxGrade) {
cout << arr[i].id << " " << arr[i].grade<<endl;
}
}
}
int main() {
Student arr[4];
for (int i = 0; i < 4; i++) {
cin >> arr[i].id >> arr[i].grade;
}
sort(arr, arr + 4, cmp);//先按照学号顺序从小到大进行排序,这样即使遇到相同成绩也不会出问题
max(arr, 4);
return 0;
}