1. 程式人生 > >有5名學生儲存在結構體陣列中,程式設計按學生的成績升序排序,按學生的姓名降序排序,按年齡從低到高排序, 成績, 年齡

有5名學生儲存在結構體陣列中,程式設計按學生的成績升序排序,按學生的姓名降序排序,按年齡從低到高排序, 成績, 年齡

typedefstruct stu {

    char name[20];//儲存學生姓名

    char sex;//儲存學生性別

    int age;//儲存學生年齡

    float score;

}Stu;

   Stu stu[5] = {

        {"mengmeng", 'N',38, 100},

        {"shuaishuai", 'G',28, 10},

        {"leilei", 'M',21, 23},

        {"mingming", 'G',20, 39},

        {"honghong", 'G',12, 101}

    };

//輸出結構體的結構體陣列成員

void printAllStudentInfo(Stu a[],int count);//a用來接收結構體陣列, count用來接收陣列元素的個數

void sortStudentScore(Stu a[],int count);//按成績排序

void sortStudentAge(Stu a[],int count);//按年齡排序

void sortStudentName(Stu a[],int count);//按姓名排序

void printAllStudentInfo(Stu a[],int count) {

    for (int i = 0; i < count; i++) {

printf

("name : %s, sex : %c, age : %d, score : %.2f\n", a[i].name, a[i].sex, a[i].age, a[i].score);

    }

}//列印所有學生的資訊

void sortStudentScore(Stu a[],int count) {

    Stu tempStudent = {0};

    for (int i = 0; i < 4; i++) {

        for (int j =0; j < 4 - i; j++) {

            if (a[j].score > a[j +1

].score) {

                tempStudent = a[j + 1];

                a[j + 1] = a[j];

                a[j] = tempStudent;

            }

        }

    }

}//按成績排序

void sortStudentAge(Stu a[],int count) {

    Stu tempStudent = {0};

    for (int i = 0; i < 4; i++) {

        for (int j =0; j < 4 - i; j++) {

            if (a[j].age > a[j +1].age) {

                tempStudent = a[j + 1];

                a[j + 1] = a[j];

                a[j] = tempStudent;

            }

        }

    }

}//按年齡排序

void sortStudentName(Stu a[],int count) {

    Stu tempStudent = {0};

    for (int i = 0; i < 4; i++) {

        for (int j =0; j < 4 - i; j++) {

            if (strcmp(tempStudent.name, a[i].name) <0) {

                tempStudent = a[j + 1];

                a[j + 1] = a[j];

                a[j] = tempStudent;

            }

        }

    }

}//按姓名排序

printf("原結構體學生列表為:\n");

printAllStudentInfo(stu,5);

printf("按學生的成績升序排序為:\n");

sortStudentScore(stu, 5);

printAllStudentInfo(stu,5);

printf("按學生的姓名降序排序排序為:\n");

sortStudentName(stu, 5);

printAllStudentInfo(stu,5);

printf("按學生的年齡從升序排序排序為:\n");

sortStudentAge(stu, 5);

printAllStudentInfo(stu,5);