Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

陈思婕+2302580064 #51

Open
82kui opened this issue Mar 11, 2024 · 0 comments
Open

陈思婕+2302580064 #51

82kui opened this issue Mar 11, 2024 · 0 comments

Comments

@82kui
Copy link

82kui commented Mar 11, 2024

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int id;
    float score;
} Student;    //定义一个Student结构体,包含学号(id)和考试成绩(score)两个成员

void input_students(Student* students, int n) {
    for (int i = 0; i < n; i++) {
        printf("请输入第%d个学生的学号: ", i + 1);
        scanf("%d", &students[i].id);
        printf("请输入%d的考试成绩: ", students[i].id);
        scanf("%f", &students[i].score);
    }
}

void sort_students(Student* students, int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (students[j].score < students[j + 1].score) {
                Student temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }
}

float calculate_avg_score(Student* students, int n) {
    float total_score = 0.0;
    for (int i = 0; i < n; i++) {
        total_score += students[i].score;
    }
    return total_score / n;
}

int count_failed_students(Student* students, int n) {
    int failed_count = 0;
    for (int i = 0; i < n; i++) {
        if (students[i].score < 60.0) {
            failed_count++;
        }
    }
    return failed_count;
}

//定义四个函数:input_students()用于输入学生信息, sort_students()用于对学生成绩排序, calculate_avg_score()用于计算平均成绩, count_failed_students()用于统计不及格人数。

int main() {
    int n;
    printf("请输入学生人数: "); //在main()函数中,首先输入学生人数n。
    scanf("%d", &n);

    Student* students = (Student*)malloc(n * sizeof(Student));  //动态分配一个Student类型的数组students来存储学生信息

    input_students(students, n);//调用input_students()函数输入每个学生的学号和考试成绩。
    sort_students(students, n);//调用sort_students()函数对学生成绩进行排序(使用冒泡排序算法)。

    printf("\n学号\t成绩\n");
    for (int i = 0; i < n; i++) {
        printf("%d\t%.2f\n", students[i].id, students[i].score);//输出学生的学号和成绩,按从高到低的顺序。
    }

    float avg_score = calculate_avg_score(students, n);//调用calculate_avg_score()函数计算平均成绩,调用count_failed_students()函数统计不及格人数。
    int failed_count = count_failed_students(students, n);

    printf("\n平均成绩: %.2f\n", avg_score);
    printf("不及格人数: %d\n", failed_count);//输出平均成绩和不及格人数

    free(students);//释放动态分配的内存。
    return 0;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant