C语言程序设计,结构体作为函数的返回值

已知学生的记录由学号和成绩组成。N名学生的数据已在主函数中放入结构体中输出S中。请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前

结构体排序比较结构体元素交换结构体

img

#include<stdio.h>
struct stu
{
    int num;
    int score;
};
void fun(struct stu t[],int n)
{
    int j,k;
    for(k=0; k<n-1; k++)
    {
        for(j=0; j<n-k-1; j++)
        {
            if(t[j].score<t[j+1].score)
            {
                struct stu tem=t[j];
                t[j]=t[j+1];
                t[j+1]=tem;
            }
        }
    }
}
int main()
{
    struct stu t[5]= {1,56,2,66,3,45,4,68,5,60};
    int j;
    for(j=0; j<5; j++)
    {
        printf("学号:%d  分数:%d  \n",t[j].num,t[j].score);
    }
    fun(t,5);
    printf("排序后\n");
    for(j=0; j<5; j++)
    {
        printf("学号:%d  分数:%d  \n",t[j].num,t[j].score);
    }
    return 0;
}

#include <stdio.h>

#define N 16

typedef struct
{ 
    char num[10];
    int s;

}STREC;

int fun (STREC a[ ])
{
    int i,j;
    STREC tem;
    for (i = 0; i < N - 1; i ++)
    {
        for (j = 0; j < N - i -1; j ++)
        {
            if(a[j].s < a[j+1].s)
            {
                tem = a[j];
                a[j] = a[j+1];
                a[j+1] = tem;
            }
        }
    }

    return 0;
}

int main ()
{
    STREC s[N]={{"GA005",88},{"GA003",64},

    {"CA002",77},{"GA004",89},{"GA001",54},

    {"GA007",72},{"GA008",72},{"GA006",65},

    {"GA015",83},{"GA013",95},{"GA012",55},

    {"GA014",68},{"GA01l",78},{"GA017",53},

    {"GA018",92},{"GA016",82}};

    int i;

    FILE *out;

    fun(s);

    printf("The data after sorted :\n");

    for(i=0;i<N;i++)

    {
        if((i)%4==0)
        /*每行输出4个学生记录*/
        printf("\n");
        printf("%s %4d ",s[i].num,s[i].s);
    }
    printf("\n");

    out=fopen("out21.dat","w");

    for(i=0;i<N;i++)
    {
        if((i)%4==0&&i)
            fprintf(out,"\n");
            fprintf(out,"%4d",s[i].s);
    }

    fprintf(out,"\n");
    fclose(out);

    return 0;
}

运行结果:

img