该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXLEN 12
typedef int Status;
typedef struct
{
char num[MAXLEN];
char name[MAXLEN];
int chinese;
int math;
int english;
int ave;
}ElemType;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status ListInit(SqList *L)
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}
Status ListDelete(SqList *L,int i)
{
int *p,*q;
if(i<1||i>L->length)
return ERROR;
p=&(L->elem[i]);
q=&L->elem[L->length];
for(p++;p<=q;p++)
*(p-1)=*p;
-L->length;
return OK;
}
Status ListInsert(SqList *L,int pos,ElemType e)
{
ElemType *p,*q;
if(pos<1||pos>L->length+1)
return ERROR;
p=&L->elem[L->length-1];
q=&L->elem[pos-1];
for(;p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return OK;
}
void Print(SqList L)
{
int i;
for(i=0;i
{
printf("学号:%s",L.elem[i].num);
printf("姓名:%s",L.elem[i].name);
printf("语文成绩:%d",L.elem[i].chinese);
printf("数学成绩:%d",L.elem[i].math);
printf("英语成绩:%d",L.elem[i].english);
printf("平均成绩:%d",(L.elem[i].english+L.elem[i].chinese+L.elem[i].math)/3);
printf("\n");
}
}
void ReadIn(ElemType *e)
{
printf("输入学号:");
scanf("%s",e->num);
printf("输入姓名:");
scanf("%s",e->name);
printf("输入语文成绩:");
scanf("%d",&e->chinese);
printf("输入数学成绩:");
scanf("%d",&e->math);
printf("输入英语成绩:");
scanf("%d",&e->english);
}
void main()
{
SqList L;
int key,len,k;
ElemType e;
ListInit(&L);
do{
printf("(1):录入成绩\n");
printf("(2):显示所有成绩\n");
printf("(3):删除学生成绩\n");
printf("(4):退出\n");
scanf("%d",&key);
switch(key)
{
case 1 :ReadIn(&e);
len=L.length;
ListInsert(&L,++len,e);
break;
case 2 :Print(L);break;
case 3 :pritnf("请输出要删除的学号:");
scanf("%d",&k);
ListDelete(&L,k);break;
case 4:exit(0);
default:printf("Error\n");break;
}
}while(1);
}