为什么一运行程序就出现这个界面?之前几次都成功运行了,刚刚突然就出现这种情况

 

发代码出来看看,看程序结果是正常退出的。

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N  3                                                         //宏定义学生个数
#define M  3                                                         //宏定义课程个数
struct student                                                       //定义结构体
{
    char num[12];
    char name[20];
    int score[3];
    float ave;
}stu[N];
int student_number = 0;
int menu()                                                               //主菜单
{
    int a;
    do {
        system("cls");                                        //运行前清屏,把选择清掉
        printf("**********************************************************\n");
        printf("*              欢迎使用高校学生成绩管理系统V1.0          *\n");
        printf("*                        请选择功能                      *\n");
        printf("**********************************************************\n");
        printf("*                   1.录入学生成绩计算学生总平均分       *\n");
        printf("*                   2.查找学生成绩                       *\n");
        printf("*                   3.修改学生成绩                       *\n");
        printf("*                   4.计算学生每门课平均分最高分最低分   *\n");
        printf("*                   5.划分学生成绩等级                   *\n");
        printf("*                   6.根据学生总平均分从高到低排序       *\n");
        printf("*                   0.退出系统                           *\n");
        printf("**********************************************************\n");
        printf("请输入所选功能前的序号:");
        scanf_s("%d", &a);
        if (a < 0 || a>6)
        {
            printf("错误选择");
            system("pause");
        }
    } while (a < 0 || a>10);
    return a;
}
void input()                                                 //定义录入学生成绩函数
{
    int i;
    float sum[N];
    printf("请输入学生学号、姓名及高数、C语言、数据结构的成绩\n");
    for (i = 0; i < N; i++)
    {
        scanf_s("%s %s %d %d %d", stu[i].num, 12, stu[i].name, 20, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
        sum[i] = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
        stu[i].ave = sum[i] / 3.0;                                        //计算平均值
    }
    printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
    for (i = 0; i < N; i++)
    {
        printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
    }
}
void search()                                                //定义查找学生的函数
{
    char num[12];
    int i;
    printf("请输入要查找的学生学号:\n");
    scanf_s("%s", num, 12);
    for (i = 0; i < 3; i++)
    {
        if (memcmp(num, stu[i].num, strlen(num)) == 0)//将输入的数字与结构体中学号相匹配
        {
            printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
            printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
            break;
        }
        else
            printf("未找到\n");
    }
}
void change()                                               //定义修改学生信息的函数
{
    int i = 0;
    char testnum[12];
    printf("请输入要修改学生的学号:");
    scanf_s("%s", testnum, 12);
    while (strcmp(testnum, stu[i].num) != 0 && i < N) //将输入的数字与结构体中学号相匹配
    {
        i++;
    }
    if (i < N)
    {
        printf("开始修改\n");
        printf("学号\t:");
        scanf_s("%s", stu[i].num, 12);
        printf("姓名\t:");
        scanf_s("%s", stu[i].name, 20);
        printf("高数\t:");
        scanf_s("%d", &stu[i].score[0]);
        printf("c语言\t:");
        scanf_s("%d", &stu[i].score[1]);
        printf("数据结构\t:");
        scanf_s("%d", &stu[i].score[2]);
        stu[i].ave = (float)(stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
        printf("\n学号\t姓名\t高数\tc语言\t数据结构\t平均分\n");
        printf("%s\t%s\t%d\t%d\t%d\t%f\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
        printf("修改成功");
    }
}
void zg()
{
    int i = 0, j, min = stu[0].score[i], b[3], s[3];
    float sum[M];
    float ave1[3];
    for (i = 0; i < N; i++)
    {
        sum[i] = stu[0].score[i] + stu[1].score[i] + stu[2].score[i];
        ave1[i] = sum[i] / 3.0;                                         //计算各科平均分
    }
    printf("各科的平均分分别为:%f %f %f\n", ave1[0], ave1[1], ave1[2]);
    printf("\n");
    for (i = 0; i < N; i++)
    {
        b[i] = stu[0].score[i];
        for (j = 1; j < 3; j++)
        {
            if (stu[j].score[i] > b[i])
            {
                b[i] = stu[j].score[i];
            }
        }                                                              //计算各科最高分
    }printf("各科最高分分别为:%d %d %d \n", b[0], b[1], b[2]);                                 
    printf("\n");
    for (i = 0; i < N; i++)
    {
        min = stu[0].score[i];
        for (j = 0; j < 3; j++)
        {
            if (min > stu[j].score[i])
            {
                min = stu[j].score[i];
                s[i] = min;
            }
        }                                                              //计算各科最低分
    }printf("各科最低分分别为:%d %d %d \n", s[0], s[1], s[2]);
}   
void dj()
{
    int i, j, t;
    float sum[M];
    float ave1[3];
    for (i = 0; i < N; i++)
    {
        sum[i] = stu[0].score[i] + stu[1].score[i] + stu[2].score[i];
        ave1[i] = sum[i] / 3;
    }
    for (j = 0; j < 3; j++)
    {
        for (i = 0; i < 2 - j; i++)
            if (stu[i].ave > stu[i + 1].ave)
            {
                t = stu[i].ave; stu[i].ave = stu[i + 1].ave; stu[i + 1].ave = t;                    //将平均分从高到低排序
            }printf("根据平均分从高到低排序后: %.2f\n", stu[i].ave);
    }
    printf("\n");
}
void di()
{
    int i = 0;
    char testnum[12];
    printf("请输入要划分等级的学生的学号:");
    scanf_s("%s", testnum, 12);
    while (strcmp(testnum, stu[i].num) != 0 && i < N)                                                //将输入的数字与结构体中学号相匹配
    {
        i++;
    }
    if (i < N)
    {
        if (stu[i].ave >= 90)
            printf("优\n");
        else if (stu[i].ave >= 80 && stu[i].ave < 90)
            printf("良\n");
        else if (stu[i].ave >= 60 && stu[i].ave < 80)
            printf("中\n");
        else
            printf("差\n");
    }
}
void AddFromText()                                              //定义读取文件的函数
{
    FILE* fp;
    int i = 0;
    if ((fp = fopen("D:\\student.txt", "r")) == NULL)
    {
        printf("打开文件失败,无读取数据");
    }
    else
    {
        fscanf(fp, "%s", &student_number);
        while (i < student_number)
        {
            fscanf(fp, "%s%s%d%d%d%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
            i++;
        }
        fclose(fp);
        exit(0);
    }
}
void Write()                                                 //定义录入文件的函数
{
    int i = 0;
    FILE* fp;
    if ((fp = fopen("D:\\student.txt", "w")) == NULL)
    {
        printf("保存失败");
    }
    else
    {
        fprintf(fp, "%d", student_number);
        while (i < student_number)
        {
            fprintf(fp, "%s%d%d%d%d%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].ave);
            i++;
        }
        fclose(fp);
        printf("保存成功");
        exit(0);
    }
}
int main()                                                      //定义主函数
{
    AddFromText();
    for (;;)
    {
        switch (menu())
        {
        case 1:input(); system("pause"); continue;
        case 2:search(); system("pause"); continue;
        case 3:change(); system("pause"); continue;
        case 4:zg(); system("pause"); continue;
        case 5:di(); system("pause"); continue;
        case 6:dj(); system("pause"); continue;
        case 0:Write();
        }
    }
}