c语言数据结构链表实现通讯录,求助!!!! 用双向链表作数据结构,编一个通讯录管理系统...

我这有学生管理系统..很简单的一个..你可以改改

#include

#include

#include

typedef struct

{ long num;

char name[12];

int score[2];

int total;

}stu;

stu student[100];

void xuehao(stu *p,int N)

{   int i,i1,j,j1;

stu a;

for(i=0;i

{   a=p[i];

for(j=i;j

{

if(p[j].num

{

a=p[j];

j1=j;

}

}

for(i1=j1;i1>i;i1--)

{

p[j1]=p[j1-1];

}

p[i]=a;

}

}

void xzpx(stu*p,int N)

{

int i,j;

stu t;

for (i=0;i

{

for (j=i+1;j

if ((p+i)->totaltotal)

{ t=student[i];student[i]=student[j];student[j]=t;}

}

}

void xepx(int N)

{

int i,j,d;stu t;

d=(N+1)/2;

while(d>=1)

{

for (i=d;i

{

t=student[i];

j=i-d;

while (j>=0&&strcmp(student[j].name,student[i].name)>0)

{

student[j+d]=student[j];

j=j-d;

}

student[j+d]=t;

}

d=d/2;

}

}

void main()

{

int N=0,H=0;

stu *p;

printf ("请输入本班人数:\n");

scanf ("%d",&N);

printf ("学号 姓名 高数 英语:\n");

for (p=student;p

{

scanf ("%ld%s%d%d",&p->num,p->name,&p->score[0],&p->score[1]);

printf ("总分:\n");

p->total=p->score[0]+p->score[1];

printf (" %d\n",p->total);

}

for (;;)

{

printf ("请选择您要进行的操作:\n1:按总分高低排名。\n2:按姓名字母顺序排列。\n3:按学号排列\n4:退出\n");

p=student;

scanf ("%d",&H);

switch(H)

{

case 1:xzpx(p,N);break;

case 2:xepx(N);break;

case 3:xuehao(p,N);break;

default:exit(0);

}

printf ("学号 姓名 高数 英语 总分:\n");

for (p=student;p

printf ("%-6ld%-10s%-6d%-6d%-6d\n",p->num,p->name,p->score[0],p->score[1],p->total);

}

}

6f83fddf9cb9ff6843fffd45e1807199.gif

学习需要安静。。海盗要重新来过。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值