求解通讯录有关问题.

求解通讯录问题.....
C/C++ code

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct  stud_type
{
    char name[20];
    int num;
}person[3];
void sort1(struct stud_type person[],int n);
void sort2(struct stud_type person[],int n);
void main()
{

    int i,sel;
    printf("请输入3个学生的姓名和学号\n");
    for(i=0;i<3;i++)
        scanf("%s%d",person[i].name,&person[i].num);

        printf("1..........按姓名排序\n");
        printf("2..........按学号排序\n");
        printf("0..........退出\n");
        scanf("%d",&sel);
        do
        {
            
            switch(sel)
            {
            case 1:sort1(person,3);break;
            case 2:sort2(person,3);break;
            case 0:(exit);
            }
            
        }while(sel!=0);


    


}
void sort1(struct  stud_type person[],int n)
{
    int i,j;
    char tmp[15];
     for (i=0;i<3;i++)
     {
          for (j=0;j<3-i-1;j++)
          {
             if (strcmp(person[j].name,person[j+1].name)>0)
                 {
                     strcpy(tmp,person[j].name);
                        strcpy(person[j].name,person[j+1].name);
                     strcpy(person[j+1].name,tmp);
                 }
          }
     }
     for(i=0;i<n;i++)
        printf("%s%18f\n",person[i].name,person[i].num);



}
void sort2(struct stud_type person[],int n)
{
    int i,j,k;
    struct stud_type t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
                if(person[k].num<person[j].num)
                    k=j;
                    if(k!=i)
                    {
                        t=person[i];
                        person[i]=person[k];
                        person[k]=t;

                    
                    
                    }
    }
    for(i=0;i<3;i++)
    printf("%s%18f\n",person[i].name,person[i].num);


}


菜单式做出来了,但是一到调用函数的时候,程序就意外终止了,求高手指点指点,谢谢了

------解决方案--------------------
崩溃时调试,查看调用堆栈
或设断点
------解决方案--------------------
do
{
scanf("%d",&sel);

switch(sel)
{
case 1:sort1(person,3);break;
case 2:sort2(person,3);break;
case 0:(exit);
}

}while(sel!=0);


------解决方案--------------------
下断点调一下
定位问题才好分析啊