chenyanxiu_230531 @ 2025-01-01 19:28:21
本代码得了80分,借鉴了这篇题解的思路
#include<iostream>
#include<cstring>
using namespace std;
struct Students{
string name;
int birthday; // 存储为年月日的整数形式,例如19900101
int number;
}a[1000000];
// 交换两个学生的信息
void swap(int j, int k){
Students temp = a[j];
a[j] = a[k];
a[k] = temp;
}
int main(){
int k;
cin >> k;
int x, y, z;
for(int i = 0; i < k; i++){
cin >> a[i].name >> x >> y >> z;
a[i].birthday = x * 10000 + y * 100 + z;
a[i].number = i + 1;
}
// 使用冒泡排序算法进行排序
for(int i = 0; i < k - 1; i++){
for(int j = 0; j < k - 1 - i; j++){
if(a[j].birthday > a[j + 1].birthday){
swap(j, j + 1);
}
else if(a[j].birthday == a[i].birthday && a[j].number > a[i].number){
swap(j, j + 1);
}
}
}
// 输出排序后的学生姓名
for(int i = 0; i < k; i++){
cout << a[i].name << endl;
}
return 0;
}
代码详细易理解,只需给出错误的地方即可。