#include <stdio.h>
#include "string.h"
#define N 5
struct date
{
  int month;
  int day;
  int year;
};
typedef struct /*自定义结构体*/
{ int num ; /*编号*/
    char name[10];  /*姓名*/
     char *sex;     /*性别*/
     struct datebirthday; /*生日*/
     char telnum[20]; /*联系电话*/
    char elestelnum[20];/*其他联系方式QQ,MES*/
    char *adess; /*地址*/
}USTB;
/*定义函数类型 */
void getdata (USTB  *sp); /*输入定义指针*/
void getsort (USTB  *sp);/*按字典顺序排序*/
void outdata (USTB  *sp);/*输出*/
 void main()/*主函数*/
{ 
    USTB sp[N];
getdata(sp);
 getsort(sp);
 outdata(sp);
}
void getdata(USTB *sp)
{ int i;
printf("请输入姓名&性别&生日&联系电话&QQ or MES&地址\n");
for(i = 0;i<=N ; i++)
{  gets(sp[i].name);
gets(sp[i].sex);
gets(sp[i].telnum);
gets(sp[i].elestelnum);
gets(sp[i].adess);
}
}
void getsort(USTB *sp)
{
    int i,j,k;
    USTB temp;
    for(i=0;i<N-1;i++)/*按成员name的大小重新排列sp数组的元素*/
    {
     k = i;
     for(j= i+1;j<N;j++)
    if(strcmp(sp[k].name,sp[j].name)>0) k=j;/*strcmp是字符串比较函数*/
    temp = sp[k];sp[k] = sp[i];sp[i]=temp;/*结构体赋值*/
    }
}
void outdata(USTB *sp)
{
    int i;
    printf("通信录排序后:\n");
    for(i=1;i<N;i++)
    printf("名字=%s\t性别=%s\t联系电话=%s\t其他联系方式=%s\t地址=%s\n",sp[i].name,sp[i].sex,sp[i].telnum,sp[i].elestelnum,sp[i].adess);
}