求此代码的全篇注释 急急急!

#include<stdio.h>

#include <time.h>

#include <stdlib.h>

#include <string.h>

#define MAX 200

#define MAXNAME 20

typedef struct LNode

{

 int num;//编号

    charname[MAXNAME];

    char sex; //性别,'F'表示女性,'M'表示男性

    struct LNode*next;

}LNode, *LinkList;

void sleep( clock_t wait ) //延迟函数

{

clock_t goal;

goal = wait + clock();

while( goal > clock() ) ;

}

void CreateList_L(LinkList &L1,LinkList &L2,int&m,int &n)

{

 printf("\n\n\t\t\t\t^o^参加舞会学生名单^o^\n");

 printf("\n\n\t\t请输入女生数量:");

   scanf("%d",&m);

 while(m<1)

 {

 printf("\n\n\t\t\t\tERROR\n\n\t\t\t请重新输入女生数量");

    sleep(1000);//void sleep( clock_t wait ) 放在前

 system("CLS");

 printf("\n\n\t\t\t\t^o^参加舞会学生名单^o^\n");

    printf("\n\n\t\t请输入女生数量:");

       scanf("%d",&m);

 }

        printf("\t\t请输入男生数量:");

    scanf("%d",&n);

 while(n<1)

 {

 printf("\n\n\t\t\t\tERROR\n\n\t\t\t请重新输入男生数量");

     sleep(1000);

 system("CLS");

 printf("\n\n\t\t\t\t^o^参加舞会学生名单^o^\n");

 printf("\n\n\t\t请输入女生数量:%d",m);

    printf("\n\t\t请输入男生数量:");

        scanf("%d",&n);

 }

 inti,choice,numw,numn,b[MAX],j;

 numw=numn=0;

 chara[MAX][MAXNAME];

 LinkListp1,p2,q;//,,不,一,样的

 p1=p2=L1=L2=NULL;

 printf("    \t\t\t          **************    ");

 printf("\n        \t\t\t *欢迎参加舞会*\n");

 printf("\t    \t\t         **************    \n");

 printf("\t\t请输入学生的情况\n");

 for(i=0;i<(m+n)&&i<MAX;i++)

 {

  if(i>=5)

  {

   sleep(500);

     system("CLS");

  printf("\n\n\t\t\t\t^o^参加舞会学生名单^o^\n");

     printf("\n\n\t\t请输入女生数量:%d",m);

        printf("\n\t\t请输入男生数量:%d\n",n);

  printf("    \t\t\t          **************    ");

        printf("\n        \t\t\t  *欢迎参加舞会*\n");

        printf("\t    \t\t          **************    \n");

        printf("\t\t请输入学生的情况\n");

  for(j=i-4;j<i;j++)

  {printf("\t\t第%d个人姓名:%s\n",j+1,a[j]);

  printf("\t\t       性别<1 girl,2 boy>:%d\n",b[j]);

   }

  }

 printf("\t\t第%d个人姓名:",i+1);

 scanf("%s",a[i]);

 printf("\t\t       性别<1 girl,2 boy>:");

 scanf("%d",&choice);///////////////scanf("sex:%d",&choice);错错

  b[i]=choice;

  q=(LinkList)malloc(sizeof(LNode));

  if(q==NULL)exit(-1);

 strcpy(q->name,a[i]);

  if(choice==1)

  {numw++;

  q->num=numw;

  if(L1==NULL)

  {

   L1=q;

   p1=q;

  }//不带头结点

     else

  {

   p1->next=q;

   p1=q;

  }

    p1->next=L1;//循环

  }

  else

  {numn++;

  q->num=numn;

 if(L2==NULL){L2=q;p2=q;}//不带头结点  

    else{p2->next=q;p2=q;}

    p2->next=L2;//循环

  }

 }

}

void Print1(LinkList L,int m)

{

 LinkList p;

 int i;

 p=L;

 for(i=1;i<=m;i++)

 {

 printf("%s",p->name);

 printf("%3c",' ');

    p=p->next;

 }

}

void Print2(LinkList &p,int m,int n)

{

 int i;

 LinkList q;

 for(i=1;i<=m;i++)

 {printf("%s",p->name);

 printf("%3c",' ');

 p=p->next;

 }

 q=p;

 for(;i<=n;i++)

 {printf("%s",q->name);

 printf("%3c",' ');

 q=q->next;

 }

}

void Match(LinkList L1,LinkList L2,int m,int n)

