写好了学生成绩单表格程序,但还有些有关问题,求指教!

写好了学生成绩单表格程序,但还有些问题,求指教!!!!!!!
这是我这两天写的代码,运行完输入后DOS窗口就没反应了,请大家帮忙看看

C/C++ code
#include<stdio.h>
#define num 3

struct list                          
    {char name[8];            //学生名字
     int number;              //学号
     float subject[3];        //科目成绩
     float average;           //平均分
    }student[num];            //num个学生

void getlist(struct list student[]);
void max(struct list student[num], int *Math, int *Chi, int *Eng);
void maxA(struct list student[num], int *Ave);
void print(struct list student[num],int, int, int, int);

void main()
{

    
    int maxMath=0, maxChi=0, maxEng=0, maxAve=0;
    int *m, *c, *e, *a;     
    m=&maxMath, c=&maxChi, e=&maxEng, a=&maxAve;

    getlist(student);              //实现数据的输入
    max(student, m, c, e);         //使 m,c,e分别指向的对象分别存入各科目成绩最好的同学的下标
    maxA(student, a);              //使a指向的对象存入平均分最好的同学的下标
    print(student, maxMath, maxChi, maxEng, maxAve); //实现输出
}

void getlist(struct list student[num])
{
    int i;
    for(i=0;i<num;i++)
    {
        int j;
        float sum;
        
        printf("input %d student list!\n",i+1);
        printf(">>>>number :");scanf("%d",&student[i].number);
        while(getchar()!='\n') continue;       //清空输入行
        printf(">>>>>>name :");gets(student[i].name);
        printf(">>>>>>Math :");scanf("%f",&student[i].subject[0]);
        printf(">>>Chinese :");scanf("%f",&student[i].subject[1]);
        printf(">>>English :");scanf("%f",&student[i].subject[2]);
        
        for(j=0;j<3;j++)      //计算平均分     
        {  sum += student[i].subject[j];  }
        student[i].average = sum/3.0; 
    }
}


void max(struct list student[num], int *Math, int *Chi, int *Eng)
{
    int i, j, k=0;
    int  Max;     //标记
    for(j=0;j<3;i++,k++)   先将科目分别比较
    {
        Max=0;
        for(i=0;i<9;i++)   将同一科目的学生比较
        {

            if(student[i].subject[j]<student[i+1].subject[j])
            {
                  Max=i+1;      //将最高分学生的下标赋给Max
            }

        }
        if(k=0) *Math=Max;
            else if(k=1) *Chi=Max;
                else *Eng=Max;
    }
}

void maxA(struct list student[num],int *Ave)
{
    int i;
    *Ave=0;
    for(i=0;i<9;i++)
    {
        if(student[i].average < student[i+1].average)
        *Ave=i+1;                       //将平均分最高的student下标赋给*Ave指向的对象
    }

}

//输出函数还没整理好
void print(struct list student[num],int nice_Math,int nice_Chiese,int nice_English,int so_well) 
{
    int i, j;
    printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
    printf("           NO    name      Math       Chinese      English\n");
    printf("nice math: %03d %8s %.2f",student[nice_Math].number, student[nice_Math].name,\
           student[nice_Math].subject[0]);
    printf("nice math: %03d %8s %.2f",student[nice_Chiese].number, student[nice_Chiese].name,\
           student[nice_Math].subject[0]);
    printf("nice math: %03d %8s %.2f",student[nice_English].number, student[nice_English].name,\
           student[nice_Math].subject[0]);
    printf("nice math: %03d %8s %.2f ",  student[so_well].number, student[so_well].name,  student[so_well].average);


    for(i=0;i<num;i++)
    {
        printf("%03d",student[i].number);
        printf("%8s",student[i].name);
        for(j=0;j<3;j++)
        {
            printf("      %.2f",student[i].subject[j]);
        }

    }
    printf("\n>>>>>>>>>>>>>>>>>>>>>>END!>>>>>>>>>>>>>>>>>>>>>>>>\n");
}