#include<stdio.h>
#include<string.h>
typedef struct
{ long num;
char name[12];
int score[2];
int total;
}stu;
stu student[100];
void xepx(int N)
{
int i,j,d;stu t;
printf ("1");
d=N/2;
while(d>=1);
{ for (i=d+1;i<=N;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<student+N;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 (p=student;;)
{
printf ("请选择您要进行的操作:\n1:按姓名字母顺序排列。\n2:。。。。\n3:。。。。\n4:退出\n");
scanf ("%d",&H);
switch(H)
{
case 1:xepx(N);break;
case 2:break;
default: exit(0);
}
printf ("学号 姓名 高数 英语 总分:\n");
for (p=student;p<student+N;p++)
printf ("%-6ld%-10s%-6d%-6d%-6d\n",p->num,p->name,p->score[0],p->score[1],p->total);
}
}