大神们,帮我看看这个程序出的问题,提前谢谢!
#include "stdio.h"#include "stdlib.h"
#include "string.h"
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define MAXLEN 20
typedef struct
{
int num[MAXLEN];
char name[MAXLEN];
int socre;
int classes;
}ElemType;
typedef struct
{
ElemType *elem;
int last;
int listsize;
}SqList;
ListInit(SqList *L)
{
L->elem=(ElemType *)malloc(sizeof(ElemType));
L->last=0;
L->listsize=MAXSIZE;
return OK;
}
void ReadIn(ElemType *e)
{
printf("输入学号:");
scanf("%d",e->num);
printf("输入姓名:");
scanf("%s",e->name);
printf("输入成绩:");
scanf("%d",&e->socre);
printf("输入年级:");
scanf("%d",&e->classes);
}
ListInsert(SqList *L,int pos,ElemType e)
{
ElemType *p,*q;
if(pos<1||pos>L->last+1)
return ERROR;
p=&L->elem[L->last];
q=&L->elem[pos-1];
for(;p>=q;--p)
*(p+1)=*p;
*q=e;
++L->last;
return OK;
}
void Print(SqList L)
{ int i;
for(i=0;i<L.last;++i)
{printf("学号:%d\t",L.elem[i].num);
printf("姓名:%s\t",L.elem[i].name);
printf("成绩:%d\t",L.elem[i].socre);
printf("年级:%d\t",L.elem[i].classes);
printf("\n");
}
}
void Sort(SqList *L )
{int i,j;
ElemType t;
for(i=0;i<L->last-1;++i)
for(j=0;j<L->last-i-1;++j)
if(L->elem[j].socre>L->elem[j+1].socre)
{t=L->elem[j];
L->elem[j]=L->elem[j+1];
L->elem[j+1]=t;
}
int a;
for(a=0;a<L->last;++a)
{
printf("学号:%d\t",L->elem[a].num);
printf("姓名:%s\t",L->elem[a].name);
printf("成绩:%d\t",L->elem[a].socre);
printf("年级:%d\t",L->elem[a].classes);
printf("\n");
}
}
int Find(SqList *L , int *b)
{
printf("请输入你想查找的学生学号:");
scanf("%c",*b);
int i=0;
while((i<=L->last)&&(L->elem[i].num)!=(*b))
i++;
if(i<=L->last)
return(i+1);
else
return(-1);
{
printf("学号:%d\t",L->elem[i].num);
printf("姓名:%s\t",L->elem[i].name);
printf("成绩:%d\t",L->elem[i].socre);
printf("年级:%d\t",L->elem[i].classes);
printf("\n");
}
}
void main()
{SqList L;
int key,len;
int b;
char a;
ElemType e;
ListInit(&L);
printf("********************************学生管理系统***********************************\n");
printf("是否进入学生管理系统?(Y/N): \n");
a=getchar();
if(a=='Y'||a=='y')
{do{
printf("∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
printf("********************************(1):输入成绩***********************************\n");
printf("\n");
printf("********************************(2):成绩排序***********************************\n");
printf("\n");
printf("********************************(3):显示所有成绩*******************************\n");
printf("\n");
printf("*******************************(4):按学号查找学生*****************************\n");
printf("\n");
printf("********************************(5):退出***************************************\n");
printf("\n");
printf("∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
printf("\n");
scanf("%d",&key);
switch(key)
{
case 1 :ReadIn(&e);
len=L.last;
ListInsert(&L,++len,e);
break;
case 2 :Sort(&L);break;
case 3 :Print(L);break;
case 4 :Find(&L,&b);break;
case 5:exit(0);
default:printf("Error\n");break;
}
}while(1);
}
else
printf("不能进入学生管理系统!\n");
}