user-0 提问: 新人求指教，我检查了很久都不知道怎么改

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h>  typedef struct { char name[20]; float score; }STD;  typedef struct{ STD *data; int length;     /*插入个数*/  int listsize;    /*初始化大小*/ }sqlist;  //sqlist *L; //i= 1;    int menu(); int initsqlist(sqlist *L,int max); int insertsqlist(sqlist *L,int i,STD x); int deletesqlist(sqlist *L,int i,STD *x); int locatesqlist(sqlist L,STD x); int dispsqlist(sqlist L); int lengthsqlist(sqlist L); int ranksqlist(sqlist *L); void failclass(sqlist L); void vaeclass(sqlist L); void pingjunzhi(sqlist L); void chongfu(sqlist L); void xgcj(sqlist *L);  int main() { int n,i,t=1,maxsize; STD s; sqlist L; int k; int h; while(t) { n=menu(); switch(n) { case 1: printf("请输入需要创建的学生数据个数："); scanf("%d",&maxsize); initsqlist(&L,maxsize);          	printf("初始化完成，按任意键继续\n"); getch(); break; case 2:            	printf("请输入需要插入的学生姓名、成绩，空格隔开\n"); scanf("%s%f",&s.name,&s.score);  	        printf("请输入需要插入的位置(1-%d):",lengthsqlist(L)); scanf("%d",&i); insertsqlist(&L,i,s); printf("插入完成，按任意键继续\n"); getch(); break; case 3:     printf("请输入需要删除的学生姓名:"); scanf("%s",&s.name); n=locatesqlist(L,s); if(n==L.length+1) printf("没有该数据"); else { deletesqlist(&L,n,&s); printf("删除的学生数据为姓名：%-10s成绩：%5.2f",s.name,s.score); }     printf("删除完成，按任意键继续\n"); getch(); break; case 4:             printf("*****所有学生数据*****\n"); dispsqlist(L); printf("按任意键继续\n"); getch(); break; case 5: ranksqlist(&L); printf("排序完成，按任意键继续\n"); getch(); break; case 6:     failclass(L);     getch();     break;         case 7:              vaeclass(L);      getch();      break;         case 8:              pingjunzhi(L);              getch();              break;         case 9:              ranksqlist(&L);              chongfu(L);              getch();              break;         case 10:              xgcj(&L);              getch();              break; case 0: t=0; break; default: printf("输入有误\n"); printf("按任意键继续\n"); getch(); } } }  int menu() { int n; system("cls"); printf("******欢迎使用计算机成绩管理系统******\n"); printf("1、初始化新生数据  2、插入新生数据\n"); printf("3、删除新生数据    4、显示新生数据\n"); printf("5、按成绩重新排序\n"); printf("6、显示不及格的人\n"); printf("7、显示优秀的人\n"); printf("8、求出平均值\n"); printf("9、输出重复的成绩名单\n"); printf("10、修改成绩\n"); printf("0、退出\n"); printf("*************************************\n"); printf("请选择功能编号:"); scanf("%d",&n); getchar(); return n; }  int initsqlist(sqlist *L,int max) { L->data=(STD *)malloc(max*sizeof(STD));        //()malloc(); if(L->data==NULL) { printf("分配失败\n"); return 0; } L->length=0; L->listsize=max; return 1; }  int insertsqlist(sqlist *L,int i,STD x) { int k; if(L->length>=L->listsize) { printf("没有空间，不能插入\n"); return 0; } for(k=L->length;k>=i;k--) L->data[k]=L->data[k-1]; L->data[i-1]=x; ++L->length; return 1; }  int deletesqlist(sqlist *L,int i,STD *x) { int k; if(L->length==0) { printf("没有数据，不能删除\n"); return 0; } (*x)=L->data[i-1]; for(k=i;k<=L->length;k++) L->data[k-1]=L->data[k]; --L->length; return 1; }  int locatesqlist(sqlist L,STD x) { int k; if(L.length==0) { printf("没有数据\n"); return 0; } for(k=1;k<=L.length;k++) if(strcmp(L.data[k-1].name,x.name)==0) break; return k; }  int dispsqlist(sqlist L) { int k; if(L.length==0) { printf("没有数据\n"); return 0; } for(k=1;k<=L.length;k++) printf("姓名：%-10s成绩：%5.2f\n",L.data[k-1].name,L.data[k-1].score); return 1; }  int lengthsqlist(sqlist L) { int k; for(k=1;k<=L.length;++k); return k; }  int ranksqlist(sqlist *L) { int i,j; STD k; if(L->length==0) { printf("没有数据\n"); return 0; } for(i=1;i<=L->length;i++) { for(j=1;j<=L->length-i;j++) { if(L->data[j-1].score<=L->data[j].score) { k=L->data[j-1]; L->data[j-1]=L->data[j]; L->data[j]=k; } } } return 1;  } void  failclass(sqlist L) { int k,count=0; if(L.data==NULL) { printf("此库没有数据，谢谢！");  } else { printf("不及格学生信息如下:\n"); for(k=1;k<=L.length;k++) { if((L.data[k-1].score)<60) { printf("姓名:%-10s成绩:%5.2f\n",L.data[k-1].name,L.data[k-1].score); count++; } } } printf("不及格人数共计：%d\n",count);  }    void vaeclass(sqlist L) { int h,count=0; if(L.data==NULL) { printf("此库没有数据，谢谢！");  } else { printf("优秀的学生有这些:\n"); for(h=1;h<=L.length;h++) { if((L.data[h-1].score)>80) { printf("姓名:%-10s成绩:%5.2f\n",L.data[h-1].name,L.data[h-1].score); count++; } } } printf("优秀人数共计：%d\n",count);   }        void pingjunzhi(sqlist L) { int sum=0; float average; if(L.length==NULL)     printf("此表为空");  for(int i=0;i<L.length;i++)   sum=sum+L.data[i].score;     average=(float)(sum/L.length);     printf("全班的平均分为%f",average);     }      void chongfu(sqlist L) {  for(int i=0;i<L.length-1;i++)     {     	 if(L.data[i].score!=L.data[i+1].score)     	 printf("不存在相同成绩");     	 else     	 {     	 printf("成绩相同的人是:\n");     	printf("%s %f\n",L.data[i].name,L.data[i].score);     	printf("%s %f\n",L.data[i+1].name,L.data[i+1].score);     	break;     }     	     	} }  void xgcj(sqlist *L) { char a[100]; int c; printf("请输入要修改成绩的名字:"); gets(a); for(int i;i<L->length;i++) { if(strcmp(a,L->data[i].name)!=0) printf("表中没有此人"); else { printf("输入修改的成绩:\n");     scanf("%d",&c);     L->data[i].score=c;     break; }  } } 代码语法错误编译一下不就能看到么 至于逻辑有错误 自己看着办吧