修改程序,老师说print陷入死循环,这个程序怎么改?我只有20分
程序代码:
#include<stdlib.h> #include<stdio.h> #include<string.h> #define NUM 100 struct student { int term; int num; int classes; char name[10]; int score[4]; int sum; float average; }stu[NUM]; void input() { system("cls"); int i; char a; for(i=0;i<NUM;i++) { printf("\n请输入学生的学期:"); scanf("%d",&stu[i].term); printf("\n请输入学生的学号:"); fflush(stdin); scanf("%d",&stu[i].num); printf("\n请输入学生的班级:"); scanf("%d",&stu[i].classes); printf("\n请输入学生的姓名:"); scanf("%s",stu[i].name); printf("\n请输入语文成绩:"); scanf("%d",&stu[i].score[0]); printf("\n请输入学生的数学成绩:"); scanf("%d",&stu[i].score[1]); printf("\n请输入学生的英语成绩:"); scanf("%d",&stu[i].score[2]); printf("\n请输入学生的计算机成绩:"); scanf("%d",&stu[i].score[3]); stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]; stu[i].average=(float)stu[i].sum/4.0; printf("是否要继续添加(按N&n退出)"); fflush(stdin); a=getchar(); if(a=='n'||a=='N') break; } } void search() { system("cls"); int number=0,i; printf("\t\t\t 请输入要查找学生的学号:"); scanf("%d",&number); printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n"); for(i=0;i<NUM;i++) if(number==stu[i].num)break; if(i<NUM) {printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); } else printf("没找到该学生的信息\n"); system("pause"); } void print1() { int i,m; printf("请输入学期:\n"); scanf("%d",&m); printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n"); for(i=0;i<NUM;i++) { if(m==stu[i].term) printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); } system("pause");system("cls");print(); } void print2() { int i,j,k; printf("请输入班级:\n"); scanf("%d",&k); printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n"); for(i=0;i<NUM;i++) { if(k==stu[i].classes) { stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]; stu[i].average=(float)stu[i].sum/4.0; printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); } } printf("输出不及格学生名单及成绩:\n"); printf("学号\t姓名\t班级 语文 数学 英语 计算机 \n"); for(i=0;i<NUM;i++) {for(j=0;j<4;j++) { if(stu[i].score[j]<60&&k==stu[i].classes) printf("%d\t%s\t%d%5d%5d%5d%6d\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]); break; } } system("pause");system("cls");print(); } void print() { system("cls"); char a; printf("1 按学期输出\n"); printf("2 按班级输出\n"); printf("3 返回\n"); fflush(stdin); a=getchar(); switch(a) { case'1':print1(); case'2':print2(); case'3':zcd(); default:print(); } } void sort() { int i,j=0; int temp; for(i=0;i<NUM;i++) { stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]; stu[i].average=(float)stu[i].sum/4.0; } for(i=0;i<NUM;i++) { for(j=i+1;j<NUM;j++) { if(stu[i].sum<stu[j].sum) { temp=stu[i].sum; stu[i].sum=stu[j].sum; stu[j].sum=temp; } } } printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n"); for(i=0;i<NUM;i++) printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes, stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); system("pause");system("cls");print(); } void modify() { system("cls"); int number,i; printf("\t\t\t请输入要修改信息的学生学号:"); scanf("\t\t\t%d",&number); for(i=0;i<NUM;i++) if(number==stu[i].num) break; if(i<NUM) { printf("请输入修改后的学生信息:"); printf("\n请输入学生的学期:"); scanf("%d,&stu[i].temp"); printf("\n请输入学生的学号:"); fflush(stdin); scanf("%d",&stu[i].num); printf("\n请输入学生的班级:"); scanf("%d",&stu[i].classes); printf("\n请输入学生的姓名:"); scanf("%d",&stu[i].name); printf("\n请输入学生的语文成绩:"); scanf("%d",&stu[i].score[0]); printf("\n请输入学生的数学成绩:"); scanf("%d",&stu[i].score[1]); printf("\n请输入学生的英语成绩:"); scanf("%d",&stu[i].score[2]); printf("\n请输入学生的计算机成绩:"); scanf("%d",&stu[i].score[3]); } else printf("没找到该学生的信息\n"); system("pause");system("cls");zcd(); } void zcd() { int n=0; char m; system("cls"); printf("按任一键进入主菜单\n"); printf("*******************************************************\n"); printf("\t\t贺州学院欢迎您\n"); printf("\n\t\t\t-----欢迎使用学生管理系统\n\n\t\t\t\t\t-----\n"); printf("***********************MENU****************************\n"); printf("\t\t\t1. 输入学生成绩记录\n"); printf("\t\t\t2. 排序并显示\n"); printf("\t\t\t3. 按班级显示成绩单\n"); printf("\t\t\t4. 查找个人成绩\n"); printf("\t\t\t5. 修改\n"); printf("\t\t\t6. 退出\n"); printf("*******************************************************\n"); printf("\n\t\t\t 输入你的选择(1~7):"); fflush(stdin); m=getchar(); do { switch(m) { case'1':input();zcd();break; case'2':sort();system("pause");zcd();break; case'3':print();system("pause");break; case'4':search();zcd();break; case'5':modify();system("pause");zcd();break; case'6':exit(0); default:printf("错误命令");getchar();zcd(); } }while(1); } int main() { zcd(); }