求教:向程序中添加学生信息后,进入查看成绩菜单,程序为什么停止工作
程序代码:
#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() { }