关于#c语言#的问题,如何解决?

#include<stdio.h> 
int main(){
    struct Student{
        char name[20];
        float score;
    }stu[5]={{101011,"li ming",61},{101012,"zhang san",69},{101013,"wang wu",80},{101014,"li si",90},{101015,"wang cao",75}};
    struct Student temp;
    int i,j,k;
    for(i=0;i<4;i++){
        k = i;
        for(j = i+1;j<5;j++){
            if(stu[j].score>stu[k].score){
                k = j;
            }
        } 
        temp = stu[k];
        stu[k] = stu[i];
        stu[i] = temp;
    } 
    for(i = 0;i<5;i++){
        printf("%d\t%s\t%f\n",stu[i].num,stu[i].name,stu[i].score);
    }
    return 0;
} 

temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
这个是什么意思?不太理解

实现stu[k]和stu[i]的数据交换

交换stu数组的第k和第i个元素
这是直接排序,通过循环找到最大值下标k,然后与当前比较元素下标i进行数值交换,最终实现从小到大排序

数据交换
temp = stu[k]; //记录k中原始数据
stu[k] = stu[i]; //k中的值换成i中的值
stu[i] = temp; //i中的值换成k原始的数据