{

 int k,i,j;

 LinkList p;

 printf("\n\n\n\n\t\t\t\t  ^o^每曲配对情况^o^");

 printf("\n\n\t\t请输入歌曲的编号:< ");

   scanf("%d",&k);

 printf(" >");

 while(k<=0)

 {

 printf("\n\t\t\tERROR!!!\n\t\t请重新输入歌曲的编号 ");

  sleep(1000);

 system("CLS");

  printf("\n\n\n\n\t\t\t\t  ^o^每曲配对情况^o^");

    printf("\n\n\t\t请输入歌曲的编号:< ");

       scanf("%d",&k);

    printf("  >");

 }

    if(m<n)

 {

  p=L2;

 for(i=1;i<=k;i++)

  {

  system("CLS");

  printf("\n\n\n\n\t\t\t\t  ^o^每曲配对情况^o^");

  printf("\n\n\t\t请输入曲子编号:< %d >",k);

  printf("\n\n\n\n\n\t\t\t\t第<%2d>曲配对情况\n\n\n",i);

  printf("\t\t");

   Print1(L1,m);

  printf("\n\t\t");

  for(j=1;j<=m;j++) printf(" | ");

  printf("\n\t\t");

   Print2(p,m,n);

  printf("\n\n");

   sleep(1000);

  }

 }

 else

 {

  p=L1;

 for(i=1;i<=k;i++)

  {

  system("CLS");

  printf("\n\n\n\n\t\t\t\t  ^o^每曲配对情况^o^");

  printf("\n\n\t\t请输入曲子编号:< %d >",k);

  printf("\n\n\n\n\n\t\t\t\t第<%2d>曲配对情况\n\n\n",i);

  printf("\t\t");

   Print2(p,n,m);

  printf("\n\t\t");

  for(j=1;j<=n;j++) printf(" | ");

  printf("\n\t\t");

   Print1(L2,n);

   sleep(1000);

  printf("\n\n");

  }

 }

}

void XXXXXX(LinkList L,int loc,LinkList &p)

{

 int i;

 if(loc==1) p=L;

 else

 {

  p=L;

 for(i=1;i<loc;i++)

  {

   p=p->next;

  }

 }

}

void XHEY(LinkList L1,LinkList L2,int m, int n)

{

 intx,y,flag=1,k,loc1,loc2,last;

 LinkListp1,p2,p11,p22;

 while(flag!=2)

 {system("CLS");

 printf("\n\n\n\t\t\t\t^o^查找配对跳舞情况^o^\n\n");

 printf("\n\t\t请输入你想知道的女生和男生的编号\n\t\t女生的编号:");

 scanf("%d",&y);

 while(y>m||y<1)

 {

 printf("\t\t\tERROR!!!\n\t\t请重新输入女生的编号");

  sleep(1000);

 system("CLS");

    printf("\n\n\n\t\t\t\t^o^查找配对跳舞情况^o^\n");

    printf("\n\t\t请输入你想知道的女生和男生的编号\n\t\t女生的编号:");

    scanf("%d",&y);

 }

 printf("\t\t男生的编号:");

 scanf("%d",&x);

 while(x>n||x<1)

 {

 printf("\t\t\tERROR!!!\n\t\t请重新输入男生的编号");

  sleep(1000);

 system("CLS");

    printf("\n\n\n\t\t\t\t^o^查找配对跳舞情况^o^\n");

    printf("\n\t\t请输入你想知道的女生和男生的编号\n\t\t女生的编号:%d\n",y);

 printf("\t\t男生的编号:");

    scanf("%d",&x);

 }

 printf("\n\t\t歌曲的编号:");

 scanf("%d",&k);

 while(k<1)

 {

 printf("\t\t\tERROR!!!\n\t\t请重新输入歌曲的编号");

  sleep(1000);

 system("CLS");

    printf("\n\n\n\t\t\t\t^o^查找配对跳舞情况^o^\n");

    printf("\n\t\t请输入你想知道的女生和男生的编号\n\t\t女生的编号:%d\n",y);

 printf("\t\t男生的编号:%d\n",x);

     scanf("%d",&k);

 }

 printf("\n\n\n");

 if(m<n)

 {

 last=((k-1)*m)%n;

 loc1=(x-last+n)%n;

 XXXXXX(L2,x,p1);

 if(loc1>0&&loc1<=m)

  {

  XXXXXX(L1,loc1,p11);

  }

  elseprintf("\t\t在第<%4d>曲编号为<%4d>的男生( %s )没有舞伴\n\n",k,x,p1->name);

 XXXXXX(L1,y,p2);

  loc2=(last+y)%m;

 XXXXXX(L2,loc2,p22);

 if(loc2==x||loc1==y)

  printf("\t\t编号为<%4d>的男生( %s )和编号为<%4d>的女生( %s )在第(%4d)首歌配对跳舞\n\n\n",x,p1->name,y,p2->name,k);

  else

  {

  if(loc1>0&&loc1<=m)

   printf("\t编号为<%4d>的男生( %s )在第(%4d)首歌和编号为<%4d>的女生( %s )配对跳舞\n\n",x,p1->name,k,y,p11->name);

  printf("\t编号为<%4d>的女生( %s )在第(%4d)首歌和编号为<%4d>的男生( %s )配对跳舞\n\n",x,p2->name,k,y,p22->name);

  }

 }

 else

 {

 last=((k-1)*n)%m;

 loc1=(y-last+m)%m;

 XXXXXX(L1,y,p1);

 if(loc1>0&&loc1<=n)

  {

  XXXXXX(L1,loc1,p11);

  }

  elseprintf("\t\t在第<%4d>曲编号为<%4d>的女生( %s )没有舞伴\n\n",k,x,p1->name);

 XXXXXX(L2,x,p2);

 loc2=(last+x)%m;

 XXXXXX(L1,loc2,p22);

 if(loc2==y||loc1==x)

  printf("\t\t编号为<%4d>的男生( %s )和编号为<%4d>的女生( %s )在第(%4d)首歌配对跳舞\n\n\n",x,p1->name,y,p2->name,k);

  else

  {

  printf("\t编号为<%4d>的男生( %s )在第(%4d)首歌和编号为<%4d>的女生( %s )配对跳舞\n\n",x,p2->name,k,y,p22->name);

  if(loc1>0&&loc1<=m)

    printf("\t编号为<%4d>的女生( %s )在第(%4d)首歌和编号为<%4d>的男生( %s )配对跳舞\n\n",x,p1->name,k,y,p11->name);

  }

 }

 printf("\n\n\t是否继续找配对情况<想1,不想2>:");

 scanf("%d",&flag);

 }

}

