C语言编程,要求input,sort,Max函数

C语言编程,有五个学生。每个学生的数据包括学号,姓名和成绩,要求分别用三个函数实现以下功能:1,用input函数输入所有数据2.用sort函数将学生数据按照成绩由高到低排序后输出3.用max函数找到成绩最高学生并输出其信息。写到这里就不会了

img

仅供参考!谢谢!

img

#include <stdio.h>
#define N 5
struct student
{
    char num[18];
    char name[18];
    float score;
};

void sort(struct student *p, int n)
{
    int i, j;
    struct student tmp;
    //后面未排序的数取一个数插入到前段已排好序的适当位置
    //起始把第一个数当做是已经排好的
    for (i = 1; i < n; i++)
    {
        tmp = p[i];
        j = i - 1;
        while (tmp.score > p[j].score)
        {
            p[j + 1] = p[j];

            j--;
            if (j == -1)
                break;
        }
        p[j + 1] = tmp;
    }

    //输出
    printf("\n%6s%10s%10s\n", "学号", "姓名", "成绩");
    for (i = 0; i < n; i++)
    {
        printf("%s%10s%8.1f\n", p[i].num, p[i].name, p[i].score);
    }
}

void max(struct student *p, int n)
{
    float max = -1.0;
    int j;
    for (int i = 0; i < n; i++)
    {
        if (p[i].score > max)
        {
            max = p[i].score;
            j = i;
        }
    }
    printf("\n最高分学生信息:\n学号:%s 姓名:%s 成绩:%.1f\n", p[j].num, p[j].name, p[j].score);
}

void input(struct student *stu, int n)
{
    printf("输入%d个学生信息分别是学号姓名成绩用空格隔开:\n", N);
    for (int i = 0; i < n; i++)
    {
        scanf("%s%s%f", stu[i].num, stu[i].name, &stu[i].score);
    }
}

int main(int argc, char *argv[])
{
    struct student stu[N];

    //录入数据

    input(stu, N);

    //排序
    sort(stu, N);

    //输出最高成绩学生信息
    max(stu, N);

    return 0;
}