7-4 学生成绩排序

#include 
#include 
#include 

#define MAX_STUDENTS 100

// 学生结构体
typedef struct {
    char id[10];
    char name[20];
    int scores[3];
    double average;
} Student;

// 交换两个学生结构体的函数
void swap(Student *a, Student *b) {
    Student temp = *a;
    *a = *b;
    *b = temp;
}

// 计算平均成绩的函数
void calculateAverage(Student *students, int n) {
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = 0; j < 3; j++) {
            sum += students[i].scores[j];
        }
        students[i].average = (double)sum / 3;
    }
}

// 冒泡排序函数
void bubbleSort(Student *students, int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (students[j].average < students[j + 1].average) {
                swap(&students[j], &students[j + 1]);
            }
        }
    }
}

int main() {
    int n;
    Student students[MAX_STUDENTS];

    // 输入学生数量
    scanf("%d", &n);

    // 输入学生信息
    for (int i = 0; i < n; i++) {
        scanf("%s %s %d %d %d", students[i].id, students[i].name,
              &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
    }

    // 计算平均成绩
    calculateAverage(students, n);

    // 排序
    bubbleSort(students, n);

    // 输出排序后的学生信息
    for (int i = 0; i < n; i++) {
        printf("%s,%s,%.2lf\n", students[i].id, students[i].name, students[i].average);
    }

    return 0;
}

7-4 学生成绩排序

分数 20

全屏浏览

切换布局

作者 张泳

单位 浙大城市学院

假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。

输入格式:

输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。

输出格式:

输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。

输入样例:

3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84

输出样例:

102,Wang,89.67
101,Zhang,83.33
103,Li,83.00

你可能感兴趣的:(数据结构,算法)