int EmptyL(LinkList L)

{

 if(L==NULL)return 1;

 else return 0;

}

void DestroyL(LinkList &L)

{

 LinkList p;

 if(!EmptyL(L))

 {

  p=L->next;

  while(p!=L)

  {

  L->next=p->next;

      free(p);

     p=L->next;

  }

     free(L);

 }

}

void  JieMian()

{

 for(inti=1;i<=50;i++)

 {//system("color CF");/*设置背景/字体颜色,1为背景,7为前景,其值可随便设,系统默认为07*/

 system("CLS");

 printf("\n\n\n\n");

 printf("\t\t\t        ^o^学生搭配问题^o^            \n\n");

 printf("\t\t\t╔*═*═*═*═*═*═*═*═*═*═*╗\n");

 printf("\t\t\t║                              ║\n");

    printf("\t\t\t║ 1.参加舞会学生名单            ║\n");

    printf("\t\t\t║ 2.输出每曲配对情况            ║\n");

    printf("\t\t\t║ 3.查找配对跳舞情况            ║\n");

    printf("\t\t\t║ 4.退出                        ║\n");

 printf("\t\t\t╚*═*═*═*═*═*═*═*═*═*═*╝\n");

 printf("\n\n\t\t\t\t\t     -----倪彗森数据结构课程设计\n");

 printf("\t\t\t\t\t\t\t   ----2017020170\n");

 printf("\n\n     输入选择的项目:");

 sleep(1);

 }

}

void Jiemian2()

{

 int i;

   system("CLS");

    printf("\n\n\n\n\n\n\n\n\t\t\t     ^o^");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使^");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使用");

 sleep(200);

 system("CLS");

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使用^o^");

 sleep(200);

 system("CLS");   

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使用^o^\n\n\t\t\t\t          -----");

 sleep(200);

 system("CLS");   

    printf("\n\n\n\n\n\n\n\n\t\t\t     ^o^欢迎下次使用^o^\n\n\t\t\t\t         -----GoodBye!");

 sleep(200);

 system("CLS");

   for(i=1;i<=100;i++)

 {

       printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使用^o^\n\n\t\t\t\t          -----GoodBye!");

  sleep(5);

 system("CLS");

 }

   printf("\n\n\n\n\n\n\n\n\t\t\t    ^o^欢迎下次使用^o^\n\n\t\t\t\t          -----GoodBye!");

}

int Quit()

{

 getchar();

 return 0;

}

int main()

{

 intm,n,choice;//int m=n=choice=0;错错错

 m=n=choice=0;

    LinkListL1=NULL,L2=NULL; //L1=L2=NULL两个指针连等空错错

 system("title学生搭配问题----倪彗森 ");    //标题

 while(choice!=4){

  JieMian();

    scanf("%d",&choice);

 while((m==0||n==0)&&choice!=1&&choice!=4)//想清楚再写

  {

             printf("\t\t ERROR!!!\n\t\t    (请先选择<1>输入学生名单或选择<4>退出)!");

       sleep(3000);

        system("CLS");

       JieMian();

       scanf("%d",&choice);

  }

 while(m!=0&&n!=0&&(choice<1||choice>4))

  {

  printf("\t\t ERROR!!!\n\t\t    (请选择<1--4>)!");

     sleep(3000);

     system("CLS");

      JieMian();

     scanf("%d",&choice);

  }

  sleep(1000);

 system("CLS");

       switch(choice)

  {

        case 1:CreateList_L(L1,L2,m,n);

      break;   //输入名单

        case2:system("color F");

     Match(L1,L2,m,n);

     sleep(5000);

      break;    //输出每曲配对情况

        case3:system("color F");

     XHEY(L1,L2,m,n);

      break; //求满足条件的曲目

        case4:system("color F");

    system("CLS");

     Jiemian2();

       sleep(1000);

     Quit();

     break;  //退出

  }

 }

 DestroyL(L1);

 DestroyL(L2);

 printf("\n\n");

 getchar();

 return 0;

}



猜你喜欢

转载自blog.csdn.net/weixin_42597704/article/details/80929468
今日推荐