求指点,这个程序运行不出来。运行第一个界面后无法选择下一步。
程序代码:
#include <stdio.h> #include <stdlib.h> #define N 20 #define M 100 struct score //课程分数 { int scr1; int scr2; int scr3; int scr4; float avg; int total; }; struct student //学生基本信息 { char num[10]; char name[10]; char sex[2]; int age; struct score scr; }; int x=0; int input(struct student *s); int insert(struct student *s); int sort(struct student *s); int find(struct student *s); int delet(struct student *s); //int output(struct student *s); int main() { int i=1; struct student stu[M]; printf("* * * * * * * * * * * * * * * *学生成绩管理系统* * * * * * * * * * * * * * * *\n"); printf("请按数字键选择需要的操作:\n"); printf(" 1.输入学生信息\n"); printf(" 2.插入学生信息\n"); printf(" 3.学生信息排序\n"); printf(" 4.查找学生信息\n"); printf(" 5.删除学生信息\n"); //printf(" 6.输出所有学生信息\n"); for(i;;) { i=getchar(); switch(i) { case 1: system("cls"); i=input(stu); break; case 2: system("cls"); i=insert(stu); break; case 3: system("cls"); i=sort(stu); break; case 4: system("cls"); i=find(stu); break; case 5: system("cls"); i=delet(stu); break; /* case 6: system("cls"); i=output(stu); break; */ } } return 0; } int input(struct student *s) //输入 { int i; for(i=0;i<N;i++,s++) { printf("请输入%d个学生的信息:\n *学号 姓名 性别 年龄 四科成绩*\n",N+1); scanf("%s%s%s%d%d%d%d%d",s->num,s->name,s->sex,s->age,s->scr.scr1,s->scr.scr2,s->scr.scr3,s->scr.scr4); s->scr.total=s->scr.scr1+s->scr.scr2+s->scr.scr3+s->scr.scr4; s->scr.avg=s->scr.total/4.0; } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } int insert(struct student *s) //插入 { int i=1,j; struct student s1; printf("输入要插入的学生信息:\n学号 姓名 性别 年龄 四科成绩\n"); for(i;;) { scanf("%s%s%s%d%d%d%d%d",s1.num,s1.name,s1.sex,s1.age,s1.scr.scr1,s1.scr.scr2,s1.scr.scr3,s1.scr.scr4); for(i=0;i<N;i++) { if(s1.num<s[i].num) { for(j=N-1;j>=i;j--) { s[j+1]=s[j]; } s[i]=s1; } } printf("继续插入输入1,放弃插入输入0"); i=getchar(); x++; } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } int sort(struct student *s) //分类排序 { int i,j; struct student s2; printf("请选择排序的要求:\n1.按学号\n2.按总成绩\n"); i=getchar(); switch(i) { case 1: for(i=0;i<N-1;i++) { for(j=0;j<N-1-i;j++) { if(s[j].num>s[j+1].num) { s2=s[j]; s[j]=s[j+1]; s[j+1]=s2; } } } break; case 2: for(i=0;i<N-1;i++) { for(j=0;j<N-1-i;j++) { if(s[j].scr.total>s[j+1].scr.total) { s2=s[j]; s[j]=s[j+1]; s[j+1]=s2; } } } break; } printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩"); for(i=0;i<N;i++) { printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total); } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } int find(struct student *s) //查找 { int i=1; char f[10]; for(i;;) { printf("输入要查找的学生学号或姓名\n"); scanf("%s",f); for(i=0;i<N;i++) { if(f==s[i].num||f==s[i].name) { printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩"); printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total); } } printf("继续查询输入1,放弃查询输入0"); i=getchar(); } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } int delet(struct student *s) //删除 { int i=1,j; char f[10]; for(i;;) { printf("输入要删除的学生学号或姓名\n"); scanf("%s",f); for(i=0;i<N;i++) { if(f==s[i].num||f==s[i].name) { for(j=i+1;j<N;j++) { s[j-1]=s[j]; } } } printf("继续删除输入1,放弃删除输入0"); i=getchar(); x--; } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } /*int output(struct student *s) //输出 { int i; printf("所有学生信息:"); printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩"); for(i=0;i<N+x;i++) { printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total); } printf("输入1返回主菜单,输入0退出"); return(i=getchar()); } */大概就是主程序无法执行switch 求指点
对了 我用的是Dev C++