能不能简化一下
时间: 2024-02-21 18:58:28 浏览: 18
当然可以,这里提供一种比较简单的写法:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 5
struct student {
int id;
char name[20];
char gender[10];
char birthdate[20];
} students[MAX_STUDENTS] = {
{1001, "Tom", "Male", "1990-01-01"},
{1003, "Jerry", "Male", "1991-02-02"},
{1002, "Mary", "Female", "1992-03-03"},
{1004, "Lucy", "Female", "1993-04-04"},
{1005, "Bob", "Male", "1994-05-05"}
};
int main()
{
int i, j;
struct student temp;
for (i = 0; i < MAX_STUDENTS - 1; i++) {
for (j = i + 1; j < MAX_STUDENTS; j++) {
if (students[i].id > students[j].id) {
temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("ID\tName\tGender\tBirthdate\n");
for (i = 0; i < MAX_STUDENTS; i++) {
printf("%d\t%s\t%s\t%s\n", students[i].id, students[i].name, students[i].gender, students[i].birthdate);
}
return 0;
}
```
这个程序跟之前的程序一样,也是定义了一个结构体`student`,表示学生信息,包括学号、姓名、性别、出生年月日。不过这里将学生数组的定义和初始化合并在了一起,并且没有使用`qsort`函数进行排序,而是使用了类似于冒泡排序的方式,进行了简单的排序。最后按照要求输出排序后的学生信息。