C语言中的结构体数组

来源:互联网 发布:php模拟http 编辑:程序博客网 时间:2024/06/07 14:56
struct Birthday{    int year;    int month;    int day;};//声明结构体类型//typedef:定义新类型,为类型取别名//typedef 原有类型,新类型typedef struct Student{    char *name;    int age;    int code;    double score[3];    //嵌套    struct Birthday birthday;} Student;void printStudent(struct Student student);void printStudents(struct Student *student,int length );void soreStudents(Student *student,int length);int main(int argc,const char * argv[]){    //定义结构体数组    struct Student students[5] ={        {"student1",21,1,{80,99,90},{1993, 10, 3}},        {"student2",20,2,{80,99,90},{1993, 10, 3}},        {"student3",23,3,{80,99,90},{1993, 10, 3}},        {"student4",21,4,{80,99,90},{1993, 10, 3}},        {"student5",26,5,{80,99,90},{1993, 10, 3}}};    printStudents(students,5);    printf("-------------------------------");    soreStudents(students, 5);    printStudents(students,5);    return 0;}//打印出单个学生的信息void printStudent(struct Student student){    printf("<Student : %p> name =%s age =%d code = %d score = {%.2f,%.2f,%.2f} birthday = %d.%d.%d\n",           &student,           student.name,           student.age,           student.code,           student.score[0],           student.score[1],           student.score[2],           student.birthday.year,           student.birthday.month,           student.birthday.day);    //符号写错毁一生啊,里面逗号打成分号了啊。。。}//打印出所有学生的信息void printStudents(struct Student *student,int length ){    if (student == NULL && length == 0) {        return;    }    for (int i = 0; i < length; i++) {        printStudent(student[i]);    }}//数组的排序(根据学生的年龄)void soreStudents(Student *student,int length){    if (student == NULL || length == 0) {        return;    }    for (int i =0; i < length; i++) {        for (int j = i; j<length; j++) {            if (student[i].age>student[j].age) {                Student temp = student[i];                student[i] = student[j];                student[j] = temp;            }        }    }}

运行结果:

<Student : 0x7fff5fbff6b0> name =student1 age =21 code = 1 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student2 age =20 code = 2 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student3 age =23 code = 3 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student4 age =21 code = 4 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student5 age =26 code = 5 score = {80.00,99.00,90.00} birthday = 1993.10.3

-------------------------------<Student : 0x7fff5fbff6b0> name =student2 age =20 code = 2 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student1 age =21 code = 1 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student4 age =21 code = 4 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student3 age =23 code = 3 score = {80.00,99.00,90.00} birthday = 1993.10.3

<Student : 0x7fff5fbff6b0> name =student5 age =26 code = 5 score = {80.00,99.00,90.00} birthday = 1993.10.3

Program ended with exit code: 0


0 0