输入n个学生的信息,包括姓名,性别,出生年月。要求按年龄从小到大依次输出这些学生的信息。数据保证没有学生同年同月出生。 输入 第一行一个整数n,表示学生人数,n<=100. 接下来n行,每一行依次输入学生的姓名、性别、出生年份、出生月份。 输出 按年龄从小到大,一行输出一个学生的原始信息
时间: 2023-03-30 15:03:18 浏览: 204
学生数据输入
我可以回答这个问题。以下是代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
char gender[5];
int birth_year;
int birth_month;
} Student;
int compare(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
if (s1->birth_year != s2->birth_year) {
return s1->birth_year - s2->birth_year;
} else {
return s1->birth_month - s2->birth_month;
}
}
int main() {
int n;
scanf("%d", &n);
Student *students = (Student *)malloc(n * sizeof(Student));
for (int i = ; i < n; i++) {
scanf("%s %s %d %d", students[i].name, students[i].gender, &students[i].birth_year, &students[i].birth_month);
}
qsort(students, n, sizeof(Student), compare);
for (int i = ; i < n; i++) {
printf("%s %s %d %d\n", students[i].name, students[i].gender, students[i].birth_year, students[i].birth_month);
}
free(students);
return ;
}
阅读全文