c语言结构体中排序算法 可以请教一下各位大神吗 谢谢

2025-06-28 08:12:42
推荐回答(2个)
回答1:

#include 

#define N 3
struct Student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};

void input(struct Student stu[]);
struct Student paixu(struct Student stu[]);
void print(struct Student stu[]);

int main(void)
{
    struct Student stu[N], *p=stu;
    input(p);
    paixu(p);
    print(p);

    return 0;
}

void input(struct Student stu[])
{
    int i;
    printf("%s\n", "请输入个学生的信息:学号、姓名、三门课成绩:\n");
    for (i=0;i    {
        printf("请输入第 %d 个学生的信息:\n", i + 1);
        printf("%s\n", "请输入学号:");
        scanf("%d", &stu[i].num);
        printf("%s\n", "请输入姓名:");
        scanf("%s", stu[i].name);
        printf("%s\n", "请输入数学成绩:");
        scanf("%f", &stu[i].score[0]);
        printf("%s\n", "请输入语文成绩:");
        scanf("%f", &stu[i].score[1]);
        printf("%s\n", "请输入外语成绩:");
        scanf("%f", &stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    }
}

struct Student paixu(struct Student stu[])
{
    int i, j, k;
    struct Student temp;
    for(i=1; i    {
        for(j=0; j        {
            if(stu[i].aver > stu[j].aver)
            {
                temp = stu[i];
                for(k=i; k>j; k--)
                    stu[k] = stu[k - 1];
                stu[j] = temp;
            }
        }
    }
}

void print(struct Student stu[])
{
    int i;
    printf("%s\n", "成绩按降序排序为:");
    for(i=0; i        printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f, %5.1f, %5.1f\n平均成绩:%6.2f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].aver);
}

回答2:

代码不全,没法帮你看