求教:向程序中添加学生信息后,进入查看成绩菜单,程序为什么停止工作
程序代码:#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define length sizeof(struct student)
struct score
{
float Chinese,Math,English;
};
struct student
{
char Name[20];
int Num;
struct score Score;
float Allscore;
char Sex;
}stu[300],yuanshi[300],change;
int input;
int n=0;
/*函数声明*/
void load();
void save();
int add();
int del();
void numSort();
void nameSort();
void chineseSort();
void mathSort();
void englishSort();
void allscoreSort();
void fenshuduanSort();
void youxiuSort();
void bujigeSort();
int Menu();
int chakan();
/*主函数*/
int main()
{
for(;;)
{
input=Menu();
switch(input)
{
case(1):{break;}
case(2):{
int b=0;
while(b!=1&&b!=2)
{
printf("1.增加学生\n");
printf("2.删除学生\n");
printf("请选择:");
scanf("%d",&b);
}
if(b==1)
{
add();
break;
}
else if(b==2)
{
n=del();
}
break;
}
case(3):
{
chakan();
break;
}
}
}
return 0;
}
/*主菜单*/
int Menu()
{
printf("**************************************************************************\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* 欢迎使用成绩管理系统! *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("******* *******\n");
printf("**************************************************************************\n\n");
printf(" 1.读取/保存文件\n");
printf(" 2.增加/删除\n");
printf(" 3.查看成绩\n");
printf(" 0.退出\n");
printf(" 请选择:");
scanf("%d",&input);
while(input!=1&&input!=2&&input!=3&&input!=0)
{
printf("输入有误!请重新输入\n");
getchar();
input=Menu();
}
return(input);
}
/*增加学生*/
int add()
{
int i;
for(i=n;;i++)
{
printf("请输入第%d位学生姓名,输入end停止输入\n",n+1);
scanf("%s",&stu[i].Name);
if(strcmp(stu[i].Name,"end")==0)
{
break;
}
printf("请输入该学生学号\n");
scanf("%d",&stu[i].Num);
getchar();
printf("请输入该学生性别,男.m,女.w\n");
scanf("%c",&stu[i].Sex);
printf("请输入该学生语文,数学,英语考试成绩,用空格分开\n");
scanf("%f%f%f",&stu[i].Score.Chinese,&stu[i].Score.Math,&stu[i].Score.English);
stu[i].Allscore=stu[i].Score.Chinese+stu[i].Score.Math+stu[i].Score.English;
n=n+1;
}
return(0);
}
/*删除学生*/
int del()
{
char delname[20];
int i,j;
printf("请输入要删除的学生姓名\n");
scanf("%s",&delname);
for(i=0;i<n;i++)
{
if(strcmp(stu[i].Name,delname)==0)
{
for(j=i+1;j<n;j++)
{
stu[j-1]=stu[j];
n=n-1;
break;
}
}
else
{
printf("不存在该学生!\n");
return(n);
}
}
printf("删除成功!\n");
return(n);
}
/*查看成绩菜单*/
int chakan()
{
int i,j,c=100;
while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5&&c!=6&&c!=7&&c!=8&&c!=0)
{
printf("Name Sex Num Chinese Math English Allscore\n");
for(i=0;i<n;i++)
{
printf("%-15s%-5s%-5d%-5f%-5f%-5f%-5f\n",stu[i].Name,stu[i].Sex,stu[i].Num,stu[i].Score.Chinese,stu[i].Score.Math,stu[i].Score.English,stu[i].Allscore);
}
printf("----------------------------------------------------------------------\n");
printf("***** 1.按学号排序\n");
printf("***** 2.按姓名排序\n");
printf("***** 3.按语文成绩排序\n");
printf("***** 4.按数学成绩排序\n");
printf("***** 5.按英语成绩排序\n");
printf("***** 6.按总成绩排序\n");
printf("***** 7.查看优秀成绩单\n");
printf("***** 8.查看不及格成绩单\n");
printf("***** 0.返回主菜单\n");
printf("请选择:");
scanf("%d",&c);
getchar();
}
switch(c)
{
case(1):
{
numSort();
break;
}
case(2):
{
nameSort();
break;
}
case(3):
{
chineseSort();
break;
}
case(4):
{
mathSort();
break;
}
case(5):
{
englishSort();
break;
}
case(6):
{
allscoreSort();
break;
}
case(7):
{
}
case(8):
{
}
case(0):
{
}
}
return 0;
}
/*按学号排序*/
void numSort()
{
int i,j,z=100;
while(z!=1&&z!=2)
{
printf("***** 1.升序\n");
printf("***** 2.降序\n");
printf("请选择:");
scanf("%d",&z);
}
switch(z)
{
case(1):
{
for(i=0;i<n;i++)
{
for(j=i;j<n-1;j++)
{
if(stu[j].Num>stu[j+1].Num)
{
change=stu[j];
stu[j]=stu[j+1];
stu[j+1]=change;
}
}
}
}
case(2):
{
for(i=1;i<n;i++)
{
for(j=i;j<n-1;j++)
{
if(stu[j].Num<stu[j+1].Num)
{
change=stu[j];
stu[j]=stu[j+1];
stu[j+1]=change;
}
}
}
}
}
}
void nameSort()
{
}
void chineseSort()
{
}
void mathSort()
{
}
void englishSort()
{
}
void allscoreSort()
{
}



