用c语言写了一个简单的学生成绩管理系统可以运行但是在选择主界面想要切换模块输入1-5都会显示直接退出该怎么办

用c语言写了一个简单的学生成绩管理系统
可以运行但是在选择主界面想要切换模块输入1-5都会显示直接退出
该怎么办
下面是码

#include <stdio.h>
#include <string.h>
#define N 5
struct student
{
    char num[10];
    char name[10];
    float score[5];
    float aver;
}stu[N], s[N];

void main()//主函数
{
    void menu();//六条函数声明和模块信息
    void input();
    void display();
    float average();
    float allacerage();
    void sort();
    int op;
    menu();
    scanf_s("%d", &op);
    while (op != op)
    {
        switch (op)
        {
        case 1:input(); return input;
        case 2:display(); break;
        case 3:average(); break;
        case 4:allacerage(); break;
        case 5:sort(); break;
        }
        menu();
        scanf_s("%d", &op);
    }

}

void menu()//主控菜单
{
    printf("\n               学生成绩管理系统              \n");
    printf("\n=============================================\n");
    printf("\n               1.学生信息录入                \n");
    printf("\n               2.学生信息显示                \n");
    printf("\n               3.个人平均成绩计算            \n");
    printf("\n               4.格科平均成绩计算            \n");
    printf("\n               5.名次排序                    \n");
    printf("\n               0.退出                        \n");
    printf("\n=============================================\n");
    printf("\n请选择(0~5):\n");
}

void input() //信息录入
{
    int i, j;
    FILE* fp;
    for (i = 0; i < N; i++)
    {
        printf("\n请输入NO.%d学生信息:\n", i + 1);
        printf("学号:");
        scanf_s("%s", stu[i].num,40);
        printf("姓名");
        scanf_s("%s", stu[i].name,40);
        for (j = 0; j < 5; j++)
        {
            printf("成绩%d:", j + 1);
            scanf_s("%f", &stu[i].score[j]);
        }
    }
    fp = fopen_s(&fp, "stud", "wb");
    for (i = 0; i < N; i++)
        fwrite(&stu[i], sizeof(struct student), 1, fp);
    fclose(fp);
}

void display()//信息显示
{
    int i, j;
    FILE* fp;
    fp = fopen_s(&fp, "stud", "rb");
    for (i = 0; i < N; i++)
        fread(&s[i], sizeof(struct student), 1, fp);
    printf("\n\n************************学生基本信息表******************\n\n");
    printf("学号\t姓名\t成绩\t成绩1\t成绩2\t成绩3\t成绩4\t成绩\t平均成绩\n");
    for (i = 0; i < N; i++)
    {
        printf("%s\t%s\t", s[i].num, s[i].name);
        for (j = 0; j < 5; j++)
            printf("%f\t", s[i].score[j]);
        printf("%.2lf\n", stu[i].aver);
        printf("\n");
    }
    fclose(fp);
}

float average()//个人成绩平均值
{
    int i, j;
    float sum;
    FILE* fp;
    fp = fopen_s("FILENAME", 3, "rb", 3);
    for (i = 0; i < N; i++)
        fwrite(&s[i], sizeof(struct student), 1, fp);
    for (i = 0; i < N; i++)
    {
        sum = 0;
        for (j = 0; j < 3; j++)
            sum += s[i].score[j];
        stu[i].aver = sum / 3;
    }
    printf("***********************学生平均成绩********************");
    printf("学号\t姓名\t成绩\t成绩1\t成绩2\t成绩3\t成绩4\t成绩\t平均成绩\n");
    for (i = 0; i < N; i++)
    {
        printf("%s\t%s\t", s[i].num, s[i].name);
        for (j = 0; j < 5; j++)
            printf("%d\t", s[i].score[j]);
        printf("%.21f\n", stu[i].aver);
    }
    for (i = 0; i < N; i++)
        fwrite(&s[i], sizeof(struct student), 1, fp);
    printf("\n\n");
    fclose(fp);
}

float allacerage()//各科平均成绩计算
{
    int i, j;
    float all[5], sum;
    FILE* fp;
    fp = fopen_s("stud", "rb", 3);
    for (i = 0; i < N; i++)
        fread(&s[i], sizeof(struct student), 1, fp);
    for (i = 0; i < N; i++)
    {
        sum = 0;
        for (j = 0; j < 3; j++)
            sum += s[i].score[j];
        all[i] = (float)sum / N;
    }
    printf("*************************各科平均成绩**********************");
    printf("学号\t姓名\t成绩\t成绩1\t成绩2\t成绩3\t成绩4\t成绩\t平均成绩\n");
    for (i = 0; i < N; i++)
    {
        printf("%s\t%s\t", s[i].num, s[i].name);
        for (j = 0; j < 5; j++)
            printf("%d\t", s[i].score);
        printf("%.2lf\n", stu[i].aver);
    }
    printf("    \t    \t");
    for (i = 0; i < 5; i++)
        printf("%.2lf\t", all[i]);
    printf("\n\n");
    fclose(fp);
}

void sort()//排列名次
{
    int i, j, k;
    float temp, t;
    char str[10] = "";
    for (i = 0; i < N - 1; i++)
        for (j = i + 1; j < N; j++)
            if (s[i].aver < s[j].aver)
            {
                temp = s[i].aver;
                s[i].aver = s[j].aver;
                s[j].aver = temp;
                strcpy_s(str, stu[i].num, 10);
                strcpy_s(stu[i].num, stu[j].num, 10);
                strcpy_s(stu[j].num, str, 10);
                strcpy_s(str, stu[i].name, 10);
                strcpy_s(stu[i].name, stu[j].name, 10);
                strcpy_s(stu[j].name, str, 10);
                for (k = 0; k < 5; k++)
                {
                    t = s[i].score[k];
                    s[i].score[k] = s[j].score[k];
                    s[j].score[k] = t;
                }
            }
    printf("***********************名词********************");
    printf("学号\t姓名\t成绩\t成绩1\t成绩2\t成绩3\t成绩4\t成绩\t平均成绩\n");
    for (i = 0; i < N; i++)
    {
        printf("%s\t%s\t", s[i].num, s[i].name);
        for (j = 0; j < 5; j++)
            printf("%d\t", s[i].score[j]);
        printf("%.2lf\n", stu[i].aver);
    }
    printf("\n\n");
}


img


您这块的逻辑是否有问题,如果只是想进行一个死循环,建议


while(true){
}