某班级共有50名同学,依次输入每位同学的姓名和生日,姓名中不带有空格,生日输入格式为yyyy/ mm /dd (yyyy代表出生年,mm代表出生于代表出生日),按年龄从大到小的顺序输出每位同学的姓名,那个姓名占一行
#include<stdio.h>
#include<stdlib.h>
typedef struct DateTime {
char name[40];
int year;
int mon;
int day;
}DateTime;
int main() {
DateTime t[50];
int n;
scanf("%d", &n);
/*DateTime temp;
scanf_s("%s", &temp.name);
printf("%s ", temp.name);*/
int i;
for (i = 0; i < n; i++) {
scanf("%s", &t[i].name);
scanf("%d/%d/%d",&t[i].year, &t[i].mon, &t[i].day);
}
DateTime temp;
for (i = 0; i <n-1 ; i++) {//冒泡排序
for (int j = 0; j < n - i - 1; j++) {
if (t[j].year > t[j + 1].year) {
temp = t[j];
t[j] = t[j + 1];
t[j + 1] = temp;
}else if (t[j].year ==t[j + 1].year&&t[j].mon > t[j + 1].mon) {
temp = t[j];
t[j] = t[j + 1];
t[j + 1] = temp;
}else if(t[j].year ==t[j + 1].year&&t[j].mon ==t[j + 1].mon&&t[j].day > t[j + 1].day) {
temp = t[j];
t[j] = t[j + 1];
t[j + 1] = temp;
}
}
}
for (int k = 0; k <n ; k++) {
printf("%s %d/%d/%d\n", t[k].name, t[k].year, t[k].mon, t[k].day);
}
return 0;
}