发布网友 发布时间:2022-12-17 06:15
共2个回答
热心网友 时间:2023-09-14 10:51
你应该是开始学数据结构了? 首先你得为学生这样一个实体定义结构体对吧,比如 typedef struct student{ char stunumber[20]; char stuname[20]; int score; int point; }STU; 然后,你就要开始写程序了,你需要做的是这样的事情,线性表其实就是这个结构体的一个数组了,应该算是最简单的数据结构。 你先要定义一个线性表,也就是申请空间,我们可以#define MAX 100,在程序里面就可以使用STU arr[MAX],或者是STU *arr= (STU*)malloc(MAX*sizeof(STU));来申明这样一个线性表了。 然后,得考虑提供用户接口,在文本界面中,就是提供文字提示,比如说菜单,让他选择是创建还是排序。 你可以写的很简单的,这里我就不跟你多说了,热心网友 时间:2023-09-14 10:51
/*给你写好了,实现基本功能 其他自己完善 谢谢!*/ #include "stdio.h" #include "stdlib.h" #include "string.h" #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 socre; /*只写一门先*/ int credit; }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 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<L.length;++i) { printf("学号:%s",L.elem[i].num); printf("姓名:%s",L.elem[i].name); printf("成绩:%d",L.elem[i].socre); printf("学分:%d",L.elem[i].credit); printf("\n"); } } void ReadIn(ElemType *e) { printf("输入学号:"); scanf("%s",e->num); printf("输入姓名:"); scanf("%s",e->name); printf("输入成绩:"); scanf("%d",&e->socre); printf("输入学分:"); scanf("%d",&e->credit); } void Sort(SqList *L) { int i,j; ElemType t; for(i=0;i<L->length-1;++i) for(j=0;j<L->length-i-1;++j) if(L->elem[j].socre>L->elem[j+1].socre) { t=L->elem[j]; 1 L->elem[j]=L->elem[j+1]; L->elem[j+1]=t; } } void main() { SqList L; int key,len; 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 :Sort(&L);break; case 3 :Print(L);break; case 4:exit(0); default:printf("Error\n");break; } }while(1); }