C语言:感觉自己写的有很大的问题

1)使用结构体创建学生的信息结构,每个学生包括学号,姓名,C语言成绩。
2)输出如下菜单,实现下面所示所有功能:


2022年计算机学院学生C语言成绩


请输入1-8选择下面的操作:
1.学生信息录入
2.学生信息输出
3.根据学号查询成绩
4.C语言成绩由高到底排序(输出学生姓名)
5.成绩统计(C语言成绩的最高分,最低分,平均分)
6.查看C语言成绩最高分和最低分的学生的姓名
7.查询高于平均分的学生的学号和成绩
8.退出系统

详细代码实现如下,望采纳

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

#define MAX_STUDENTS 100

typedef struct Student {
    int id;
    char name[100];
    int c_grade;
} Student;

Student students[MAX_STUDENTS];
int num_students = 0;

void input_student_info()
{
    if (num_students == MAX_STUDENTS) {
        printf("Error: Cannot add more students.\n");
        return;
    }

    printf("Enter student id: ");
    scanf("%d", &students[num_students].id);
    printf("Enter student name: ");
    scanf("%s", students[num_students].name);
    printf("Enter student C grade: ");
    scanf("%d", &students[num_students].c_grade);
    num_students++;
}

void output_student_info()
{
    for (int i = 0; i < num_students; i++) {
        printf("Student %d:\n", i + 1);
        printf("Id: %d\n", students[i].id);
        printf("Name: %s\n", students[i].name);
        printf("C grade: %d\n", students[i].c_grade);
    }
}

void search_student_by_id()
{
    int id;
    printf("Enter student id to search for: ");
    scanf("%d", &id);

    for (int i = 0; i < num_students; i++) {
        if (students[i].id == id) {
            printf("Student found!\n");
            printf("Id: %d\n", students[i].id);
            printf("Name: %s\n", students[i].name);
            printf("C grade: %d\n", students[i].c_grade);
            return;
        }
    }

    printf("Student with id %d not found.\n", id);
}

int compare_students(const void* a, const void* b)
{
    Student* s1 = (Student*)a;
    Student* s2 = (Student*)b;
    return s2->c_grade - s1->c_grade;
}

void sort_students_by_c_grade()
{
    qsort(students, num_students, sizeof(Student), compare_students);
    printf("Sorted students by C grade (highest to lowest):\n");
    for (int i = 0; i < num_students; i++) {
        printf("%s\n", students[i].name);
    }
}

void compute_grade_stats()
{
    int min_grade = 100;
    int max_grade = 0;
    int total_grade = 0;
    for (int i = 0; i < num_students; i++) {
        if (students[i].c_grade < min_grade) {
            min_grade = students[i].c_grade;
        }
        if (students[i].c_grade > max_grade) {
            max_grade = students[i].c_grade;
        }
        total_grade += students[i].c_grade;
    }
    printf("Grade statistics:\n");
    printf("Highest grade: %d\n", max_grade);
    printf("Lowest grade: %d\n", min_grade);
    printf("Average grade: %f\n", (float)total_grade / num_students);
}

void find_max_min_grade_students()
{
    int min_grade = 100;
    int max_grade = 0;
    for (int i = 0; i < num_students; i++) {
        if (students[i].c_grade < min_grade) {
            min_grade = students[i].c_grade;
        }
        if (students[i].c_grade > max_grade) {
            max_grade = students[i].c_grade;
        }
    }

    printf("Students with highest C grade:\n");
    for (int i = 0; i < num_students; i++) {
        if (students[i].c_grade == max_grade) {
            printf("%s\n", students[i].name);
        }
    }

    printf("Students with lowest C grade:\n");
    for (int i = 0; i < num_students; i++) {
        if (students[i].c_grade == min_grade) {
            printf("%s\n", students[i].name);
        }
    }
}

void find_students_above_average()
{
    int total_grade = 0;
    for (int i = 0; i < num_students; i++) {
        total_grade += students[i].c_grade;
    }
    float average_grade = (float)total_grade / num_students;

    printf("Students with grades above average:\n");
    for (int i = 0; i < num_students; i++) {
        if (students[i].c_grade > average_grade) {
            printf("Id: %d, C grade: %d\n", students[i].id, students[i].c_grade);
        }
    }
}

int main(void)
{
    while (1) {
        printf("Please enter 1-8 to select one of the following options:\n");
        printf("1. Input student information\n");
        printf("2. Output student information\n");
        printf("3. Search for student by id\n");
        printf("4. Sort students by C grade (highest to lowest)\n");
        printf("5. Compute grade statistics (highest, lowest, average)\n");
        printf("6. Find students with highest and lowest C grade\n");
        printf("7. Find students with grades above average\n");
        printf("8. Quit\n");

        int selection;
        scanf("%d", &selection);

        switch (selection) {
            case 1:
                input_student_info();
                break;
            case 2:
                output_student_info();
                break;
            case 3:
                search_student_by_id();
                break;
            case 4:
                sort_students_by_c_grade();
                break;
            case 5:
                compute_grade_stats();
                break;
            case 6:
                find_max_min_grade_students();
                break;
            case 7:
                find_students_above_average();
                break;
            case 8:
                exit(0);
            default:
                printf("Invalid option. Please try again.\n");
                break;
        }
    }
}

看来现在的chatgpt很火呀
一些问题基本上都不用人工写了