结果输入函数里输入第二个运动员数据的时候程序崩溃
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int N,M,W,i,z,j,k,t,s,p[15],q[15];
struct school //定义学校结构体数组
{
char name[20];
int score;
}
school[20];
struct student //定义学生结构体数组
{
char name[20];
char sex[10];
char school[20];
char event[20];
int mingci;
int score;
}
stu[500];
struct event //定义项目结构体数组
{
char name[20];
char sex[10];
}
event[50];
void menu(); //函数声明
void enter();
void result();
void search();
void define();
void search_school();
void search_event();
void continue_search();
//主函数
int main()
{
menu();
}
//主菜单函数
void menu()
{
int n;
do
{
printf("\t\t*******欢迎访问校际运动会管理系统***********\n");
printf("\t\t*****************MENU***********************\n");
printf("\t\t**************1、录入信息 *****************\n");
printf("\t\t**************2、录入比赛结果 *************\n");
printf("\t\t**************3、查找 *********************\n");
printf("\t\t**************4、退出 *********************\n");
printf("请选择(1-4):[ ]\b\b");
scanf("%d",&n);
if (n<1 || n>4)
{
printf("输入错误,请重新输入!\n");
menu();
}
switch(n)
{
case 1:enter();break;
case 2:result();break;
case 3:search();break;
case 4:return(0);
}
}
while (n <= 4 && n >= 1);
}
//信息输入函数
void enter()
{
int z;
printf("请输入参赛学校的个数:\n");
scanf("%d",&N);
printf("请输入男生参赛项目的个数:\n");
scanf("%d",&M);
printf("请输入女生参赛项目的个数:\n");
scanf("%d",&W);
printf("\n请选择计分方式:\n");
printf("\t1.NO.1:7',NO.2:5',NO.3:3',NO.4:2',NO.5:1'.\n");
printf("\t2.NO.1:5',NO.2:3',NO.3:2'.\n");
printf("\t3.用户自由决定.\n");
printf("请选择序号(1-3):[ ]\b\b");
scanf("%d",&z);
switch(z)
{
case 1:z=1;break;
case 2:z=2;break;
case 3:z=3;break;
}
menu();
}
//结果输入函数
void result()
{
int i,s,j;
printf("请输入得奖运动员个数: ");
scanf("%d",&s);
for(i=0;i<s;i++)
{
printf("\n姓名:");
scanf("%s",stu[i].name);
printf("\n性别:");
scanf("%s",stu[i].sex);
printf("\n学校:");
scanf("%s",stu[i].school);
printf("\n项目:");
scanf("%s",stu[i].event);
printf("\n名次:");
scanf("%d",stu[i].mingci);
if(z==1)
{
if(stu[i].mingci=1)
stu[i].score=7;
else if(stu[i].mingci=2)
stu[i].score=5;
else if(stu[i].mingci=3)
stu[i].score=3;
else if(stu[i].mingci=4)
stu[i].score=2;
else if(stu[i].mingci=5)
stu[i].score=1;
}
else if(z==2)
{
if(stu[i].mingci=1)
stu[i].score=5;
else if(stu[i].mingci=2)
stu[i].score=3;
else if(stu[i].mingci=3)
stu[i].score=2;
}
else if(z==3)
{
for(j=0;j<i;j++)
{
if(stu[i].mingci==p[j])
stu[i].score=q[j];
}
}
}
menu();
}
//查询函数
void search()
{
int h;
printf("请选择查询方式: \n\t 1.按学校查询\n\t 2.按项目查询\n");
scanf("%d",&h);
if(h==1)
search_school();
else if(h==2)
search_event();
}
//名次指定函数
void define()
{
int t,k;
printf("\n你要取前几名? \n");
scanf("%d",&t);
for(k=0;k<t;k++)
{
printf("输入要定义的名次: ");
scanf("%d",&p[k]);
printf("\n输入该名次的分值:");
scanf("%d",&q[k]);
}
}
//按学校查询函数
void search_school()
{
struct student s0;
int max=0,y=0;
printf("请输入你要查找的学校:");
scanf("%s",s0.school);
printf("\n\tschool \tathlete \tsex \tevent \tscore");
for(i=0;i<500;i++);
if(strcmp(s0.school,stu[i].school)==0)
{
printf("\n\t%-16s%-16s%-16s%-16s%-5d",stu[i].school,stu[i].name,stu[i].sex,stu[i].event,stu[i].score);
max+=stu[i].score;
y=1;
}
if(y==1)
{
printf("\n\t学校总分\t%d\n",max);
printf("\n\t参赛学校总数\t%d\n",N);
}
else if(y==0)
{
printf("\n输入错误,请重新输入");
search();
}
continue_search();
}
//按项目查询函数
void search_event()
{
struct student s1;
int x=0;
printf("请输入项目名称");
scanf("%s",s1.event);
printf("\n\tschool \tathlete \tsex \tmingci \tscore");
for(i=0;i<500;i++)
if(strcmp(s1.event,stu[i].event)==0)
{
x=1;
printf("\n\t%-16s%-16s%-16s%-16s%-5d",stu[i].school,stu[i].name,stu[i].sex,stu[i].event,stu[i].score);
}
if(x==1)
printf("项目总数:%d\n 男子项目:%d\t 女子项目:%d",M+W,M,W);
if(x==0)
{
printf("\n输入错误,请再次输入");
search();
}
continue_search();
}
//是否继续查询函数
void continue_search()
{
int r;
printf("是否继续查询? 选择:1.是. 2.返回主菜单.");
scanf("%d",&r);
if(r==1)
search();
else if(r==2)
menu();
}