c语言用结构体对学生成绩进行排序(不懂啊)

建立学生结构体类型,包括:学号(学号11位)、姓名和总分。建立结构数组,从键盘录入10个同学的信息,然后对这10个同学按成绩从高到低的顺序排序,然后在屏幕上输出排序后的所有学生记录并写入文件中。假设本问题中,学生成绩一定为[0,100]之间的正整数。要求使用选择排序(或改进的选择排序)和冒泡排序(或改进的冒泡排序)两种方法来完成。

你题目的解答代码如下:

#include<stdio.h>
#include<stdlib.h>
#define n 10
typedef struct student{
    char num[12];
    char name[50];
    int score;
} stu;
void main()
{
    int i,j,k;
    stu a[n], buf;
    for(i=0;i<n;i++)
    {
        scanf("%s %s %d",&a[i].num,a[i].name,&a[i].score);
    }
    for (i=0; i<n-1; ++i)  //比较n-1轮
    {
        for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
        {
            if (a[j].score < a[j+1].score)
            {
                buf = a[j];
                a[j] = a[j+1];
                a[j+1] = buf;
            }
        }
    }
    FILE *fp = fopen("./result.txt", "w");
    for(i=0;i<n;i++)
    {
        printf("%s %s %d\n",a[i].num,a[i].name,a[i].score);
        fprintf(fp,"%s %s %d\n",a[i].num,a[i].name,a[i].score);
    }
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

请问你会选择排序么?