此代码编译正确,为什么最后运行到一半闪退,求大神指导
#include<stdio.h>#include<string.h>
#include<process.h>
#include<conio.h>
#define N 30
#define M 3
void shuru();
void chaxun();
void xiugai();
// void paixu();
void shanchu();
void menu();
void main();
typedef struct student
{ char number[10];
char name[20];
float score[20];
char math[20];
char cyuyan[30];
char jisuanji[20];
}STU;
STU stu[N];
int n;
void main()
{
short int flag=0;
menu();
// do
// {
flag=1;
switch(getch())
{
case'1':shuru();break;
case'2':chaxun();break;
case'3':xiugai();break;
//case'4':paixu();break;
case'5':shanchu();break;
case'6':exit(0);
default:printf("输入有误\n");
}
printf("按任意继续\n");
getch();
menu();
}
//while(flag==1);
//}
void menu()
{
system("cls");
printf("\n");
printf("---------学生成绩信息系统----------\n");
printf("-------- 二班------------------\n");
printf("----- 知行 董道---------------\n");
printf("----- 123456789 123456799----------\n");
printf("----- 二零一七年十二月三十日-------\n");
printf(" 1.输入学生成绩 2.查询学生成绩 \n");
printf(" 3.修改学生成绩 4.排序学生成绩 \n");
printf(" 5.删除学生成绩 6.退出程序 \n");
printf("-----------------------------------\n");
printf("---------请输入您的选择------------\n");
}
void shuru()
{
int i,j,n;
system("cls");
printf("请输入学生人数:\n");
scanf("%d",&n);
printf("提示:输入的学号由三位字母和五位数字组成,共八位\n");
//scanf("%d",&n);
//for(i=0;i<n;i++)
//{
// printf("请输入学生的学号 姓名:\n",i+1);
// scanf("%s%s",stu[i].number,stu[i].name);
// printf("请输入学生成绩:\n");
// printf("math\tcyuyan\tjisuanji\n");
printf("number:");
scanf("%d",&stu[i].number);
printf("name:");
scanf("%s",&stu[i].name);
printf("math:");
scanf("%d",&stu[i].math);
printf("cyuyan:");
scanf("%d",&stu[i].cyuyan);
printf("jisuanji:");
scanf("%d",&stu[i].jisuanji);
// for(j=0;j<M;j++)
// scanf("%f",&stu[i].score[j]);
// }
printf("成功输入\n");
}
void chaxun()
{
char a[10];
int i,j;
system("cls");
printf("请输入需要查询的学生的学号:\n");
printf("%s",a);
for(i=0;i<n;i++)
{
// if(strcmp(a,stu[i].number)==0)
// {
/* printf("学号\t姓名\t数学\tC语言\t计算机\n");
printf("%d\t%s\t%s\t",i+i,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%.2f\t",stu[i].score);
printf("\n");
break;*/
scanf("%d",&n); //输入n个学生信息
printf("input the info of NO.%d:\n");
printf("number:");
scanf("%d",&stu[i].number);
printf("name:");
scanf("%s",&stu[i].name);
printf("math:");
scanf("%d",&stu[i].math);
printf("cyuyan:");
scanf("%d",&stu[i].cyuyan);
printf("jisuanji:");
scanf("%d",&stu[i].jisuanji);
}
//else
printf("未找到该学生信息\n");
//}
}
void xiugai(void)
{
char a[10];
int i,j;
system("cls");
printf("请输入需要修改的学生成绩:\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].number)==0)
{
printf("学号\t姓名\t数学\tC语言\t计算机\n");
printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%.2f\t",stu[i].score[j]);
printf("\n");
printf("请重新输入该学生的学号 姓名:\n");
scanf("%s%s",stu[i].number,stu[i].name);
printf("数学\tC语言\t计算机\n");
for(j=0;j<M;j++)
scanf("%f",&stu[i].score[j]);
printf("修改成功\n");
}
else
printf("失败\n");
}
}
void shanchu()
{
int i,j,c;
char m,a[10];
system("cls");
printf("请输入学生学号:\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].number)==0)
{
printf("学号\t姓名\t数学\tC语言\t计算机\n");
printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%.2f\t",stu[i].score[j]);
printf("\n");
c=i;
break;
}
else
printf("未找到该学生信息\n");
}
printf("是否删除该学生成绩(y/n)\n");
scanf("%s",&m);
if(m=='y')
{
for(i=c;i<n-1;i++)
stu[i]=stu[i+1];
n=n-1;
printf("删除成功\n");
}
printf("删除失败\n");
}