// 练习结构体数组排序　　 从键盘输入5个学生的信息（姓名、学号、成绩）,
//     存入一个结构体数组中，计算平均分，并按成绩高低排序并输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct stu_s
{
    char name[32];
    int sid;
    float score;
} STU;

void arrAndOutput(STU *stus) // 排序并输出
{
    float avg = 0.0f;
    for (int i = 0; i < 5; i++)
    {
        avg += stus[i].score / 5;
    }

    printf("平均分为: %.2f\n", avg);

    // 冒泡排序
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5 - i - 1; j++)
        {
            if (stus[j].score < stus[j + 1].score)
            {
                STU tmp = stus[j];
                stus[j] = stus[j + 1];
                stus[j + 1] = tmp;
            }
        }
    }

    // 输出
    for (int i = 0; i < 5; i++)
    {
        printf("姓名: %s, 学号: %d, 成绩: %.2f\n", stus[i].name, stus[i].sid, stus[i].score);
    }
}

int main()
{
    STU s[5];
    for (int i = 0; i < 5; i++)
    {
        printf("请输入第 %d 个学生的,格式为:(姓名 学号 成绩)", i + 1);
        scanf("%s %d %f", s[i].name, &s[i].sid, &s[i].score);
    }
    arrAndOutput(s);

    return 0;
}